On Wed, 1 Jul 2020 17:32:45 +0300 Ido Schimmel wrote: > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c > b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c > index 2bd610fafc58..3af4e7397263 100644 > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c > @@ -691,6 +691,9 @@ static void bnxt_dl_params_unregister(struct bnxt *bp) > > int bnxt_dl_register(struct bnxt *bp) > { > + struct devlink_port_attrs attrs = {}; > + const unsigned char *switch_id; > + unsigned char switch_id_len; > struct devlink *dl; > int rc; > > @@ -719,9 +722,13 @@ int bnxt_dl_register(struct bnxt *bp) > if (!BNXT_PF(bp)) > return 0; > > - devlink_port_attrs_set(&bp->dl_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, > - bp->pf.port_id, false, 0, bp->dsn, > - sizeof(bp->dsn)); > + attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL; > + attrs.phys.port_number = bp->pf.port_id; > + switch_id = bp->dsn; > + switch_id_len = sizeof(bp->dsn);
Why do you create those local variables everywhere? > + memcpy(attrs.switch_id.id, switch_id, switch_id_len); > + attrs.switch_id.id_len = switch_id_len; > + devlink_port_attrs_set(&bp->dl_port, &attrs); > rc = devlink_port_register(dl, &bp->dl_port, bp->pf.port_id); > if (rc) { > netdev_err(bp->dev, "devlink_port_register failed\n");