Commit 71ad8d55 authored by Danielle Ratson's avatar Danielle Ratson Committed by David S. Miller

devlink: Replace devlink_port_attrs_set parameters with a struct

Currently, devlink_port_attrs_set accepts a long list of parameters,
that most of them are devlink port's attributes.

Use the devlink_port_attrs struct to replace the relevant parameters.
Signed-off-by: default avatarDanielle Ratson <danieller@mellanox.com>
Reviewed-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 46737a19
...@@ -691,6 +691,7 @@ static void bnxt_dl_params_unregister(struct bnxt *bp) ...@@ -691,6 +691,7 @@ static void bnxt_dl_params_unregister(struct bnxt *bp)
int bnxt_dl_register(struct bnxt *bp) int bnxt_dl_register(struct bnxt *bp)
{ {
struct devlink_port_attrs attrs = {};
struct devlink *dl; struct devlink *dl;
int rc; int rc;
...@@ -719,9 +720,11 @@ int bnxt_dl_register(struct bnxt *bp) ...@@ -719,9 +720,11 @@ int bnxt_dl_register(struct bnxt *bp)
if (!BNXT_PF(bp)) if (!BNXT_PF(bp))
return 0; return 0;
devlink_port_attrs_set(&bp->dl_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
bp->pf.port_id, false, 0, bp->dsn, attrs.phys.port_number = bp->pf.port_id;
sizeof(bp->dsn)); memcpy(attrs.switch_id.id, bp->dsn, sizeof(bp->dsn));
attrs.switch_id.id_len = sizeof(bp->dsn);
devlink_port_attrs_set(&bp->dl_port, &attrs);
rc = devlink_port_register(dl, &bp->dl_port, bp->pf.port_id); rc = devlink_port_register(dl, &bp->dl_port, bp->pf.port_id);
if (rc) { if (rc) {
netdev_err(bp->dev, "devlink_port_register failed\n"); netdev_err(bp->dev, "devlink_port_register failed\n");
......
...@@ -312,6 +312,7 @@ int ice_devlink_create_port(struct ice_pf *pf) ...@@ -312,6 +312,7 @@ int ice_devlink_create_port(struct ice_pf *pf)
struct devlink *devlink = priv_to_devlink(pf); struct devlink *devlink = priv_to_devlink(pf);
struct ice_vsi *vsi = ice_get_main_vsi(pf); struct ice_vsi *vsi = ice_get_main_vsi(pf);
struct device *dev = ice_pf_to_dev(pf); struct device *dev = ice_pf_to_dev(pf);
struct devlink_port_attrs attrs = {};
int err; int err;
if (!vsi) { if (!vsi) {
...@@ -319,8 +320,9 @@ int ice_devlink_create_port(struct ice_pf *pf) ...@@ -319,8 +320,9 @@ int ice_devlink_create_port(struct ice_pf *pf)
return -EIO; return -EIO;
} }
devlink_port_attrs_set(&pf->devlink_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
pf->hw.pf_id, false, 0, NULL, 0); attrs.phys.port_number = pf->hw.pf_id;
devlink_port_attrs_set(&pf->devlink_port, &attrs);
err = devlink_port_register(devlink, &pf->devlink_port, pf->hw.pf_id); err = devlink_port_register(devlink, &pf->devlink_port, pf->hw.pf_id);
if (err) { if (err) {
dev_err(dev, "devlink_port_register failed: %d\n", err); dev_err(dev, "devlink_port_register failed: %d\n", err);
......
...@@ -6,17 +6,16 @@ ...@@ -6,17 +6,16 @@
int mlx5e_devlink_port_register(struct mlx5e_priv *priv) int mlx5e_devlink_port_register(struct mlx5e_priv *priv)
{ {
struct devlink *devlink = priv_to_devlink(priv->mdev); struct devlink *devlink = priv_to_devlink(priv->mdev);
struct devlink_port_attrs attrs = {};
if (mlx5_core_is_pf(priv->mdev)) if (mlx5_core_is_pf(priv->mdev)) {
devlink_port_attrs_set(&priv->dl_port, attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
DEVLINK_PORT_FLAVOUR_PHYSICAL, attrs.phys.port_number = PCI_FUNC(priv->mdev->pdev->devfn);
PCI_FUNC(priv->mdev->pdev->devfn), } else {
false, 0, attrs.flavour = DEVLINK_PORT_FLAVOUR_VIRTUAL;
NULL, 0); }
else
devlink_port_attrs_set(&priv->dl_port, devlink_port_attrs_set(&priv->dl_port, &attrs);
DEVLINK_PORT_FLAVOUR_VIRTUAL,
0, false, 0, NULL, 0);
return devlink_port_register(devlink, &priv->dl_port, 1); return devlink_port_register(devlink, &priv->dl_port, 1);
} }
......
...@@ -1185,6 +1185,7 @@ static int register_devlink_port(struct mlx5_core_dev *dev, ...@@ -1185,6 +1185,7 @@ static int register_devlink_port(struct mlx5_core_dev *dev,
{ {
struct devlink *devlink = priv_to_devlink(dev); struct devlink *devlink = priv_to_devlink(dev);
struct mlx5_eswitch_rep *rep = rpriv->rep; struct mlx5_eswitch_rep *rep = rpriv->rep;
struct devlink_port_attrs attrs = {};
struct netdev_phys_item_id ppid = {}; struct netdev_phys_item_id ppid = {};
unsigned int dl_port_index = 0; unsigned int dl_port_index = 0;
u16 pfnum; u16 pfnum;
...@@ -1195,19 +1196,16 @@ static int register_devlink_port(struct mlx5_core_dev *dev, ...@@ -1195,19 +1196,16 @@ static int register_devlink_port(struct mlx5_core_dev *dev,
mlx5e_rep_get_port_parent_id(rpriv->netdev, &ppid); mlx5e_rep_get_port_parent_id(rpriv->netdev, &ppid);
dl_port_index = mlx5_esw_vport_to_devlink_port_index(dev, rep->vport); dl_port_index = mlx5_esw_vport_to_devlink_port_index(dev, rep->vport);
pfnum = PCI_FUNC(dev->pdev->devfn); pfnum = PCI_FUNC(dev->pdev->devfn);
attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
attrs.phys.port_number = pfnum;
memcpy(attrs.switch_id.id, &ppid.id[0], ppid.id_len);
attrs.switch_id.id_len = ppid.id_len;
if (rep->vport == MLX5_VPORT_UPLINK) if (rep->vport == MLX5_VPORT_UPLINK)
devlink_port_attrs_set(&rpriv->dl_port, devlink_port_attrs_set(&rpriv->dl_port, &attrs);
DEVLINK_PORT_FLAVOUR_PHYSICAL,
pfnum, false, 0,
&ppid.id[0], ppid.id_len);
else if (rep->vport == MLX5_VPORT_PF) else if (rep->vport == MLX5_VPORT_PF)
devlink_port_attrs_pci_pf_set(&rpriv->dl_port, devlink_port_attrs_pci_pf_set(&rpriv->dl_port, pfnum);
&ppid.id[0], ppid.id_len,
pfnum);
else if (mlx5_eswitch_is_vf_vport(dev->priv.eswitch, rpriv->rep->vport)) else if (mlx5_eswitch_is_vf_vport(dev->priv.eswitch, rpriv->rep->vport))
devlink_port_attrs_pci_vf_set(&rpriv->dl_port, devlink_port_attrs_pci_vf_set(&rpriv->dl_port,
&ppid.id[0], ppid.id_len,
pfnum, rep->vport - 1); pfnum, rep->vport - 1);
return devlink_port_register(devlink, &rpriv->dl_port, dl_port_index); return devlink_port_register(devlink, &rpriv->dl_port, dl_port_index);
......
...@@ -2129,12 +2129,17 @@ static int __mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port, ...@@ -2129,12 +2129,17 @@ static int __mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port,
struct mlxsw_core_port *mlxsw_core_port = struct mlxsw_core_port *mlxsw_core_port =
&mlxsw_core->ports[local_port]; &mlxsw_core->ports[local_port];
struct devlink_port *devlink_port = &mlxsw_core_port->devlink_port; struct devlink_port *devlink_port = &mlxsw_core_port->devlink_port;
struct devlink_port_attrs attrs = {};
int err; int err;
attrs.split = split;
attrs.flavour = flavour;
attrs.phys.port_number = port_number;
attrs.phys.split_subport_number = split_port_subnumber;
memcpy(attrs.switch_id.id, switch_id, switch_id_len);
attrs.switch_id.id_len = switch_id_len;
mlxsw_core_port->local_port = local_port; mlxsw_core_port->local_port = local_port;
devlink_port_attrs_set(devlink_port, flavour, port_number, devlink_port_attrs_set(devlink_port, &attrs);
split, split_port_subnumber,
switch_id, switch_id_len);
err = devlink_port_register(devlink, devlink_port, local_port); err = devlink_port_register(devlink, devlink_port, local_port);
if (err) if (err)
memset(mlxsw_core_port, 0, sizeof(*mlxsw_core_port)); memset(mlxsw_core_port, 0, sizeof(*mlxsw_core_port));
......
...@@ -353,6 +353,7 @@ const struct devlink_ops nfp_devlink_ops = { ...@@ -353,6 +353,7 @@ const struct devlink_ops nfp_devlink_ops = {
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)
{ {
struct devlink_port_attrs attrs = {};
struct nfp_eth_table_port eth_port; struct nfp_eth_table_port eth_port;
struct devlink *devlink; struct devlink *devlink;
const u8 *serial; const u8 *serial;
...@@ -365,10 +366,14 @@ int nfp_devlink_port_register(struct nfp_app *app, struct nfp_port *port) ...@@ -365,10 +366,14 @@ int nfp_devlink_port_register(struct nfp_app *app, struct nfp_port *port)
if (ret) if (ret)
return ret; return ret;
attrs.split = eth_port.is_split;
attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
attrs.phys.port_number = eth_port.label_port;
attrs.phys.split_subport_number = eth_port.label_subport;
serial_len = nfp_cpp_serial(port->app->cpp, &serial); serial_len = nfp_cpp_serial(port->app->cpp, &serial);
devlink_port_attrs_set(&port->dl_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, memcpy(attrs.switch_id.id, serial, serial_len);
eth_port.label_port, eth_port.is_split, attrs.switch_id.id_len = serial_len;
eth_port.label_subport, serial, serial_len); devlink_port_attrs_set(&port->dl_port, &attrs);
devlink = priv_to_devlink(app->pf); devlink = priv_to_devlink(app->pf);
......
...@@ -69,6 +69,7 @@ void ionic_devlink_free(struct ionic *ionic) ...@@ -69,6 +69,7 @@ void ionic_devlink_free(struct ionic *ionic)
int ionic_devlink_register(struct ionic *ionic) int ionic_devlink_register(struct ionic *ionic)
{ {
struct devlink *dl = priv_to_devlink(ionic); struct devlink *dl = priv_to_devlink(ionic);
struct devlink_port_attrs attrs = {};
int err; int err;
err = devlink_register(dl, ionic->dev); err = devlink_register(dl, ionic->dev);
...@@ -77,8 +78,8 @@ int ionic_devlink_register(struct ionic *ionic) ...@@ -77,8 +78,8 @@ int ionic_devlink_register(struct ionic *ionic)
return err; return err;
} }
devlink_port_attrs_set(&ionic->dl_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
0, false, 0, NULL, 0); devlink_port_attrs_set(&ionic->dl_port, &attrs);
err = devlink_port_register(dl, &ionic->dl_port, 0); err = devlink_port_register(dl, &ionic->dl_port, 0);
if (err) if (err)
dev_err(ionic->dev, "devlink_port_register failed: %d\n", err); dev_err(ionic->dev, "devlink_port_register failed: %d\n", err);
......
...@@ -889,6 +889,7 @@ static const struct devlink_ops nsim_dev_devlink_ops = { ...@@ -889,6 +889,7 @@ static const struct devlink_ops nsim_dev_devlink_ops = {
static int __nsim_dev_port_add(struct nsim_dev *nsim_dev, static int __nsim_dev_port_add(struct nsim_dev *nsim_dev,
unsigned int port_index) unsigned int port_index)
{ {
struct devlink_port_attrs attrs = {};
struct nsim_dev_port *nsim_dev_port; struct nsim_dev_port *nsim_dev_port;
struct devlink_port *devlink_port; struct devlink_port *devlink_port;
int err; int err;
...@@ -899,10 +900,11 @@ static int __nsim_dev_port_add(struct nsim_dev *nsim_dev, ...@@ -899,10 +900,11 @@ static int __nsim_dev_port_add(struct nsim_dev *nsim_dev,
nsim_dev_port->port_index = port_index; nsim_dev_port->port_index = port_index;
devlink_port = &nsim_dev_port->devlink_port; devlink_port = &nsim_dev_port->devlink_port;
devlink_port_attrs_set(devlink_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
port_index + 1, 0, 0, attrs.phys.port_number = port_index + 1;
nsim_dev->switch_id.id, memcpy(attrs.switch_id.id, nsim_dev->switch_id.id, nsim_dev->switch_id.id_len);
nsim_dev->switch_id.id_len); attrs.switch_id.id_len = nsim_dev->switch_id.id_len;
devlink_port_attrs_set(devlink_port, &attrs);
err = devlink_port_register(priv_to_devlink(nsim_dev), devlink_port, err = devlink_port_register(priv_to_devlink(nsim_dev), devlink_port,
port_index); port_index);
if (err) if (err)
......
...@@ -52,7 +52,7 @@ struct devlink_port_phys_attrs { ...@@ -52,7 +52,7 @@ struct devlink_port_phys_attrs {
* A physical port which is visible to the user * A physical port which is visible to the user
* for a given port flavour. * for a given port flavour.
*/ */
u32 split_subport_number; u32 split_subport_number; /* If the port is split, this is the number of subport. */
}; };
struct devlink_port_pci_pf_attrs { struct devlink_port_pci_pf_attrs {
...@@ -64,6 +64,12 @@ struct devlink_port_pci_vf_attrs { ...@@ -64,6 +64,12 @@ struct devlink_port_pci_vf_attrs {
u16 vf; /* Associated PCI VF for of the PCI PF for this port. */ u16 vf; /* Associated PCI VF for of the PCI PF for this port. */
}; };
/**
* struct devlink_port_attrs - devlink port object
* @flavour: flavour of the port
* @split: indicates if this is split port
* @switch_id: if the port is part of switch, this is buffer with ID, otherwise this is NULL
*/
struct devlink_port_attrs { struct devlink_port_attrs {
u8 split:1; u8 split:1;
enum devlink_port_flavour flavour; enum devlink_port_flavour flavour;
...@@ -1180,17 +1186,9 @@ void devlink_port_type_ib_set(struct devlink_port *devlink_port, ...@@ -1180,17 +1186,9 @@ void devlink_port_type_ib_set(struct devlink_port *devlink_port,
struct ib_device *ibdev); struct ib_device *ibdev);
void devlink_port_type_clear(struct devlink_port *devlink_port); void devlink_port_type_clear(struct devlink_port *devlink_port);
void devlink_port_attrs_set(struct devlink_port *devlink_port, void devlink_port_attrs_set(struct devlink_port *devlink_port,
enum devlink_port_flavour flavour, struct devlink_port_attrs *devlink_port_attrs);
u32 port_number, bool split, void devlink_port_attrs_pci_pf_set(struct devlink_port *devlink_port, u16 pf);
u32 split_subport_number,
const unsigned char *switch_id,
unsigned char switch_id_len);
void devlink_port_attrs_pci_pf_set(struct devlink_port *devlink_port,
const unsigned char *switch_id,
unsigned char switch_id_len, u16 pf);
void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port, void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port,
const unsigned char *switch_id,
unsigned char switch_id_len,
u16 pf, u16 vf); u16 pf, u16 vf);
int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, int devlink_sb_register(struct devlink *devlink, unsigned int sb_index,
u32 size, u16 ingress_pools_count, u32 size, u16 ingress_pools_count,
......
...@@ -7510,9 +7510,7 @@ void devlink_port_type_clear(struct devlink_port *devlink_port) ...@@ -7510,9 +7510,7 @@ void devlink_port_type_clear(struct devlink_port *devlink_port)
EXPORT_SYMBOL_GPL(devlink_port_type_clear); EXPORT_SYMBOL_GPL(devlink_port_type_clear);
static int __devlink_port_attrs_set(struct devlink_port *devlink_port, static int __devlink_port_attrs_set(struct devlink_port *devlink_port,
enum devlink_port_flavour flavour, enum devlink_port_flavour flavour)
const unsigned char *switch_id,
unsigned char switch_id_len)
{ {
struct devlink_port_attrs *attrs = &devlink_port->attrs; struct devlink_port_attrs *attrs = &devlink_port->attrs;
...@@ -7520,12 +7518,10 @@ static int __devlink_port_attrs_set(struct devlink_port *devlink_port, ...@@ -7520,12 +7518,10 @@ static int __devlink_port_attrs_set(struct devlink_port *devlink_port,
return -EEXIST; return -EEXIST;
devlink_port->attrs_set = true; devlink_port->attrs_set = true;
attrs->flavour = flavour; attrs->flavour = flavour;
if (switch_id) { if (attrs->switch_id.id_len) {
devlink_port->switch_port = true; devlink_port->switch_port = true;
if (WARN_ON(switch_id_len > MAX_PHYS_ITEM_ID_LEN)) if (WARN_ON(attrs->switch_id.id_len > MAX_PHYS_ITEM_ID_LEN))
switch_id_len = MAX_PHYS_ITEM_ID_LEN; attrs->switch_id.id_len = MAX_PHYS_ITEM_ID_LEN;
memcpy(attrs->switch_id.id, switch_id, switch_id_len);
attrs->switch_id.id_len = switch_id_len;
} else { } else {
devlink_port->switch_port = false; devlink_port->switch_port = false;
} }
...@@ -7536,33 +7532,17 @@ static int __devlink_port_attrs_set(struct devlink_port *devlink_port, ...@@ -7536,33 +7532,17 @@ static int __devlink_port_attrs_set(struct devlink_port *devlink_port,
* devlink_port_attrs_set - Set port attributes * devlink_port_attrs_set - Set port attributes
* *
* @devlink_port: devlink port * @devlink_port: devlink port
* @flavour: flavour of the port * @attrs: devlink port attrs
* @port_number: number of the port that is facing user, for example
* the front panel port number
* @split: indicates if this is split port
* @split_subport_number: if the port is split, this is the number
* of subport.
* @switch_id: if the port is part of switch, this is buffer with ID,
* otwerwise this is NULL
* @switch_id_len: length of the switch_id buffer
*/ */
void devlink_port_attrs_set(struct devlink_port *devlink_port, void devlink_port_attrs_set(struct devlink_port *devlink_port,
enum devlink_port_flavour flavour, struct devlink_port_attrs *attrs)
u32 port_number, bool split,
u32 split_subport_number,
const unsigned char *switch_id,
unsigned char switch_id_len)
{ {
struct devlink_port_attrs *attrs = &devlink_port->attrs;
int ret; int ret;
ret = __devlink_port_attrs_set(devlink_port, flavour, devlink_port->attrs = *attrs;
switch_id, switch_id_len); ret = __devlink_port_attrs_set(devlink_port, attrs->flavour);
if (ret) if (ret)
return; return;
attrs->split = split;
attrs->phys.port_number = port_number;
attrs->phys.split_subport_number = split_subport_number;
} }
EXPORT_SYMBOL_GPL(devlink_port_attrs_set); EXPORT_SYMBOL_GPL(devlink_port_attrs_set);
...@@ -7571,20 +7551,14 @@ EXPORT_SYMBOL_GPL(devlink_port_attrs_set); ...@@ -7571,20 +7551,14 @@ EXPORT_SYMBOL_GPL(devlink_port_attrs_set);
* *
* @devlink_port: devlink port * @devlink_port: devlink port
* @pf: associated PF for the devlink port instance * @pf: associated PF for the devlink port instance
* @switch_id: if the port is part of switch, this is buffer with ID,
* otherwise this is NULL
* @switch_id_len: length of the switch_id buffer
*/ */
void devlink_port_attrs_pci_pf_set(struct devlink_port *devlink_port, void devlink_port_attrs_pci_pf_set(struct devlink_port *devlink_port, u16 pf)
const unsigned char *switch_id,
unsigned char switch_id_len, u16 pf)
{ {
struct devlink_port_attrs *attrs = &devlink_port->attrs; struct devlink_port_attrs *attrs = &devlink_port->attrs;
int ret; int ret;
ret = __devlink_port_attrs_set(devlink_port, ret = __devlink_port_attrs_set(devlink_port,
DEVLINK_PORT_FLAVOUR_PCI_PF, DEVLINK_PORT_FLAVOUR_PCI_PF);
switch_id, switch_id_len);
if (ret) if (ret)
return; return;
...@@ -7598,21 +7572,15 @@ EXPORT_SYMBOL_GPL(devlink_port_attrs_pci_pf_set); ...@@ -7598,21 +7572,15 @@ EXPORT_SYMBOL_GPL(devlink_port_attrs_pci_pf_set);
* @devlink_port: devlink port * @devlink_port: devlink port
* @pf: associated PF for the devlink port instance * @pf: associated PF for the devlink port instance
* @vf: associated VF of a PF for the devlink port instance * @vf: associated VF of a PF for the devlink port instance
* @switch_id: if the port is part of switch, this is buffer with ID,
* otherwise this is NULL
* @switch_id_len: length of the switch_id buffer
*/ */
void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port, void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port,
const unsigned char *switch_id,
unsigned char switch_id_len,
u16 pf, u16 vf) u16 pf, u16 vf)
{ {
struct devlink_port_attrs *attrs = &devlink_port->attrs; struct devlink_port_attrs *attrs = &devlink_port->attrs;
int ret; int ret;
ret = __devlink_port_attrs_set(devlink_port, ret = __devlink_port_attrs_set(devlink_port,
DEVLINK_PORT_FLAVOUR_PCI_VF, DEVLINK_PORT_FLAVOUR_PCI_VF);
switch_id, switch_id_len);
if (ret) if (ret)
return; return;
attrs->pci_vf.pf = pf; attrs->pci_vf.pf = pf;
......
...@@ -261,10 +261,15 @@ static int dsa_port_setup(struct dsa_port *dp) ...@@ -261,10 +261,15 @@ static int dsa_port_setup(struct dsa_port *dp)
struct devlink_port *dlp = &dp->devlink_port; struct devlink_port *dlp = &dp->devlink_port;
bool dsa_port_link_registered = false; bool dsa_port_link_registered = false;
bool devlink_port_registered = false; bool devlink_port_registered = false;
struct devlink_port_attrs attrs = {};
struct devlink *dl = ds->devlink; struct devlink *dl = ds->devlink;
bool dsa_port_enabled = false; bool dsa_port_enabled = false;
int err = 0; int err = 0;
attrs.phys.port_number = dp->index;
memcpy(attrs.switch_id.id, id, len);
attrs.switch_id.id_len = len;
if (dp->setup) if (dp->setup)
return 0; return 0;
...@@ -274,8 +279,8 @@ static int dsa_port_setup(struct dsa_port *dp) ...@@ -274,8 +279,8 @@ static int dsa_port_setup(struct dsa_port *dp)
break; break;
case DSA_PORT_TYPE_CPU: case DSA_PORT_TYPE_CPU:
memset(dlp, 0, sizeof(*dlp)); memset(dlp, 0, sizeof(*dlp));
devlink_port_attrs_set(dlp, DEVLINK_PORT_FLAVOUR_CPU, attrs.flavour = DEVLINK_PORT_FLAVOUR_CPU;
dp->index, false, 0, id, len); devlink_port_attrs_set(dlp, &attrs);
err = devlink_port_register(dl, dlp, dp->index); err = devlink_port_register(dl, dlp, dp->index);
if (err) if (err)
break; break;
...@@ -294,8 +299,8 @@ static int dsa_port_setup(struct dsa_port *dp) ...@@ -294,8 +299,8 @@ static int dsa_port_setup(struct dsa_port *dp)
break; break;
case DSA_PORT_TYPE_DSA: case DSA_PORT_TYPE_DSA:
memset(dlp, 0, sizeof(*dlp)); memset(dlp, 0, sizeof(*dlp));
devlink_port_attrs_set(dlp, DEVLINK_PORT_FLAVOUR_DSA, attrs.flavour = DEVLINK_PORT_FLAVOUR_DSA;
dp->index, false, 0, id, len); devlink_port_attrs_set(dlp, &attrs);
err = devlink_port_register(dl, dlp, dp->index); err = devlink_port_register(dl, dlp, dp->index);
if (err) if (err)
break; break;
...@@ -314,8 +319,8 @@ static int dsa_port_setup(struct dsa_port *dp) ...@@ -314,8 +319,8 @@ static int dsa_port_setup(struct dsa_port *dp)
break; break;
case DSA_PORT_TYPE_USER: case DSA_PORT_TYPE_USER:
memset(dlp, 0, sizeof(*dlp)); memset(dlp, 0, sizeof(*dlp));
devlink_port_attrs_set(dlp, DEVLINK_PORT_FLAVOUR_PHYSICAL, attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
dp->index, false, 0, id, len); devlink_port_attrs_set(dlp, &attrs);
err = devlink_port_register(dl, dlp, dp->index); err = devlink_port_register(dl, dlp, dp->index);
if (err) if (err)
break; break;
......
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