Commit f58a3e4d authored by Jiri Pirko's avatar Jiri Pirko Committed by Jakub Kicinski

devlink: move port_split/unsplit() ops into devlink_port_ops

Move port_split/unsplit() from devlink_ops into newly introduced
devlink_port_ops.
Signed-off-by: default avatarJiri Pirko <jiri@nvidia.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent ab8ccc6c
...@@ -1256,8 +1256,6 @@ static const struct devlink_ops ice_devlink_ops = { ...@@ -1256,8 +1256,6 @@ static const struct devlink_ops ice_devlink_ops = {
BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE), BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE),
.reload_down = ice_devlink_reload_down, .reload_down = ice_devlink_reload_down,
.reload_up = ice_devlink_reload_up, .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_get = ice_eswitch_mode_get,
.eswitch_mode_set = ice_eswitch_mode_set, .eswitch_mode_set = ice_eswitch_mode_set,
.info_get = ice_devlink_info_get, .info_get = ice_devlink_info_get,
...@@ -1513,6 +1511,8 @@ ice_devlink_set_port_split_options(struct ice_pf *pf, ...@@ -1513,6 +1511,8 @@ ice_devlink_set_port_split_options(struct ice_pf *pf,
} }
static const struct devlink_port_ops ice_devlink_port_ops = { static const struct devlink_port_ops ice_devlink_port_ops = {
.port_split = ice_devlink_port_split,
.port_unsplit = ice_devlink_port_unsplit,
}; };
/** /**
......
...@@ -1723,8 +1723,6 @@ static const struct devlink_ops mlxsw_devlink_ops = { ...@@ -1723,8 +1723,6 @@ static const struct devlink_ops mlxsw_devlink_ops = {
BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE), BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE),
.reload_down = mlxsw_devlink_core_bus_device_reload_down, .reload_down = mlxsw_devlink_core_bus_device_reload_down,
.reload_up = mlxsw_devlink_core_bus_device_reload_up, .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_get = mlxsw_devlink_sb_pool_get,
.sb_pool_set = mlxsw_devlink_sb_pool_set, .sb_pool_set = mlxsw_devlink_sb_pool_set,
.sb_port_pool_get = mlxsw_devlink_sb_port_pool_get, .sb_port_pool_get = mlxsw_devlink_sb_port_pool_get,
...@@ -3117,6 +3115,8 @@ u64 mlxsw_core_res_get(struct mlxsw_core *mlxsw_core, ...@@ -3117,6 +3115,8 @@ u64 mlxsw_core_res_get(struct mlxsw_core *mlxsw_core,
EXPORT_SYMBOL(mlxsw_core_res_get); EXPORT_SYMBOL(mlxsw_core_res_get);
static const struct devlink_port_ops mlxsw_devlink_port_ops = { 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, static int __mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u16 local_port,
......
...@@ -311,8 +311,6 @@ nfp_devlink_flash_update(struct devlink *devlink, ...@@ -311,8 +311,6 @@ nfp_devlink_flash_update(struct devlink *devlink,
} }
const struct devlink_ops nfp_devlink_ops = { 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_get = nfp_devlink_sb_pool_get,
.sb_pool_set = nfp_devlink_sb_pool_set, .sb_pool_set = nfp_devlink_sb_pool_set,
.eswitch_mode_get = nfp_devlink_eswitch_mode_get, .eswitch_mode_get = nfp_devlink_eswitch_mode_get,
...@@ -322,6 +320,8 @@ const struct devlink_ops nfp_devlink_ops = { ...@@ -322,6 +320,8 @@ const struct devlink_ops nfp_devlink_ops = {
}; };
static const struct devlink_port_ops nfp_devlink_port_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) int nfp_devlink_port_register(struct nfp_app *app, struct nfp_port *port)
......
...@@ -1276,10 +1276,6 @@ struct devlink_ops { ...@@ -1276,10 +1276,6 @@ struct devlink_ops {
struct netlink_ext_ack *extack); struct netlink_ext_ack *extack);
int (*port_type_set)(struct devlink_port *devlink_port, int (*port_type_set)(struct devlink_port *devlink_port,
enum devlink_port_type port_type); 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, int (*sb_pool_get)(struct devlink *devlink, unsigned int sb_index,
u16 pool_index, u16 pool_index,
struct devlink_sb_pool_info *pool_info); struct devlink_sb_pool_info *pool_info);
...@@ -1653,8 +1649,15 @@ void devlink_free(struct devlink *devlink); ...@@ -1653,8 +1649,15 @@ void devlink_free(struct devlink *devlink);
/** /**
* struct devlink_port_ops - Port operations * 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 { 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, void devlink_port_init(struct devlink *devlink,
......
...@@ -1320,7 +1320,7 @@ static int devlink_nl_cmd_port_split_doit(struct sk_buff *skb, ...@@ -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)) if (GENL_REQ_ATTR_CHECK(info, DEVLINK_ATTR_PORT_SPLIT_COUNT))
return -EINVAL; return -EINVAL;
if (!devlink->ops->port_split) if (!devlink_port->ops->port_split)
return -EOPNOTSUPP; return -EOPNOTSUPP;
count = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_SPLIT_COUNT]); 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, ...@@ -1339,8 +1339,8 @@ static int devlink_nl_cmd_port_split_doit(struct sk_buff *skb,
return -EINVAL; return -EINVAL;
} }
return devlink->ops->port_split(devlink, devlink_port, count, return devlink_port->ops->port_split(devlink, devlink_port, count,
info->extack); info->extack);
} }
static int devlink_nl_cmd_port_unsplit_doit(struct sk_buff *skb, 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, ...@@ -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_port *devlink_port = info->user_ptr[1];
struct devlink *devlink = info->user_ptr[0]; struct devlink *devlink = info->user_ptr[0];
if (!devlink->ops->port_unsplit) if (!devlink_port->ops->port_unsplit)
return -EOPNOTSUPP; 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, static int devlink_nl_cmd_port_new_doit(struct sk_buff *skb,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment