mirror of https://gitee.com/openkylin/linux.git
devlink: Add extack to reload and port_{un, }split operations
Add extack argument to reload, port_split and port_unsplit operations. Signed-off-by: David Ahern <dsahern@gmail.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5b5e7a0de2
commit
ac0fc8a1bb
|
@ -770,7 +770,8 @@ static void mlxsw_core_driver_put(const char *kind)
|
|||
|
||||
static int mlxsw_devlink_port_split(struct devlink *devlink,
|
||||
unsigned int port_index,
|
||||
unsigned int count)
|
||||
unsigned int count,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
|
||||
|
||||
|
@ -782,7 +783,8 @@ static int mlxsw_devlink_port_split(struct devlink *devlink,
|
|||
}
|
||||
|
||||
static int mlxsw_devlink_port_unsplit(struct devlink *devlink,
|
||||
unsigned int port_index)
|
||||
unsigned int port_index,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
|
||||
|
||||
|
@ -963,7 +965,8 @@ mlxsw_devlink_sb_occ_tc_port_bind_get(struct devlink_port *devlink_port,
|
|||
pool_type, p_cur, p_max);
|
||||
}
|
||||
|
||||
static int mlxsw_devlink_core_bus_device_reload(struct devlink *devlink)
|
||||
static int mlxsw_devlink_core_bus_device_reload(struct devlink *devlink,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
|
||||
int err;
|
||||
|
|
|
@ -92,7 +92,7 @@ nfp_devlink_set_lanes(struct nfp_pf *pf, unsigned int idx, unsigned int lanes)
|
|||
|
||||
static int
|
||||
nfp_devlink_port_split(struct devlink *devlink, unsigned int port_index,
|
||||
unsigned int count)
|
||||
unsigned int count, struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nfp_pf *pf = devlink_priv(devlink);
|
||||
struct nfp_eth_table_port eth_port;
|
||||
|
@ -123,7 +123,8 @@ nfp_devlink_port_split(struct devlink *devlink, unsigned int port_index,
|
|||
}
|
||||
|
||||
static int
|
||||
nfp_devlink_port_unsplit(struct devlink *devlink, unsigned int port_index)
|
||||
nfp_devlink_port_unsplit(struct devlink *devlink, unsigned int port_index,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nfp_pf *pf = devlink_priv(devlink);
|
||||
struct nfp_eth_table_port eth_port;
|
||||
|
|
|
@ -147,7 +147,8 @@ static int devlink_resources_register(struct devlink *devlink)
|
|||
return err;
|
||||
}
|
||||
|
||||
static int nsim_devlink_reload(struct devlink *devlink)
|
||||
static int nsim_devlink_reload(struct devlink *devlink,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
enum nsim_resource_id res_ids[] = {
|
||||
NSIM_RESOURCE_IPV4_FIB, NSIM_RESOURCE_IPV4_FIB_RULES,
|
||||
|
|
|
@ -296,12 +296,13 @@ struct devlink_resource {
|
|||
#define DEVLINK_RESOURCE_ID_PARENT_TOP 0
|
||||
|
||||
struct devlink_ops {
|
||||
int (*reload)(struct devlink *devlink);
|
||||
int (*reload)(struct devlink *devlink, struct netlink_ext_ack *extack);
|
||||
int (*port_type_set)(struct devlink_port *devlink_port,
|
||||
enum devlink_port_type port_type);
|
||||
int (*port_split)(struct devlink *devlink, unsigned int port_index,
|
||||
unsigned int count);
|
||||
int (*port_unsplit)(struct devlink *devlink, unsigned int port_index);
|
||||
unsigned int count, struct netlink_ext_ack *extack);
|
||||
int (*port_unsplit)(struct devlink *devlink, unsigned int port_index,
|
||||
struct netlink_ext_ack *extack);
|
||||
int (*sb_pool_get)(struct devlink *devlink, unsigned int sb_index,
|
||||
u16 pool_index,
|
||||
struct devlink_sb_pool_info *pool_info);
|
||||
|
|
|
@ -702,12 +702,13 @@ static int devlink_nl_cmd_port_set_doit(struct sk_buff *skb,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int devlink_port_split(struct devlink *devlink,
|
||||
u32 port_index, u32 count)
|
||||
static int devlink_port_split(struct devlink *devlink, u32 port_index,
|
||||
u32 count, struct netlink_ext_ack *extack)
|
||||
|
||||
{
|
||||
if (devlink->ops && devlink->ops->port_split)
|
||||
return devlink->ops->port_split(devlink, port_index, count);
|
||||
return devlink->ops->port_split(devlink, port_index, count,
|
||||
extack);
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
|
@ -724,14 +725,15 @@ static int devlink_nl_cmd_port_split_doit(struct sk_buff *skb,
|
|||
|
||||
port_index = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_INDEX]);
|
||||
count = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_SPLIT_COUNT]);
|
||||
return devlink_port_split(devlink, port_index, count);
|
||||
return devlink_port_split(devlink, port_index, count, info->extack);
|
||||
}
|
||||
|
||||
static int devlink_port_unsplit(struct devlink *devlink, u32 port_index)
|
||||
static int devlink_port_unsplit(struct devlink *devlink, u32 port_index,
|
||||
struct netlink_ext_ack *extack)
|
||||
|
||||
{
|
||||
if (devlink->ops && devlink->ops->port_unsplit)
|
||||
return devlink->ops->port_unsplit(devlink, port_index);
|
||||
return devlink->ops->port_unsplit(devlink, port_index, extack);
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
|
@ -745,7 +747,7 @@ static int devlink_nl_cmd_port_unsplit_doit(struct sk_buff *skb,
|
|||
return -EINVAL;
|
||||
|
||||
port_index = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_INDEX]);
|
||||
return devlink_port_unsplit(devlink, port_index);
|
||||
return devlink_port_unsplit(devlink, port_index, info->extack);
|
||||
}
|
||||
|
||||
static int devlink_nl_sb_fill(struct sk_buff *msg, struct devlink *devlink,
|
||||
|
@ -2599,7 +2601,7 @@ static int devlink_nl_cmd_reload(struct sk_buff *skb, struct genl_info *info)
|
|||
NL_SET_ERR_MSG_MOD(info->extack, "resources size validation failed");
|
||||
return err;
|
||||
}
|
||||
return devlink->ops->reload(devlink);
|
||||
return devlink->ops->reload(devlink, info->extack);
|
||||
}
|
||||
|
||||
static const struct nla_policy devlink_nl_policy[DEVLINK_ATTR_MAX + 1] = {
|
||||
|
|
Loading…
Reference in New Issue