diff options
| author | Pavan Chebbi <pavan.chebbi@broadcom.com> | 2026-03-14 18:16:03 +0300 |
|---|---|---|
| committer | Jason Gunthorpe <jgg@nvidia.com> | 2026-03-27 15:12:36 +0300 |
| commit | 5102836da8397deb2a3d8b9e574238781ea47390 (patch) | |
| tree | bf7a4c7aeaafeb404c319f8eead32040f5650d3a | |
| parent | 2c7c85c8c7881d57c5fa1114f4b0dbd7fc53a36f (diff) | |
| download | linux-5102836da8397deb2a3d8b9e574238781ea47390.tar.xz | |
fwctl/bnxt_en: Create an aux device for fwctl
Create an additional auxiliary device to support fwctl.
The next patch will create bnxt_fwctl and bind to this
device.
Link: https://patch.msgid.link/r/20260314151605.932749-4-pavan.chebbi@broadcom.com
Reviewed-by: Andy Gospodarek <gospo@broadcom.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
| -rw-r--r-- | drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c | 12 | ||||
| -rw-r--r-- | include/linux/bnxt/ulp.h | 1 |
2 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c index 3705ef3a75c9..052bf69cfa4c 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c @@ -50,6 +50,8 @@ static bool bnxt_auxdev_is_active(struct bnxt *bp, int idx) static struct bnxt_aux_device bnxt_aux_devices[__BNXT_AUXDEV_MAX] = {{ .name = "rdma", +}, { + .name = "fwctl", }}; static void bnxt_fill_msix_vecs(struct bnxt *bp, struct bnxt_msix_entry *ent) @@ -278,6 +280,11 @@ void bnxt_ulp_stop(struct bnxt *bp) aux_priv = bp->aux_priv[i]; edev = bp->edev[i]; mutex_lock(&edev->en_dev_lock); + if (i == BNXT_AUXDEV_FWCTL) { + edev->flags |= BNXT_EN_FLAG_ULP_STOPPED; + mutex_unlock(&edev->en_dev_lock); + continue; + } if (!bnxt_ulp_registered(edev) || (edev->flags & BNXT_EN_FLAG_ULP_STOPPED)) { mutex_unlock(&edev->en_dev_lock); @@ -316,7 +323,7 @@ void bnxt_ulp_start(struct bnxt *bp) aux_priv = bp->aux_priv[i]; edev = bp->edev[i]; mutex_lock(&edev->en_dev_lock); - if (!bnxt_ulp_registered(edev) || + if (i == BNXT_AUXDEV_FWCTL || !bnxt_ulp_registered(edev) || !(edev->flags & BNXT_EN_FLAG_ULP_STOPPED)) { goto clear_flag_continue; } @@ -520,7 +527,8 @@ void bnxt_aux_devices_add(struct bnxt *bp) aux_dev = &bp->aux_priv[idx]->aux_dev; rc = auxiliary_device_add(aux_dev); if (rc) { - netdev_warn(bp->dev, "Failed to add auxiliary device for ROCE\n"); + netdev_warn(bp->dev, "Failed to add auxiliary device for auxdev type %d\n", + idx); auxiliary_device_uninit(aux_dev); if (idx == BNXT_AUXDEV_RDMA) bp->flags &= ~BNXT_FLAG_ROCE_CAP; diff --git a/include/linux/bnxt/ulp.h b/include/linux/bnxt/ulp.h index 1a4643c46f86..0851ad3394b0 100644 --- a/include/linux/bnxt/ulp.h +++ b/include/linux/bnxt/ulp.h @@ -24,6 +24,7 @@ struct bnxt; enum bnxt_auxdev_type { BNXT_AUXDEV_RDMA = 0, + BNXT_AUXDEV_FWCTL, __BNXT_AUXDEV_MAX }; |
