OSDN Git Service

devlink: remove duplicate port notification
authorJiri Pirko <jiri@nvidia.com>
Tue, 23 May 2023 12:37:59 +0000 (14:37 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 24 May 2023 09:34:26 +0000 (10:34 +0100)
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>
drivers/net/ethernet/mellanox/mlx5/core/sf/devlink.c
drivers/net/ethernet/mellanox/mlx5/core/sf/sf.h
include/net/devlink.h
net/devlink/leftover.c

index 7d955a4..de15b9c 100644 (file)
@@ -282,8 +282,7 @@ out:
 
 static int mlx5_sf_add(struct mlx5_core_dev *dev, struct mlx5_sf_table *table,
                       const struct devlink_port_new_attrs *new_attr,
-                      struct netlink_ext_ack *extack,
-                      unsigned int *new_port_index)
+                      struct netlink_ext_ack *extack)
 {
        struct mlx5_eswitch *esw = dev->priv.eswitch;
        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);
        if (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);
        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,
                             const struct devlink_port_new_attrs *new_attr,
-                            struct netlink_ext_ack *extack,
-                            unsigned int *new_port_index)
+                            struct netlink_ext_ack *extack)
 {
        struct mlx5_core_dev *dev = devlink_priv(devlink);
        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.");
                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);
        return err;
 }
index 3a480e0..1f7d8cb 100644 (file)
@@ -20,8 +20,7 @@ void mlx5_sf_table_cleanup(struct mlx5_core_dev *dev);
 
 int mlx5_devlink_sf_port_new(struct devlink *devlink,
                             const struct devlink_port_new_attrs *add_attr,
-                            struct netlink_ext_ack *extack,
-                            unsigned int *new_port_index);
+                            struct netlink_ext_ack *extack);
 int mlx5_devlink_sf_port_del(struct devlink *devlink, unsigned int port_index,
                             struct netlink_ext_ack *extack);
 int mlx5_devlink_sf_port_fn_state_get(struct devlink_port *dl_port,
index 6a942e7..ccea6e0 100644 (file)
@@ -1500,7 +1500,6 @@ struct devlink_ops {
         * @devlink: Devlink instance
         * @attrs: attributes of the new port
         * @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
         * 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,
                        const struct devlink_port_new_attrs *attrs,
-                       struct netlink_ext_ack *extack,
-                       unsigned int *new_port_index);
+                       struct netlink_ext_ack *extack);
        /**
         * port_del() - Delete a port function
         * @devlink: Devlink instance
index cd02549..cb60e42 100644 (file)
@@ -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);
 }
 
-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,
                                        struct genl_info *info)
 {
        struct netlink_ext_ack *extack = info->extack;
        struct devlink_port_new_attrs new_attrs = {};
        struct devlink *devlink = info->user_ptr[0];
-       unsigned int new_port_index;
-       int err;
 
        if (!devlink->ops->port_new || !devlink->ops->port_del)
                return -EOPNOTSUPP;
@@ -1423,17 +1390,7 @@ static int devlink_nl_cmd_port_new_doit(struct sk_buff *skb,
                new_attrs.sfnum_valid = true;
        }
 
-       err = 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;
+       return devlink->ops->port_new(devlink, &new_attrs, extack);
 }
 
 static int devlink_nl_cmd_port_del_doit(struct sk_buff *skb,