net: devlink: Add extack to shared buffer operations
Add extack to shared buffer set operations, so that meaningful error messages could be propagated to the user. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Reviewed-by: Petr Machata <petrm@mellanox.com> Cc: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7e5ebd0b78
commit
f2ad1a522e
|
@ -781,7 +781,8 @@ mlxsw_devlink_sb_pool_get(struct devlink *devlink,
|
||||||
static int
|
static int
|
||||||
mlxsw_devlink_sb_pool_set(struct devlink *devlink,
|
mlxsw_devlink_sb_pool_set(struct devlink *devlink,
|
||||||
unsigned int sb_index, u16 pool_index, u32 size,
|
unsigned int sb_index, u16 pool_index, u32 size,
|
||||||
enum devlink_sb_threshold_type threshold_type)
|
enum devlink_sb_threshold_type threshold_type,
|
||||||
|
struct netlink_ext_ack *extack)
|
||||||
{
|
{
|
||||||
struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
|
struct mlxsw_core *mlxsw_core = devlink_priv(devlink);
|
||||||
struct mlxsw_driver *mlxsw_driver = mlxsw_core->driver;
|
struct mlxsw_driver *mlxsw_driver = mlxsw_core->driver;
|
||||||
|
@ -829,7 +830,8 @@ static int mlxsw_devlink_sb_port_pool_get(struct devlink_port *devlink_port,
|
||||||
|
|
||||||
static int mlxsw_devlink_sb_port_pool_set(struct devlink_port *devlink_port,
|
static int mlxsw_devlink_sb_port_pool_set(struct devlink_port *devlink_port,
|
||||||
unsigned int sb_index, u16 pool_index,
|
unsigned int sb_index, u16 pool_index,
|
||||||
u32 threshold)
|
u32 threshold,
|
||||||
|
struct netlink_ext_ack *extack)
|
||||||
{
|
{
|
||||||
struct mlxsw_core *mlxsw_core = devlink_priv(devlink_port->devlink);
|
struct mlxsw_core *mlxsw_core = devlink_priv(devlink_port->devlink);
|
||||||
struct mlxsw_driver *mlxsw_driver = mlxsw_core->driver;
|
struct mlxsw_driver *mlxsw_driver = mlxsw_core->driver;
|
||||||
|
@ -864,7 +866,8 @@ static int
|
||||||
mlxsw_devlink_sb_tc_pool_bind_set(struct devlink_port *devlink_port,
|
mlxsw_devlink_sb_tc_pool_bind_set(struct devlink_port *devlink_port,
|
||||||
unsigned int sb_index, u16 tc_index,
|
unsigned int sb_index, u16 tc_index,
|
||||||
enum devlink_sb_pool_type pool_type,
|
enum devlink_sb_pool_type pool_type,
|
||||||
u16 pool_index, u32 threshold)
|
u16 pool_index, u32 threshold,
|
||||||
|
struct netlink_ext_ack *extack)
|
||||||
{
|
{
|
||||||
struct mlxsw_core *mlxsw_core = devlink_priv(devlink_port->devlink);
|
struct mlxsw_core *mlxsw_core = devlink_priv(devlink_port->devlink);
|
||||||
struct mlxsw_driver *mlxsw_driver = mlxsw_core->driver;
|
struct mlxsw_driver *mlxsw_driver = mlxsw_core->driver;
|
||||||
|
|
|
@ -144,7 +144,8 @@ nfp_devlink_sb_pool_get(struct devlink *devlink, unsigned int sb_index,
|
||||||
static int
|
static int
|
||||||
nfp_devlink_sb_pool_set(struct devlink *devlink, unsigned int sb_index,
|
nfp_devlink_sb_pool_set(struct devlink *devlink, unsigned int sb_index,
|
||||||
u16 pool_index,
|
u16 pool_index,
|
||||||
u32 size, enum devlink_sb_threshold_type threshold_type)
|
u32 size, enum devlink_sb_threshold_type threshold_type,
|
||||||
|
struct netlink_ext_ack *extack)
|
||||||
{
|
{
|
||||||
struct nfp_pf *pf = devlink_priv(devlink);
|
struct nfp_pf *pf = devlink_priv(devlink);
|
||||||
|
|
||||||
|
|
|
@ -491,13 +491,14 @@ struct devlink_ops {
|
||||||
struct devlink_sb_pool_info *pool_info);
|
struct devlink_sb_pool_info *pool_info);
|
||||||
int (*sb_pool_set)(struct devlink *devlink, unsigned int sb_index,
|
int (*sb_pool_set)(struct devlink *devlink, unsigned int sb_index,
|
||||||
u16 pool_index, u32 size,
|
u16 pool_index, u32 size,
|
||||||
enum devlink_sb_threshold_type threshold_type);
|
enum devlink_sb_threshold_type threshold_type,
|
||||||
|
struct netlink_ext_ack *extack);
|
||||||
int (*sb_port_pool_get)(struct devlink_port *devlink_port,
|
int (*sb_port_pool_get)(struct devlink_port *devlink_port,
|
||||||
unsigned int sb_index, u16 pool_index,
|
unsigned int sb_index, u16 pool_index,
|
||||||
u32 *p_threshold);
|
u32 *p_threshold);
|
||||||
int (*sb_port_pool_set)(struct devlink_port *devlink_port,
|
int (*sb_port_pool_set)(struct devlink_port *devlink_port,
|
||||||
unsigned int sb_index, u16 pool_index,
|
unsigned int sb_index, u16 pool_index,
|
||||||
u32 threshold);
|
u32 threshold, struct netlink_ext_ack *extack);
|
||||||
int (*sb_tc_pool_bind_get)(struct devlink_port *devlink_port,
|
int (*sb_tc_pool_bind_get)(struct devlink_port *devlink_port,
|
||||||
unsigned int sb_index,
|
unsigned int sb_index,
|
||||||
u16 tc_index,
|
u16 tc_index,
|
||||||
|
@ -507,7 +508,8 @@ struct devlink_ops {
|
||||||
unsigned int sb_index,
|
unsigned int sb_index,
|
||||||
u16 tc_index,
|
u16 tc_index,
|
||||||
enum devlink_sb_pool_type pool_type,
|
enum devlink_sb_pool_type pool_type,
|
||||||
u16 pool_index, u32 threshold);
|
u16 pool_index, u32 threshold,
|
||||||
|
struct netlink_ext_ack *extack);
|
||||||
int (*sb_occ_snapshot)(struct devlink *devlink,
|
int (*sb_occ_snapshot)(struct devlink *devlink,
|
||||||
unsigned int sb_index);
|
unsigned int sb_index);
|
||||||
int (*sb_occ_max_clear)(struct devlink *devlink,
|
int (*sb_occ_max_clear)(struct devlink *devlink,
|
||||||
|
|
|
@ -1047,14 +1047,15 @@ out:
|
||||||
|
|
||||||
static int devlink_sb_pool_set(struct devlink *devlink, unsigned int sb_index,
|
static int devlink_sb_pool_set(struct devlink *devlink, unsigned int sb_index,
|
||||||
u16 pool_index, u32 size,
|
u16 pool_index, u32 size,
|
||||||
enum devlink_sb_threshold_type threshold_type)
|
enum devlink_sb_threshold_type threshold_type,
|
||||||
|
struct netlink_ext_ack *extack)
|
||||||
|
|
||||||
{
|
{
|
||||||
const struct devlink_ops *ops = devlink->ops;
|
const struct devlink_ops *ops = devlink->ops;
|
||||||
|
|
||||||
if (ops->sb_pool_set)
|
if (ops->sb_pool_set)
|
||||||
return ops->sb_pool_set(devlink, sb_index, pool_index,
|
return ops->sb_pool_set(devlink, sb_index, pool_index,
|
||||||
size, threshold_type);
|
size, threshold_type, extack);
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1082,7 +1083,8 @@ static int devlink_nl_cmd_sb_pool_set_doit(struct sk_buff *skb,
|
||||||
|
|
||||||
size = nla_get_u32(info->attrs[DEVLINK_ATTR_SB_POOL_SIZE]);
|
size = nla_get_u32(info->attrs[DEVLINK_ATTR_SB_POOL_SIZE]);
|
||||||
return devlink_sb_pool_set(devlink, devlink_sb->index,
|
return devlink_sb_pool_set(devlink, devlink_sb->index,
|
||||||
pool_index, size, threshold_type);
|
pool_index, size, threshold_type,
|
||||||
|
info->extack);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int devlink_nl_sb_port_pool_fill(struct sk_buff *msg,
|
static int devlink_nl_sb_port_pool_fill(struct sk_buff *msg,
|
||||||
|
@ -1243,14 +1245,15 @@ out:
|
||||||
|
|
||||||
static int devlink_sb_port_pool_set(struct devlink_port *devlink_port,
|
static int devlink_sb_port_pool_set(struct devlink_port *devlink_port,
|
||||||
unsigned int sb_index, u16 pool_index,
|
unsigned int sb_index, u16 pool_index,
|
||||||
u32 threshold)
|
u32 threshold,
|
||||||
|
struct netlink_ext_ack *extack)
|
||||||
|
|
||||||
{
|
{
|
||||||
const struct devlink_ops *ops = devlink_port->devlink->ops;
|
const struct devlink_ops *ops = devlink_port->devlink->ops;
|
||||||
|
|
||||||
if (ops->sb_port_pool_set)
|
if (ops->sb_port_pool_set)
|
||||||
return ops->sb_port_pool_set(devlink_port, sb_index,
|
return ops->sb_port_pool_set(devlink_port, sb_index,
|
||||||
pool_index, threshold);
|
pool_index, threshold, extack);
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1273,7 +1276,7 @@ static int devlink_nl_cmd_sb_port_pool_set_doit(struct sk_buff *skb,
|
||||||
|
|
||||||
threshold = nla_get_u32(info->attrs[DEVLINK_ATTR_SB_THRESHOLD]);
|
threshold = nla_get_u32(info->attrs[DEVLINK_ATTR_SB_THRESHOLD]);
|
||||||
return devlink_sb_port_pool_set(devlink_port, devlink_sb->index,
|
return devlink_sb_port_pool_set(devlink_port, devlink_sb->index,
|
||||||
pool_index, threshold);
|
pool_index, threshold, info->extack);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -1472,7 +1475,8 @@ out:
|
||||||
static int devlink_sb_tc_pool_bind_set(struct devlink_port *devlink_port,
|
static int devlink_sb_tc_pool_bind_set(struct devlink_port *devlink_port,
|
||||||
unsigned int sb_index, u16 tc_index,
|
unsigned int sb_index, u16 tc_index,
|
||||||
enum devlink_sb_pool_type pool_type,
|
enum devlink_sb_pool_type pool_type,
|
||||||
u16 pool_index, u32 threshold)
|
u16 pool_index, u32 threshold,
|
||||||
|
struct netlink_ext_ack *extack)
|
||||||
|
|
||||||
{
|
{
|
||||||
const struct devlink_ops *ops = devlink_port->devlink->ops;
|
const struct devlink_ops *ops = devlink_port->devlink->ops;
|
||||||
|
@ -1480,7 +1484,7 @@ static int devlink_sb_tc_pool_bind_set(struct devlink_port *devlink_port,
|
||||||
if (ops->sb_tc_pool_bind_set)
|
if (ops->sb_tc_pool_bind_set)
|
||||||
return ops->sb_tc_pool_bind_set(devlink_port, sb_index,
|
return ops->sb_tc_pool_bind_set(devlink_port, sb_index,
|
||||||
tc_index, pool_type,
|
tc_index, pool_type,
|
||||||
pool_index, threshold);
|
pool_index, threshold, extack);
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1515,7 +1519,7 @@ static int devlink_nl_cmd_sb_tc_pool_bind_set_doit(struct sk_buff *skb,
|
||||||
threshold = nla_get_u32(info->attrs[DEVLINK_ATTR_SB_THRESHOLD]);
|
threshold = nla_get_u32(info->attrs[DEVLINK_ATTR_SB_THRESHOLD]);
|
||||||
return devlink_sb_tc_pool_bind_set(devlink_port, devlink_sb->index,
|
return devlink_sb_tc_pool_bind_set(devlink_port, devlink_sb->index,
|
||||||
tc_index, pool_type,
|
tc_index, pool_type,
|
||||||
pool_index, threshold);
|
pool_index, threshold, info->extack);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int devlink_nl_cmd_sb_occ_snapshot_doit(struct sk_buff *skb,
|
static int devlink_nl_cmd_sb_occ_snapshot_doit(struct sk_buff *skb,
|
||||||
|
|
Loading…
Reference in New Issue