devlink: move port_split/unsplit() ops into devlink_port_ops
authorJiri Pirko <jiri@nvidia.com>
Fri, 26 May 2023 10:28:31 +0000 (12:28 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 30 May 2023 17:32:20 +0000 (10:32 -0700)
Move port_split/unsplit() from devlink_ops into newly introduced
devlink_port_ops.

Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/intel/ice/ice_devlink.c
drivers/net/ethernet/mellanox/mlxsw/core.c
drivers/net/ethernet/netronome/nfp/nfp_devlink.c
include/net/devlink.h
net/devlink/leftover.c

index 6661d12..80dc544 100644 (file)
@@ -1256,8 +1256,6 @@ static const struct devlink_ops ice_devlink_ops = {
                          BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE),
        .reload_down = ice_devlink_reload_down,
        .reload_up = ice_devlink_reload_up,
-       .port_split = ice_devlink_port_split,
-       .port_unsplit = ice_devlink_port_unsplit,
        .eswitch_mode_get = ice_eswitch_mode_get,
        .eswitch_mode_set = ice_eswitch_mode_set,
        .info_get = ice_devlink_info_get,
@@ -1513,6 +1511,8 @@ ice_devlink_set_port_split_options(struct ice_pf *pf,
 }
 
 static const struct devlink_port_ops ice_devlink_port_ops = {
+       .port_split = ice_devlink_port_split,
+       .port_unsplit = ice_devlink_port_unsplit,
 };
 
 /**
index 605881b..1ccf3b7 100644 (file)
@@ -1723,8 +1723,6 @@ static const struct devlink_ops mlxsw_devlink_ops = {
                                  BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE),
        .reload_down            = mlxsw_devlink_core_bus_device_reload_down,
        .reload_up              = mlxsw_devlink_core_bus_device_reload_up,
-       .port_split                     = mlxsw_devlink_port_split,
-       .port_unsplit                   = mlxsw_devlink_port_unsplit,
        .sb_pool_get                    = mlxsw_devlink_sb_pool_get,
        .sb_pool_set                    = mlxsw_devlink_sb_pool_set,
        .sb_port_pool_get               = mlxsw_devlink_sb_port_pool_get,
@@ -3117,6 +3115,8 @@ u64 mlxsw_core_res_get(struct mlxsw_core *mlxsw_core,
 EXPORT_SYMBOL(mlxsw_core_res_get);
 
 static const struct devlink_port_ops mlxsw_devlink_port_ops = {
+       .port_split                     = mlxsw_devlink_port_split,
+       .port_unsplit                   = mlxsw_devlink_port_unsplit,
 };
 
 static int __mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u16 local_port,
index 4e4296e..8c6954c 100644 (file)
@@ -311,8 +311,6 @@ nfp_devlink_flash_update(struct devlink *devlink,
 }
 
 const struct devlink_ops nfp_devlink_ops = {
-       .port_split             = nfp_devlink_port_split,
-       .port_unsplit           = nfp_devlink_port_unsplit,
        .sb_pool_get            = nfp_devlink_sb_pool_get,
        .sb_pool_set            = nfp_devlink_sb_pool_set,
        .eswitch_mode_get       = nfp_devlink_eswitch_mode_get,
@@ -322,6 +320,8 @@ const struct devlink_ops nfp_devlink_ops = {
 };
 
 static const struct devlink_port_ops nfp_devlink_port_ops = {
+       .port_split             = nfp_devlink_port_split,
+       .port_unsplit           = nfp_devlink_port_unsplit,
 };
 
 int nfp_devlink_port_register(struct nfp_app *app, struct nfp_port *port)
index a1e230d..fdcb2c5 100644 (file)
@@ -1276,10 +1276,6 @@ struct devlink_ops {
                         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, struct devlink_port *port,
-                         unsigned int count, struct netlink_ext_ack *extack);
-       int (*port_unsplit)(struct devlink *devlink, struct devlink_port *port,
-                           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);
@@ -1653,8 +1649,15 @@ void devlink_free(struct devlink *devlink);
 
 /**
  * struct devlink_port_ops - Port operations
+ * @port_split: Callback used to split the port into multiple ones.
+ * @port_unsplit: Callback used to unsplit the port group back into
+ *               a single port.
  */
 struct devlink_port_ops {
+       int (*port_split)(struct devlink *devlink, struct devlink_port *port,
+                         unsigned int count, struct netlink_ext_ack *extack);
+       int (*port_unsplit)(struct devlink *devlink, struct devlink_port *port,
+                           struct netlink_ext_ack *extack);
 };
 
 void devlink_port_init(struct devlink *devlink,
index 2295fa5..1ed95c7 100644 (file)
@@ -1320,7 +1320,7 @@ static int devlink_nl_cmd_port_split_doit(struct sk_buff *skb,
 
        if (GENL_REQ_ATTR_CHECK(info, DEVLINK_ATTR_PORT_SPLIT_COUNT))
                return -EINVAL;
-       if (!devlink->ops->port_split)
+       if (!devlink_port->ops->port_split)
                return -EOPNOTSUPP;
 
        count = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_SPLIT_COUNT]);
@@ -1339,8 +1339,8 @@ static int devlink_nl_cmd_port_split_doit(struct sk_buff *skb,
                return -EINVAL;
        }
 
-       return devlink->ops->port_split(devlink, devlink_port, count,
-                                       info->extack);
+       return devlink_port->ops->port_split(devlink, devlink_port, count,
+                                            info->extack);
 }
 
 static int devlink_nl_cmd_port_unsplit_doit(struct sk_buff *skb,
@@ -1349,9 +1349,9 @@ static int devlink_nl_cmd_port_unsplit_doit(struct sk_buff *skb,
        struct devlink_port *devlink_port = info->user_ptr[1];
        struct devlink *devlink = info->user_ptr[0];
 
-       if (!devlink->ops->port_unsplit)
+       if (!devlink_port->ops->port_unsplit)
                return -EOPNOTSUPP;
-       return devlink->ops->port_unsplit(devlink, devlink_port, info->extack);
+       return devlink_port->ops->port_unsplit(devlink, devlink_port, info->extack);
 }
 
 static int devlink_nl_cmd_port_new_doit(struct sk_buff *skb,