mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-23 22:25:40 +08:00
devlink: remove duplicate port notification
The notification about created port is send from devl_port_register() function called from ops->port_new(). No need to send it again here, so remove the call and the helper function. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
47469d2d59
commit
c496daeb86
@ -282,8 +282,7 @@ out:
|
|||||||
|
|
||||||
static int mlx5_sf_add(struct mlx5_core_dev *dev, struct mlx5_sf_table *table,
|
static int mlx5_sf_add(struct mlx5_core_dev *dev, struct mlx5_sf_table *table,
|
||||||
const struct devlink_port_new_attrs *new_attr,
|
const struct devlink_port_new_attrs *new_attr,
|
||||||
struct netlink_ext_ack *extack,
|
struct netlink_ext_ack *extack)
|
||||||
unsigned int *new_port_index)
|
|
||||||
{
|
{
|
||||||
struct mlx5_eswitch *esw = dev->priv.eswitch;
|
struct mlx5_eswitch *esw = dev->priv.eswitch;
|
||||||
struct mlx5_sf *sf;
|
struct mlx5_sf *sf;
|
||||||
@ -297,7 +296,6 @@ static int mlx5_sf_add(struct mlx5_core_dev *dev, struct mlx5_sf_table *table,
|
|||||||
new_attr->controller, new_attr->sfnum);
|
new_attr->controller, new_attr->sfnum);
|
||||||
if (err)
|
if (err)
|
||||||
goto esw_err;
|
goto esw_err;
|
||||||
*new_port_index = sf->port_index;
|
|
||||||
trace_mlx5_sf_add(dev, sf->port_index, sf->controller, sf->hw_fn_id, new_attr->sfnum);
|
trace_mlx5_sf_add(dev, sf->port_index, sf->controller, sf->hw_fn_id, new_attr->sfnum);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -338,8 +336,7 @@ mlx5_sf_new_check_attr(struct mlx5_core_dev *dev, const struct devlink_port_new_
|
|||||||
|
|
||||||
int mlx5_devlink_sf_port_new(struct devlink *devlink,
|
int mlx5_devlink_sf_port_new(struct devlink *devlink,
|
||||||
const struct devlink_port_new_attrs *new_attr,
|
const struct devlink_port_new_attrs *new_attr,
|
||||||
struct netlink_ext_ack *extack,
|
struct netlink_ext_ack *extack)
|
||||||
unsigned int *new_port_index)
|
|
||||||
{
|
{
|
||||||
struct mlx5_core_dev *dev = devlink_priv(devlink);
|
struct mlx5_core_dev *dev = devlink_priv(devlink);
|
||||||
struct mlx5_sf_table *table;
|
struct mlx5_sf_table *table;
|
||||||
@ -355,7 +352,7 @@ int mlx5_devlink_sf_port_new(struct devlink *devlink,
|
|||||||
"Port add is only supported in eswitch switchdev mode or SF ports are disabled.");
|
"Port add is only supported in eswitch switchdev mode or SF ports are disabled.");
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
err = mlx5_sf_add(dev, table, new_attr, extack, new_port_index);
|
err = mlx5_sf_add(dev, table, new_attr, extack);
|
||||||
mlx5_sf_table_put(table);
|
mlx5_sf_table_put(table);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,7 @@ void mlx5_sf_table_cleanup(struct mlx5_core_dev *dev);
|
|||||||
|
|
||||||
int mlx5_devlink_sf_port_new(struct devlink *devlink,
|
int mlx5_devlink_sf_port_new(struct devlink *devlink,
|
||||||
const struct devlink_port_new_attrs *add_attr,
|
const struct devlink_port_new_attrs *add_attr,
|
||||||
struct netlink_ext_ack *extack,
|
struct netlink_ext_ack *extack);
|
||||||
unsigned int *new_port_index);
|
|
||||||
int mlx5_devlink_sf_port_del(struct devlink *devlink, unsigned int port_index,
|
int mlx5_devlink_sf_port_del(struct devlink *devlink, unsigned int port_index,
|
||||||
struct netlink_ext_ack *extack);
|
struct netlink_ext_ack *extack);
|
||||||
int mlx5_devlink_sf_port_fn_state_get(struct devlink_port *dl_port,
|
int mlx5_devlink_sf_port_fn_state_get(struct devlink_port *dl_port,
|
||||||
|
@ -1500,7 +1500,6 @@ struct devlink_ops {
|
|||||||
* @devlink: Devlink instance
|
* @devlink: Devlink instance
|
||||||
* @attrs: attributes of the new port
|
* @attrs: attributes of the new port
|
||||||
* @extack: extack for reporting error messages
|
* @extack: extack for reporting error messages
|
||||||
* @new_port_index: index of the new port
|
|
||||||
*
|
*
|
||||||
* Devlink core will call this device driver function upon user request
|
* Devlink core will call this device driver function upon user request
|
||||||
* to create a new port function of a specified flavor and optional
|
* to create a new port function of a specified flavor and optional
|
||||||
@ -1515,8 +1514,7 @@ struct devlink_ops {
|
|||||||
*/
|
*/
|
||||||
int (*port_new)(struct devlink *devlink,
|
int (*port_new)(struct devlink *devlink,
|
||||||
const struct devlink_port_new_attrs *attrs,
|
const struct devlink_port_new_attrs *attrs,
|
||||||
struct netlink_ext_ack *extack,
|
struct netlink_ext_ack *extack);
|
||||||
unsigned int *new_port_index);
|
|
||||||
/**
|
/**
|
||||||
* port_del() - Delete a port function
|
* port_del() - Delete a port function
|
||||||
* @devlink: Devlink instance
|
* @devlink: Devlink instance
|
||||||
|
@ -1354,45 +1354,12 @@ static int devlink_nl_cmd_port_unsplit_doit(struct sk_buff *skb,
|
|||||||
return devlink->ops->port_unsplit(devlink, devlink_port, info->extack);
|
return devlink->ops->port_unsplit(devlink, devlink_port, info->extack);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int devlink_port_new_notify(struct devlink *devlink,
|
|
||||||
unsigned int port_index,
|
|
||||||
struct genl_info *info)
|
|
||||||
{
|
|
||||||
struct devlink_port *devlink_port;
|
|
||||||
struct sk_buff *msg;
|
|
||||||
int err;
|
|
||||||
|
|
||||||
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
|
|
||||||
if (!msg)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
lockdep_assert_held(&devlink->lock);
|
|
||||||
devlink_port = devlink_port_get_by_index(devlink, port_index);
|
|
||||||
if (!devlink_port) {
|
|
||||||
err = -ENODEV;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = devlink_nl_port_fill(msg, devlink_port, DEVLINK_CMD_NEW,
|
|
||||||
info->snd_portid, info->snd_seq, 0, NULL);
|
|
||||||
if (err)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
return genlmsg_reply(msg, info);
|
|
||||||
|
|
||||||
out:
|
|
||||||
nlmsg_free(msg);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int devlink_nl_cmd_port_new_doit(struct sk_buff *skb,
|
static int devlink_nl_cmd_port_new_doit(struct sk_buff *skb,
|
||||||
struct genl_info *info)
|
struct genl_info *info)
|
||||||
{
|
{
|
||||||
struct netlink_ext_ack *extack = info->extack;
|
struct netlink_ext_ack *extack = info->extack;
|
||||||
struct devlink_port_new_attrs new_attrs = {};
|
struct devlink_port_new_attrs new_attrs = {};
|
||||||
struct devlink *devlink = info->user_ptr[0];
|
struct devlink *devlink = info->user_ptr[0];
|
||||||
unsigned int new_port_index;
|
|
||||||
int err;
|
|
||||||
|
|
||||||
if (!devlink->ops->port_new || !devlink->ops->port_del)
|
if (!devlink->ops->port_new || !devlink->ops->port_del)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
@ -1423,17 +1390,7 @@ static int devlink_nl_cmd_port_new_doit(struct sk_buff *skb,
|
|||||||
new_attrs.sfnum_valid = true;
|
new_attrs.sfnum_valid = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = devlink->ops->port_new(devlink, &new_attrs, extack,
|
return devlink->ops->port_new(devlink, &new_attrs, extack);
|
||||||
&new_port_index);
|
|
||||||
if (err)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
err = devlink_port_new_notify(devlink, new_port_index, info);
|
|
||||||
if (err && err != -ENODEV) {
|
|
||||||
/* Fail to send the response; destroy newly created port. */
|
|
||||||
devlink->ops->port_del(devlink, new_port_index, extack);
|
|
||||||
}
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int devlink_nl_cmd_port_del_doit(struct sk_buff *skb,
|
static int devlink_nl_cmd_port_del_doit(struct sk_buff *skb,
|
||||||
|
Loading…
Reference in New Issue
Block a user