|
Thomas Bogendoerfer |
7eb160 |
From: Leon Romanovsky <leonro@nvidia.com>
|
|
Thomas Bogendoerfer |
7eb160 |
Date: Sat, 25 Sep 2021 14:22:42 +0300
|
|
Thomas Bogendoerfer |
7eb160 |
Subject: bnxt_en: Register devlink instance at the end devlink configuration
|
|
Thomas Bogendoerfer |
7eb160 |
Patch-mainline: v5.16-rc1
|
|
Thomas Bogendoerfer |
7eb160 |
Git-commit: 5df290e7a70367d476406420d19c4dea14d45dd1
|
|
Thomas Bogendoerfer |
7eb160 |
References: jsc#SLE-18978
|
|
Thomas Bogendoerfer |
7eb160 |
|
|
Thomas Bogendoerfer |
7eb160 |
Move devlink_register() to be last command in devlink configuration
|
|
Thomas Bogendoerfer |
7eb160 |
sequence, so no user space access will be possible till devlink instance
|
|
Thomas Bogendoerfer |
7eb160 |
is fully operable. As part of this change, the devlink_params_publish
|
|
Thomas Bogendoerfer |
7eb160 |
call is removed as not needed.
|
|
Thomas Bogendoerfer |
7eb160 |
|
|
Thomas Bogendoerfer |
7eb160 |
This change fixes forgotten devlink_params_unpublish() too.
|
|
Thomas Bogendoerfer |
7eb160 |
|
|
Thomas Bogendoerfer |
7eb160 |
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
|
|
Thomas Bogendoerfer |
7eb160 |
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Thomas Bogendoerfer |
7eb160 |
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
|
|
Thomas Bogendoerfer |
7eb160 |
---
|
|
Thomas Bogendoerfer |
7eb160 |
drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c | 15 ++++++---------
|
|
Thomas Bogendoerfer |
7eb160 |
1 file changed, 6 insertions(+), 9 deletions(-)
|
|
Thomas Bogendoerfer |
7eb160 |
|
|
Thomas Bogendoerfer |
7eb160 |
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
|
|
Thomas Bogendoerfer |
7eb160 |
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
|
|
Thomas Bogendoerfer |
7eb160 |
@@ -745,14 +745,10 @@ static int bnxt_dl_params_register(struc
|
|
Thomas Bogendoerfer |
7eb160 |
|
|
Thomas Bogendoerfer |
7eb160 |
rc = devlink_params_register(bp->dl, bnxt_dl_params,
|
|
Thomas Bogendoerfer |
7eb160 |
ARRAY_SIZE(bnxt_dl_params));
|
|
Thomas Bogendoerfer |
7eb160 |
- if (rc) {
|
|
Thomas Bogendoerfer |
7eb160 |
+ if (rc)
|
|
Thomas Bogendoerfer |
7eb160 |
netdev_warn(bp->dev, "devlink_params_register failed. rc=%d\n",
|
|
Thomas Bogendoerfer |
7eb160 |
rc);
|
|
Thomas Bogendoerfer |
7eb160 |
- return rc;
|
|
Thomas Bogendoerfer |
7eb160 |
- }
|
|
Thomas Bogendoerfer |
7eb160 |
- devlink_params_publish(bp->dl);
|
|
Thomas Bogendoerfer |
7eb160 |
-
|
|
Thomas Bogendoerfer |
7eb160 |
- return 0;
|
|
Thomas Bogendoerfer |
7eb160 |
+ return rc;
|
|
Thomas Bogendoerfer |
7eb160 |
}
|
|
Thomas Bogendoerfer |
7eb160 |
|
|
Thomas Bogendoerfer |
7eb160 |
static void bnxt_dl_params_unregister(struct bnxt *bp)
|
|
Thomas Bogendoerfer |
7eb160 |
@@ -792,9 +788,8 @@ int bnxt_dl_register(struct bnxt *bp)
|
|
Thomas Bogendoerfer |
7eb160 |
bp->hwrm_spec_code > 0x10803)
|
|
Thomas Bogendoerfer |
7eb160 |
bp->eswitch_mode = DEVLINK_ESWITCH_MODE_LEGACY;
|
|
Thomas Bogendoerfer |
7eb160 |
|
|
Thomas Bogendoerfer |
7eb160 |
- devlink_register(dl);
|
|
Thomas Bogendoerfer |
7eb160 |
if (!BNXT_PF(bp))
|
|
Thomas Bogendoerfer |
7eb160 |
- return 0;
|
|
Thomas Bogendoerfer |
7eb160 |
+ goto out;
|
|
Thomas Bogendoerfer |
7eb160 |
|
|
Thomas Bogendoerfer |
7eb160 |
attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
|
|
Thomas Bogendoerfer |
7eb160 |
attrs.phys.port_number = bp->pf.port_id;
|
|
Thomas Bogendoerfer |
7eb160 |
@@ -811,6 +806,8 @@ int bnxt_dl_register(struct bnxt *bp)
|
|
Thomas Bogendoerfer |
7eb160 |
if (rc)
|
|
Thomas Bogendoerfer |
7eb160 |
goto err_dl_port_unreg;
|
|
Thomas Bogendoerfer |
7eb160 |
|
|
Thomas Bogendoerfer |
7eb160 |
+out:
|
|
Thomas Bogendoerfer |
7eb160 |
+ devlink_register(dl);
|
|
Thomas Bogendoerfer |
7eb160 |
return 0;
|
|
Thomas Bogendoerfer |
7eb160 |
|
|
Thomas Bogendoerfer |
7eb160 |
err_dl_port_unreg:
|
|
Thomas Bogendoerfer |
7eb160 |
@@ -824,10 +821,10 @@ void bnxt_dl_unregister(struct bnxt *bp)
|
|
Thomas Bogendoerfer |
7eb160 |
{
|
|
Thomas Bogendoerfer |
7eb160 |
struct devlink *dl = bp->dl;
|
|
Thomas Bogendoerfer |
7eb160 |
|
|
Thomas Bogendoerfer |
7eb160 |
+ devlink_unregister(dl);
|
|
Thomas Bogendoerfer |
7eb160 |
if (BNXT_PF(bp)) {
|
|
Thomas Bogendoerfer |
7eb160 |
bnxt_dl_params_unregister(bp);
|
|
Thomas Bogendoerfer |
7eb160 |
devlink_port_unregister(&bp->dl_port);
|
|
Thomas Bogendoerfer |
7eb160 |
}
|
|
Thomas Bogendoerfer |
7eb160 |
- devlink_unregister(dl);
|
|
Thomas Bogendoerfer |
7eb160 |
devlink_free(dl);
|
|
Thomas Bogendoerfer |
7eb160 |
}
|