Commit 65a4c44b authored by Jiri Pirko's avatar Jiri Pirko Committed by Jakub Kicinski

devlink: move port_type_set() op into devlink_port_ops

Move port_type_set() 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 8a756d91
...@@ -3024,7 +3024,33 @@ static void mlx4_enable_msi_x(struct mlx4_dev *dev) ...@@ -3024,7 +3024,33 @@ static void mlx4_enable_msi_x(struct mlx4_dev *dev)
} }
} }
static int mlx4_devlink_port_type_set(struct devlink_port *devlink_port,
enum devlink_port_type port_type)
{
struct mlx4_port_info *info = container_of(devlink_port,
struct mlx4_port_info,
devlink_port);
enum mlx4_port_type mlx4_port_type;
switch (port_type) {
case DEVLINK_PORT_TYPE_AUTO:
mlx4_port_type = MLX4_PORT_TYPE_AUTO;
break;
case DEVLINK_PORT_TYPE_ETH:
mlx4_port_type = MLX4_PORT_TYPE_ETH;
break;
case DEVLINK_PORT_TYPE_IB:
mlx4_port_type = MLX4_PORT_TYPE_IB;
break;
default:
return -EOPNOTSUPP;
}
return __set_port_type(info, mlx4_port_type);
}
static const struct devlink_port_ops mlx4_devlink_port_ops = { static const struct devlink_port_ops mlx4_devlink_port_ops = {
.port_type_set = mlx4_devlink_port_type_set,
}; };
static int mlx4_init_port_info(struct mlx4_dev *dev, int port) static int mlx4_init_port_info(struct mlx4_dev *dev, int port)
...@@ -3878,31 +3904,6 @@ static int __mlx4_init_one(struct pci_dev *pdev, int pci_dev_data, ...@@ -3878,31 +3904,6 @@ static int __mlx4_init_one(struct pci_dev *pdev, int pci_dev_data,
return err; return err;
} }
static int mlx4_devlink_port_type_set(struct devlink_port *devlink_port,
enum devlink_port_type port_type)
{
struct mlx4_port_info *info = container_of(devlink_port,
struct mlx4_port_info,
devlink_port);
enum mlx4_port_type mlx4_port_type;
switch (port_type) {
case DEVLINK_PORT_TYPE_AUTO:
mlx4_port_type = MLX4_PORT_TYPE_AUTO;
break;
case DEVLINK_PORT_TYPE_ETH:
mlx4_port_type = MLX4_PORT_TYPE_ETH;
break;
case DEVLINK_PORT_TYPE_IB:
mlx4_port_type = MLX4_PORT_TYPE_IB;
break;
default:
return -EOPNOTSUPP;
}
return __set_port_type(info, mlx4_port_type);
}
static void mlx4_devlink_param_load_driverinit_values(struct devlink *devlink) static void mlx4_devlink_param_load_driverinit_values(struct devlink *devlink)
{ {
struct mlx4_priv *priv = devlink_priv(devlink); struct mlx4_priv *priv = devlink_priv(devlink);
...@@ -3987,7 +3988,6 @@ static int mlx4_devlink_reload_up(struct devlink *devlink, enum devlink_reload_a ...@@ -3987,7 +3988,6 @@ static int mlx4_devlink_reload_up(struct devlink *devlink, enum devlink_reload_a
} }
static const struct devlink_ops mlx4_devlink_ops = { static const struct devlink_ops mlx4_devlink_ops = {
.port_type_set = mlx4_devlink_port_type_set,
.reload_actions = BIT(DEVLINK_RELOAD_ACTION_DRIVER_REINIT), .reload_actions = BIT(DEVLINK_RELOAD_ACTION_DRIVER_REINIT),
.reload_down = mlx4_devlink_reload_down, .reload_down = mlx4_devlink_reload_down,
.reload_up = mlx4_devlink_reload_up, .reload_up = mlx4_devlink_reload_up,
......
...@@ -1274,8 +1274,6 @@ struct devlink_ops { ...@@ -1274,8 +1274,6 @@ struct devlink_ops {
int (*reload_up)(struct devlink *devlink, enum devlink_reload_action action, int (*reload_up)(struct devlink *devlink, enum devlink_reload_action action,
enum devlink_reload_limit limit, u32 *actions_performed, enum devlink_reload_limit limit, u32 *actions_performed,
struct netlink_ext_ack *extack); struct netlink_ext_ack *extack);
int (*port_type_set)(struct devlink_port *devlink_port,
enum devlink_port_type port_type);
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);
...@@ -1652,12 +1650,15 @@ void devlink_free(struct devlink *devlink); ...@@ -1652,12 +1650,15 @@ void devlink_free(struct devlink *devlink);
* @port_split: Callback used to split the port into multiple ones. * @port_split: Callback used to split the port into multiple ones.
* @port_unsplit: Callback used to unsplit the port group back into * @port_unsplit: Callback used to unsplit the port group back into
* a single port. * a single port.
* @port_type_set: Callback used to set a type of a port.
*/ */
struct devlink_port_ops { struct devlink_port_ops {
int (*port_split)(struct devlink *devlink, struct devlink_port *port, int (*port_split)(struct devlink *devlink, struct devlink_port *port,
unsigned int count, struct netlink_ext_ack *extack); unsigned int count, struct netlink_ext_ack *extack);
int (*port_unsplit)(struct devlink *devlink, struct devlink_port *port, int (*port_unsplit)(struct devlink *devlink, struct devlink_port *port,
struct netlink_ext_ack *extack); struct netlink_ext_ack *extack);
int (*port_type_set)(struct devlink_port *devlink_port,
enum devlink_port_type port_type);
}; };
void devlink_port_init(struct devlink *devlink, void devlink_port_init(struct devlink *devlink,
......
...@@ -1137,14 +1137,13 @@ static int devlink_port_type_set(struct devlink_port *devlink_port, ...@@ -1137,14 +1137,13 @@ static int devlink_port_type_set(struct devlink_port *devlink_port,
{ {
int err; int err;
if (!devlink_port->devlink->ops->port_type_set) if (!devlink_port->ops->port_type_set)
return -EOPNOTSUPP; return -EOPNOTSUPP;
if (port_type == devlink_port->type) if (port_type == devlink_port->type)
return 0; return 0;
err = devlink_port->devlink->ops->port_type_set(devlink_port, err = devlink_port->ops->port_type_set(devlink_port, port_type);
port_type);
if (err) if (err)
return err; return err;
......
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