netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/6] bnxt_en: Driver update
@ 2024-12-15 20:59 Michael Chan
  2024-12-15 20:59 ` [PATCH net-next 1/6] bnxt_en: Use FW defined resource limits for RoCE Michael Chan
                   ` (5 more replies)
  0 siblings, 6 replies; 10+ messages in thread
From: Michael Chan @ 2024-12-15 20:59 UTC (permalink / raw)
  To: davem
  Cc: netdev, edumazet, kuba, pabeni, andrew+netdev, pavan.chebbi,
	andrew.gospodarek

The first patch configures context memory for RoCE resources based
on FW limits.  The next 4 patches restrict certain ethtool
operations when they are not supported.  The last patch adds Pavan
Chebbi as co-maintainer of the driver.

Hongguang Gao (1):
  bnxt_en: Use FW defined resource limits for RoCE

Michael Chan (5):
  bnxt_en: Do not allow ethtool -m on an untrusted VF
  bnxt_en: Skip PHY loopback ethtool selftest if unsupported by FW
  bnxt_en: Skip MAC loopback selftest if it is unsupported by FW
  bnxt_en: Skip reading PXP registers during ethtool -d if unsupported
  MAINTAINERS: bnxt_en: Add Pavan Chebbi as co-maintainer

 MAINTAINERS                                   |  1 +
 drivers/net/ethernet/broadcom/bnxt/bnxt.c     | 74 ++++++++++++++++---
 drivers/net/ethernet/broadcom/bnxt/bnxt.h     | 13 ++++
 .../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 41 +++++++---
 drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c |  2 +
 drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.h |  2 +
 6 files changed, 110 insertions(+), 23 deletions(-)

-- 
2.30.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH net-next 1/6] bnxt_en: Use FW defined resource limits for RoCE
  2024-12-15 20:59 [PATCH net-next 0/6] bnxt_en: Driver update Michael Chan
@ 2024-12-15 20:59 ` Michael Chan
  2024-12-15 20:59 ` [PATCH net-next 2/6] bnxt_en: Do not allow ethtool -m on an untrusted VF Michael Chan
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Michael Chan @ 2024-12-15 20:59 UTC (permalink / raw)
  To: davem
  Cc: netdev, edumazet, kuba, pabeni, andrew+netdev, pavan.chebbi,
	andrew.gospodarek, Hongguang Gao, Damodharam Ammepalli, Kalesh AP,
	Selvin Xavier

From: Hongguang Gao <hongguang.gao@broadcom.com>

If FW supports setting resource limits for RoCE, then just use the
FW limits instead of using some fixed values in the driver.  These
limits will be used to allocate context memory for QP, SRQ, AH, and
MR resources for RoCE.

Reviewed-by: Damodharam Ammepalli <damodharam.ammepalli@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Hongguang Gao <hongguang.gao@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c     | 41 +++++++++++++------
 drivers/net/ethernet/broadcom/bnxt/bnxt.h     |  3 ++
 drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c |  2 +
 drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.h |  2 +
 4 files changed, 36 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index b86f980fa7ea..469352ac1f7e 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -9117,10 +9117,18 @@ static int bnxt_alloc_ctx_mem(struct bnxt *bp)
 	ena = 0;
 	if ((bp->flags & BNXT_FLAG_ROCE_CAP) && !is_kdump_kernel()) {
 		pg_lvl = 2;
-		extra_qps = min_t(u32, 65536, max_qps - l2_qps - qp1_qps);
-		/* allocate extra qps if fw supports RoCE fast qp destroy feature */
-		extra_qps += fast_qpmd_qps;
-		extra_srqs = min_t(u32, 8192, max_srqs - srqs);
+		if (BNXT_SW_RES_LMT(bp)) {
+			extra_qps = max_qps - l2_qps - qp1_qps;
+			extra_srqs = max_srqs - srqs;
+		} else {
+			extra_qps = min_t(u32, 65536,
+					  max_qps - l2_qps - qp1_qps);
+			/* allocate extra qps if fw supports RoCE fast qp
+			 * destroy feature
+			 */
+			extra_qps += fast_qpmd_qps;
+			extra_srqs = min_t(u32, 8192, max_srqs - srqs);
+		}
 		if (fast_qpmd_qps)
 			ena |= FUNC_BACKING_STORE_CFG_REQ_ENABLES_QP_FAST_QPMD;
 	}
@@ -9156,14 +9164,20 @@ static int bnxt_alloc_ctx_mem(struct bnxt *bp)
 		goto skip_rdma;
 
 	ctxm = &ctx->ctx_arr[BNXT_CTX_MRAV];
-	/* 128K extra is needed to accommodate static AH context
-	 * allocation by f/w.
-	 */
-	num_mr = min_t(u32, ctxm->max_entries / 2, 1024 * 256);
-	num_ah = min_t(u32, num_mr, 1024 * 128);
-	ctxm->split_entry_cnt = BNXT_CTX_MRAV_AV_SPLIT_ENTRY + 1;
-	if (!ctxm->mrav_av_entries || ctxm->mrav_av_entries > num_ah)
-		ctxm->mrav_av_entries = num_ah;
+	if (BNXT_SW_RES_LMT(bp) &&
+	    ctxm->split_entry_cnt == BNXT_CTX_MRAV_AV_SPLIT_ENTRY + 1) {
+		num_ah = ctxm->mrav_av_entries;
+		num_mr = ctxm->max_entries - num_ah;
+	} else {
+		/* 128K extra is needed to accommodate static AH context
+		 * allocation by f/w.
+		 */
+		num_mr = min_t(u32, ctxm->max_entries / 2, 1024 * 256);
+		num_ah = min_t(u32, num_mr, 1024 * 128);
+		ctxm->split_entry_cnt = BNXT_CTX_MRAV_AV_SPLIT_ENTRY + 1;
+		if (!ctxm->mrav_av_entries || ctxm->mrav_av_entries > num_ah)
+			ctxm->mrav_av_entries = num_ah;
+	}
 
 	rc = bnxt_setup_ctxm_pg_tbls(bp, ctxm, num_mr + num_ah, 2);
 	if (rc)
@@ -9470,6 +9484,9 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
 		bp->flags |= BNXT_FLAG_UDP_GSO_CAP;
 	if (flags_ext2 & FUNC_QCAPS_RESP_FLAGS_EXT2_TX_PKT_TS_CMPL_SUPPORTED)
 		bp->fw_cap |= BNXT_FW_CAP_TX_TS_CMP;
+	if (flags_ext2 &
+	    FUNC_QCAPS_RESP_FLAGS_EXT2_SW_MAX_RESOURCE_LIMITS_SUPPORTED)
+		bp->fw_cap |= BNXT_FW_CAP_SW_MAX_RESOURCE_LIMITS;
 	if (BNXT_PF(bp) &&
 	    (flags_ext2 & FUNC_QCAPS_RESP_FLAGS_EXT2_ROCE_VF_RESOURCE_MGMT_SUPPORTED))
 		bp->fw_cap |= BNXT_FW_CAP_ROCE_VF_RESC_MGMT_SUPPORTED;
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
index 7df7a2233307..3e20d200da62 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
@@ -2482,6 +2482,7 @@ struct bnxt {
 	#define BNXT_FW_CAP_CFA_NTUPLE_RX_EXT_IP_PROTO	BIT_ULL(38)
 	#define BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX_V3	BIT_ULL(39)
 	#define BNXT_FW_CAP_VNIC_RE_FLUSH		BIT_ULL(40)
+	#define BNXT_FW_CAP_SW_MAX_RESOURCE_LIMITS	BIT_ULL(41)
 
 	u32			fw_dbg_cap;
 
@@ -2501,6 +2502,8 @@ struct bnxt {
 	((bp)->fw_cap & BNXT_FW_CAP_ENABLE_RDMA_SRIOV)
 #define BNXT_ROCE_VF_RESC_CAP(bp)	\
 	((bp)->fw_cap & BNXT_FW_CAP_ROCE_VF_RESC_MGMT_SUPPORTED)
+#define BNXT_SW_RES_LMT(bp)		\
+	((bp)->fw_cap & BNXT_FW_CAP_SW_MAX_RESOURCE_LIMITS)
 
 	u32			hwrm_spec_code;
 	u16			hwrm_cmd_seq;
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c
index b771c84cdd89..94c6a0928ca0 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c
@@ -416,6 +416,8 @@ static void bnxt_set_edev_info(struct bnxt_en_dev *edev, struct bnxt *bp)
 		edev->flags |= BNXT_EN_FLAG_VF;
 	if (BNXT_ROCE_VF_RESC_CAP(bp))
 		edev->flags |= BNXT_EN_FLAG_ROCE_VF_RES_MGMT;
+	if (BNXT_SW_RES_LMT(bp))
+		edev->flags |= BNXT_EN_FLAG_SW_RES_LMT;
 
 	edev->chip_num = bp->chip_num;
 	edev->hw_ring_stats_size = bp->hw_ring_stats_size;
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.h
index 5d6aac60f236..54ad9f8273d7 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.h
@@ -65,6 +65,8 @@ struct bnxt_en_dev {
 	#define BNXT_EN_FLAG_VF			0x10
 #define BNXT_EN_VF(edev)	((edev)->flags & BNXT_EN_FLAG_VF)
 	#define BNXT_EN_FLAG_ROCE_VF_RES_MGMT	0x20
+	#define BNXT_EN_FLAG_SW_RES_LMT		0x40
+#define BNXT_EN_SW_RES_LMT(edev) ((edev)->flags & BNXT_EN_FLAG_SW_RES_LMT)
 
 	struct bnxt_ulp			*ulp_tbl;
 	int				l2_db_size;	/* Doorbell BAR size in
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH net-next 2/6] bnxt_en: Do not allow ethtool -m on an untrusted VF
  2024-12-15 20:59 [PATCH net-next 0/6] bnxt_en: Driver update Michael Chan
  2024-12-15 20:59 ` [PATCH net-next 1/6] bnxt_en: Use FW defined resource limits for RoCE Michael Chan
@ 2024-12-15 20:59 ` Michael Chan
  2024-12-16 14:25   ` kernel test robot
  2024-12-16 14:50   ` Ido Schimmel
  2024-12-15 20:59 ` [PATCH net-next 3/6] bnxt_en: Skip PHY loopback ethtool selftest if unsupported by FW Michael Chan
                   ` (3 subsequent siblings)
  5 siblings, 2 replies; 10+ messages in thread
From: Michael Chan @ 2024-12-15 20:59 UTC (permalink / raw)
  To: davem
  Cc: netdev, edumazet, kuba, pabeni, andrew+netdev, pavan.chebbi,
	andrew.gospodarek, Kalesh AP

Block all ethtool module operations on an untrusted VF.  The firmware
won't allow it and will return error.

Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c         | 4 ++++
 drivers/net/ethernet/broadcom/bnxt/bnxt.h         | 5 +++++
 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 9 +++++++++
 3 files changed, 18 insertions(+)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 469352ac1f7e..631dbda725ab 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -8284,6 +8284,10 @@ static int bnxt_hwrm_func_qcfg(struct bnxt *bp)
 		struct bnxt_vf_info *vf = &bp->vf;
 
 		vf->vlan = le16_to_cpu(resp->vlan) & VLAN_VID_MASK;
+		if (flags & FUNC_QCFG_RESP_FLAGS_TRUSTED_VF)
+			vf->flags |= BNXT_VF_TRUST;
+		else
+			vf->flags &= ~BNXT_VF_TRUST;
 	} else {
 		bp->pf.registered_vfs = le16_to_cpu(resp->registered_vfs);
 	}
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
index 3e20d200da62..d5e81e008ab5 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
@@ -2270,6 +2270,11 @@ struct bnxt {
 
 #define BNXT_PF(bp)		(!((bp)->flags & BNXT_FLAG_VF))
 #define BNXT_VF(bp)		((bp)->flags & BNXT_FLAG_VF)
+#ifdef CONFIG_BNXT_SRIOV
+#define	BNXT_VF_IS_TRUSTED(bp)	((bp)->vf.flags & BNXT_VF_TRUST)
+#else
+#define	BNXT_VF_IS_TRUSTED(bp)	0
+#endif
 #define BNXT_NPAR(bp)		((bp)->port_partition_type)
 #define BNXT_MH(bp)		((bp)->flags & BNXT_FLAG_MULTI_HOST)
 #define BNXT_SINGLE_PF(bp)	(BNXT_PF(bp) && !BNXT_NPAR(bp) && !BNXT_MH(bp))
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
index d87681d71106..8de488f7cb6b 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
@@ -4375,6 +4375,9 @@ static int bnxt_get_module_info(struct net_device *dev,
 	struct bnxt *bp = netdev_priv(dev);
 	int rc;
 
+	if (BNXT_VF(bp) && !BNXT_VF_IS_TRUSTED(bp))
+		return -EPERM;
+
 	/* No point in going further if phy status indicates
 	 * module is not inserted or if it is powered down or
 	 * if it is of type 10GBase-T
@@ -4426,6 +4429,9 @@ static int bnxt_get_module_eeprom(struct net_device *dev,
 	u16  start = eeprom->offset, length = eeprom->len;
 	int rc = 0;
 
+	if (BNXT_VF(bp) && !BNXT_VF_IS_TRUSTED(bp))
+		return -EPERM;
+
 	memset(data, 0, eeprom->len);
 
 	/* Read A0 portion of the EEPROM */
@@ -4480,6 +4486,9 @@ static int bnxt_get_module_eeprom_by_page(struct net_device *dev,
 	struct bnxt *bp = netdev_priv(dev);
 	int rc;
 
+	if (BNXT_VF(bp) && !BNXT_VF_IS_TRUSTED(bp))
+		return -EPERM;
+
 	rc = bnxt_get_module_status(bp, extack);
 	if (rc)
 		return rc;
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH net-next 3/6] bnxt_en: Skip PHY loopback ethtool selftest if unsupported by FW
  2024-12-15 20:59 [PATCH net-next 0/6] bnxt_en: Driver update Michael Chan
  2024-12-15 20:59 ` [PATCH net-next 1/6] bnxt_en: Use FW defined resource limits for RoCE Michael Chan
  2024-12-15 20:59 ` [PATCH net-next 2/6] bnxt_en: Do not allow ethtool -m on an untrusted VF Michael Chan
@ 2024-12-15 20:59 ` Michael Chan
  2024-12-15 20:59 ` [PATCH net-next 4/6] bnxt_en: Skip MAC loopback selftest if it is " Michael Chan
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Michael Chan @ 2024-12-15 20:59 UTC (permalink / raw)
  To: davem
  Cc: netdev, edumazet, kuba, pabeni, andrew+netdev, pavan.chebbi,
	andrew.gospodarek, Kalesh AP

Skip PHY loopback selftest if firmware advertises that it is unsupported
in the HWRM_PORT_PHY_QCAPS call.  Only show PHY loopback test result to
be 0 if the test has run and passes.  Do the same for external loopback
to be consistent.

Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
 .../net/ethernet/broadcom/bnxt/bnxt_ethtool.c  | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
index 8de488f7cb6b..e5904f2d56df 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
@@ -4911,20 +4911,26 @@ static void bnxt_self_test(struct net_device *dev, struct ethtool_test *etest,
 			buf[BNXT_MACLPBK_TEST_IDX] = 0;
 
 		bnxt_hwrm_mac_loopback(bp, false);
+		buf[BNXT_PHYLPBK_TEST_IDX] = 1;
+		if (bp->phy_flags & BNXT_PHY_FL_NO_PHY_LPBK)
+			goto skip_phy_loopback;
+
 		bnxt_hwrm_phy_loopback(bp, true, false);
 		msleep(1000);
-		if (bnxt_run_loopback(bp)) {
-			buf[BNXT_PHYLPBK_TEST_IDX] = 1;
+		if (bnxt_run_loopback(bp))
 			etest->flags |= ETH_TEST_FL_FAILED;
-		}
+		else
+			buf[BNXT_PHYLPBK_TEST_IDX] = 0;
+skip_phy_loopback:
+		buf[BNXT_EXTLPBK_TEST_IDX] = 1;
 		if (do_ext_lpbk) {
 			etest->flags |= ETH_TEST_FL_EXTERNAL_LB_DONE;
 			bnxt_hwrm_phy_loopback(bp, true, true);
 			msleep(1000);
-			if (bnxt_run_loopback(bp)) {
-				buf[BNXT_EXTLPBK_TEST_IDX] = 1;
+			if (bnxt_run_loopback(bp))
 				etest->flags |= ETH_TEST_FL_FAILED;
-			}
+			else
+				buf[BNXT_EXTLPBK_TEST_IDX] = 0;
 		}
 		bnxt_hwrm_phy_loopback(bp, false, false);
 		bnxt_half_close_nic(bp);
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH net-next 4/6] bnxt_en: Skip MAC loopback selftest if it is unsupported by FW
  2024-12-15 20:59 [PATCH net-next 0/6] bnxt_en: Driver update Michael Chan
                   ` (2 preceding siblings ...)
  2024-12-15 20:59 ` [PATCH net-next 3/6] bnxt_en: Skip PHY loopback ethtool selftest if unsupported by FW Michael Chan
@ 2024-12-15 20:59 ` Michael Chan
  2024-12-16  6:56   ` Michal Swiatkowski
  2024-12-15 20:59 ` [PATCH net-next 5/6] bnxt_en: Skip reading PXP registers during ethtool -d if unsupported Michael Chan
  2024-12-15 20:59 ` [PATCH net-next 6/6] MAINTAINERS: bnxt_en: Add Pavan Chebbi as co-maintainer Michael Chan
  5 siblings, 1 reply; 10+ messages in thread
From: Michael Chan @ 2024-12-15 20:59 UTC (permalink / raw)
  To: davem
  Cc: netdev, edumazet, kuba, pabeni, andrew+netdev, pavan.chebbi,
	andrew.gospodarek, Kalesh AP

Call the new HWRM_PORT_MAC_QCAPS to check if mac loopback is
supported.  Skip the MAC loopback ethtool self test if it is
not supported.

Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c     | 29 +++++++++++++++++++
 drivers/net/ethernet/broadcom/bnxt/bnxt.h     |  5 ++++
 .../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 11 ++++---
 3 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 631dbda725ab..5a19146d6902 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -11551,6 +11551,31 @@ static int bnxt_hwrm_phy_qcaps(struct bnxt *bp)
 	return rc;
 }
 
+static int bnxt_hwrm_mac_qcaps(struct bnxt *bp)
+{
+	struct hwrm_port_mac_qcaps_output *resp;
+	struct hwrm_port_mac_qcaps_input *req;
+	int rc;
+
+	if (bp->hwrm_spec_code < 0x10a03)
+		return 0;
+
+	rc = hwrm_req_init(bp, req, HWRM_PORT_MAC_QCAPS);
+	if (rc)
+		return rc;
+
+	resp = hwrm_req_hold(bp, req);
+	rc = hwrm_req_send_silent(bp, req);
+	if (rc)
+		goto hwrm_mac_qcaps_exit;
+
+	bp->mac_flags = resp->flags;
+
+hwrm_mac_qcaps_exit:
+	hwrm_req_drop(bp, req);
+	return rc;
+}
+
 static bool bnxt_support_dropped(u16 advertising, u16 supported)
 {
 	u16 diff = advertising ^ supported;
@@ -15679,6 +15704,10 @@ static int bnxt_probe_phy(struct bnxt *bp, bool fw_dflt)
 		bp->dev->priv_flags |= IFF_SUPP_NOFCS;
 	else
 		bp->dev->priv_flags &= ~IFF_SUPP_NOFCS;
+
+	bp->mac_flags = 0;
+	bnxt_hwrm_mac_qcaps(bp);
+
 	if (!fw_dflt)
 		return 0;
 
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
index d5e81e008ab5..094c9e95b463 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
@@ -2668,6 +2668,11 @@ struct bnxt {
 #define BNXT_PHY_FL_BANK_SEL		(PORT_PHY_QCAPS_RESP_FLAGS2_BANK_ADDR_SUPPORTED << 8)
 #define BNXT_PHY_FL_SPEEDS2		(PORT_PHY_QCAPS_RESP_FLAGS2_SPEEDS2_SUPPORTED << 8)
 
+	/* copied from flags in hwrm_port_mac_qcaps_output */
+	u8			mac_flags;
+#define BNXT_MAC_FL_NO_MAC_LPBK		\
+	PORT_MAC_QCAPS_RESP_FLAGS_LOCAL_LPBK_NOT_SUPPORTED
+
 	u8			num_tests;
 	struct bnxt_test_info	*test_info;
 
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
index e5904f2d56df..3bc2bd732021 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
@@ -4896,21 +4896,24 @@ static void bnxt_self_test(struct net_device *dev, struct ethtool_test *etest,
 		bnxt_close_nic(bp, true, false);
 		bnxt_run_fw_tests(bp, test_mask, &test_results);
 
-		buf[BNXT_MACLPBK_TEST_IDX] = 1;
-		bnxt_hwrm_mac_loopback(bp, true);
-		msleep(250);
 		rc = bnxt_half_open_nic(bp);
 		if (rc) {
-			bnxt_hwrm_mac_loopback(bp, false);
 			etest->flags |= ETH_TEST_FL_FAILED;
 			return;
 		}
+		buf[BNXT_MACLPBK_TEST_IDX] = 1;
+		if (bp->mac_flags & BNXT_MAC_FL_NO_MAC_LPBK)
+			goto skip_mac_loopback;
+
+		bnxt_hwrm_mac_loopback(bp, true);
+		msleep(250);
 		if (bnxt_run_loopback(bp))
 			etest->flags |= ETH_TEST_FL_FAILED;
 		else
 			buf[BNXT_MACLPBK_TEST_IDX] = 0;
 
 		bnxt_hwrm_mac_loopback(bp, false);
+skip_mac_loopback:
 		buf[BNXT_PHYLPBK_TEST_IDX] = 1;
 		if (bp->phy_flags & BNXT_PHY_FL_NO_PHY_LPBK)
 			goto skip_phy_loopback;
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH net-next 5/6] bnxt_en: Skip reading PXP registers during ethtool -d if unsupported
  2024-12-15 20:59 [PATCH net-next 0/6] bnxt_en: Driver update Michael Chan
                   ` (3 preceding siblings ...)
  2024-12-15 20:59 ` [PATCH net-next 4/6] bnxt_en: Skip MAC loopback selftest if it is " Michael Chan
@ 2024-12-15 20:59 ` Michael Chan
  2024-12-15 20:59 ` [PATCH net-next 6/6] MAINTAINERS: bnxt_en: Add Pavan Chebbi as co-maintainer Michael Chan
  5 siblings, 0 replies; 10+ messages in thread
From: Michael Chan @ 2024-12-15 20:59 UTC (permalink / raw)
  To: davem
  Cc: netdev, edumazet, kuba, pabeni, andrew+netdev, pavan.chebbi,
	andrew.gospodarek, Ajit Khaparde, Kalesh AP, Somnath Kotur

Newer firmware does not allow reading the PXP registers during
ethtool -d, so skip the firmware call in that case.  Userspace
(bnxt.c) always expects the register block to be populated so
zeroes will be returned instead.

Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
index 3bc2bd732021..4c7ef1a67bcf 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
@@ -2050,7 +2050,8 @@ static void bnxt_get_regs(struct net_device *dev, struct ethtool_regs *regs,
 	int rc;
 
 	regs->version = 0;
-	bnxt_dbg_hwrm_rd_reg(bp, 0, BNXT_PXP_REG_LEN / 4, _p);
+	if (!(bp->fw_dbg_cap & DBG_QCAPS_RESP_FLAGS_REG_ACCESS_RESTRICTED))
+		bnxt_dbg_hwrm_rd_reg(bp, 0, BNXT_PXP_REG_LEN / 4, _p);
 
 	if (!(bp->fw_cap & BNXT_FW_CAP_PCIE_STATS_SUPPORTED))
 		return;
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH net-next 6/6] MAINTAINERS: bnxt_en: Add Pavan Chebbi as co-maintainer
  2024-12-15 20:59 [PATCH net-next 0/6] bnxt_en: Driver update Michael Chan
                   ` (4 preceding siblings ...)
  2024-12-15 20:59 ` [PATCH net-next 5/6] bnxt_en: Skip reading PXP registers during ethtool -d if unsupported Michael Chan
@ 2024-12-15 20:59 ` Michael Chan
  5 siblings, 0 replies; 10+ messages in thread
From: Michael Chan @ 2024-12-15 20:59 UTC (permalink / raw)
  To: davem
  Cc: netdev, edumazet, kuba, pabeni, andrew+netdev, pavan.chebbi,
	andrew.gospodarek

Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
 MAINTAINERS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 6cced90772fc..2c73a3aacafb 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4611,6 +4611,7 @@ F:	drivers/net/ethernet/broadcom/bnx2x/
 
 BROADCOM BNXT_EN 50 GIGABIT ETHERNET DRIVER
 M:	Michael Chan <michael.chan@broadcom.com>
+M:	Pavan Chebbi <pavan.chebbi@broadcom.com>
 L:	netdev@vger.kernel.org
 S:	Supported
 F:	drivers/firmware/broadcom/tee_bnxt_fw.c
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH net-next 4/6] bnxt_en: Skip MAC loopback selftest if it is unsupported by FW
  2024-12-15 20:59 ` [PATCH net-next 4/6] bnxt_en: Skip MAC loopback selftest if it is " Michael Chan
@ 2024-12-16  6:56   ` Michal Swiatkowski
  0 siblings, 0 replies; 10+ messages in thread
From: Michal Swiatkowski @ 2024-12-16  6:56 UTC (permalink / raw)
  To: Michael Chan
  Cc: davem, netdev, edumazet, kuba, pabeni, andrew+netdev,
	pavan.chebbi, andrew.gospodarek, Kalesh AP

On Sun, Dec 15, 2024 at 12:59:41PM -0800, Michael Chan wrote:
> Call the new HWRM_PORT_MAC_QCAPS to check if mac loopback is
> supported.  Skip the MAC loopback ethtool self test if it is
> not supported.
> 
> Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
> Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
> Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
> Signed-off-by: Michael Chan <michael.chan@broadcom.com>
> ---
>  drivers/net/ethernet/broadcom/bnxt/bnxt.c     | 29 +++++++++++++++++++
>  drivers/net/ethernet/broadcom/bnxt/bnxt.h     |  5 ++++
>  .../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 11 ++++---
>  3 files changed, 41 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
> index 631dbda725ab..5a19146d6902 100644
> --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
> +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
> @@ -11551,6 +11551,31 @@ static int bnxt_hwrm_phy_qcaps(struct bnxt *bp)
>  	return rc;
>  }
>  
> +static int bnxt_hwrm_mac_qcaps(struct bnxt *bp)
> +{
> +	struct hwrm_port_mac_qcaps_output *resp;
> +	struct hwrm_port_mac_qcaps_input *req;
> +	int rc;
> +
> +	if (bp->hwrm_spec_code < 0x10a03)
> +		return 0;
> +
> +	rc = hwrm_req_init(bp, req, HWRM_PORT_MAC_QCAPS);
> +	if (rc)
> +		return rc;
> +
> +	resp = hwrm_req_hold(bp, req);
> +	rc = hwrm_req_send_silent(bp, req);
> +	if (rc)
> +		goto hwrm_mac_qcaps_exit;
> +
> +	bp->mac_flags = resp->flags;
> +
> +hwrm_mac_qcaps_exit:
> +	hwrm_req_drop(bp, req);
> +	return rc;
> +}
> +
>  static bool bnxt_support_dropped(u16 advertising, u16 supported)
>  {
>  	u16 diff = advertising ^ supported;
> @@ -15679,6 +15704,10 @@ static int bnxt_probe_phy(struct bnxt *bp, bool fw_dflt)
>  		bp->dev->priv_flags |= IFF_SUPP_NOFCS;
>  	else
>  		bp->dev->priv_flags &= ~IFF_SUPP_NOFCS;
> +
> +	bp->mac_flags = 0;
> +	bnxt_hwrm_mac_qcaps(bp);
The value returned from the function is ignored. Change it to return
void, or do sth here with returned value.

Thanks
> +
>  	if (!fw_dflt)
>  		return 0;
>  
> diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
> index d5e81e008ab5..094c9e95b463 100644
> --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
> +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
> @@ -2668,6 +2668,11 @@ struct bnxt {
>  #define BNXT_PHY_FL_BANK_SEL		(PORT_PHY_QCAPS_RESP_FLAGS2_BANK_ADDR_SUPPORTED << 8)
>  #define BNXT_PHY_FL_SPEEDS2		(PORT_PHY_QCAPS_RESP_FLAGS2_SPEEDS2_SUPPORTED << 8)
>  
> +	/* copied from flags in hwrm_port_mac_qcaps_output */
> +	u8			mac_flags;
> +#define BNXT_MAC_FL_NO_MAC_LPBK		\
> +	PORT_MAC_QCAPS_RESP_FLAGS_LOCAL_LPBK_NOT_SUPPORTED
> +
>  	u8			num_tests;
>  	struct bnxt_test_info	*test_info;
>  
> diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
> index e5904f2d56df..3bc2bd732021 100644
> --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
> +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
> @@ -4896,21 +4896,24 @@ static void bnxt_self_test(struct net_device *dev, struct ethtool_test *etest,
>  		bnxt_close_nic(bp, true, false);
>  		bnxt_run_fw_tests(bp, test_mask, &test_results);
>  
> -		buf[BNXT_MACLPBK_TEST_IDX] = 1;
> -		bnxt_hwrm_mac_loopback(bp, true);
> -		msleep(250);
>  		rc = bnxt_half_open_nic(bp);
>  		if (rc) {
> -			bnxt_hwrm_mac_loopback(bp, false);
>  			etest->flags |= ETH_TEST_FL_FAILED;
>  			return;
>  		}
> +		buf[BNXT_MACLPBK_TEST_IDX] = 1;
> +		if (bp->mac_flags & BNXT_MAC_FL_NO_MAC_LPBK)
> +			goto skip_mac_loopback;
> +
> +		bnxt_hwrm_mac_loopback(bp, true);
> +		msleep(250);
>  		if (bnxt_run_loopback(bp))
>  			etest->flags |= ETH_TEST_FL_FAILED;
>  		else
>  			buf[BNXT_MACLPBK_TEST_IDX] = 0;
>  
>  		bnxt_hwrm_mac_loopback(bp, false);
> +skip_mac_loopback:
>  		buf[BNXT_PHYLPBK_TEST_IDX] = 1;
>  		if (bp->phy_flags & BNXT_PHY_FL_NO_PHY_LPBK)
>  			goto skip_phy_loopback;
> -- 
> 2.30.1

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH net-next 2/6] bnxt_en: Do not allow ethtool -m on an untrusted VF
  2024-12-15 20:59 ` [PATCH net-next 2/6] bnxt_en: Do not allow ethtool -m on an untrusted VF Michael Chan
@ 2024-12-16 14:25   ` kernel test robot
  2024-12-16 14:50   ` Ido Schimmel
  1 sibling, 0 replies; 10+ messages in thread
From: kernel test robot @ 2024-12-16 14:25 UTC (permalink / raw)
  To: Michael Chan, davem
  Cc: llvm, oe-kbuild-all, netdev, edumazet, kuba, pabeni,
	andrew+netdev, pavan.chebbi, andrew.gospodarek, Kalesh AP

Hi Michael,

kernel test robot noticed the following build warnings:

[auto build test WARNING on net-next/main]

url:    https://github.com/intel-lab-lkp/linux/commits/Michael-Chan/bnxt_en-Use-FW-defined-resource-limits-for-RoCE/20241216-050303
base:   net-next/main
patch link:    https://lore.kernel.org/r/20241215205943.2341612-3-michael.chan%40broadcom.com
patch subject: [PATCH net-next 2/6] bnxt_en: Do not allow ethtool -m on an untrusted VF
config: riscv-randconfig-002-20241216 (https://download.01.org/0day-ci/archive/20241216/202412162242.yQ3MVnZ5-lkp@intel.com/config)
compiler: clang version 15.0.7 (https://github.com/llvm/llvm-project 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241216/202412162242.yQ3MVnZ5-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202412162242.yQ3MVnZ5-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/net/ethernet/broadcom/bnxt/bnxt.c:8287:7: warning: variable 'flags' is uninitialized when used here [-Wuninitialized]
                   if (flags & FUNC_QCFG_RESP_FLAGS_TRUSTED_VF)
                       ^~~~~
   drivers/net/ethernet/broadcom/bnxt/bnxt.c:8269:11: note: initialize the variable 'flags' to silence this warning
           u16 flags;
                    ^
                     = 0
   1 warning generated.


vim +/flags +8287 drivers/net/ethernet/broadcom/bnxt/bnxt.c

  8264	
  8265	static int bnxt_hwrm_func_qcfg(struct bnxt *bp)
  8266	{
  8267		struct hwrm_func_qcfg_output *resp;
  8268		struct hwrm_func_qcfg_input *req;
  8269		u16 flags;
  8270		int rc;
  8271	
  8272		rc = hwrm_req_init(bp, req, HWRM_FUNC_QCFG);
  8273		if (rc)
  8274			return rc;
  8275	
  8276		req->fid = cpu_to_le16(0xffff);
  8277		resp = hwrm_req_hold(bp, req);
  8278		rc = hwrm_req_send(bp, req);
  8279		if (rc)
  8280			goto func_qcfg_exit;
  8281	
  8282	#ifdef CONFIG_BNXT_SRIOV
  8283		if (BNXT_VF(bp)) {
  8284			struct bnxt_vf_info *vf = &bp->vf;
  8285	
  8286			vf->vlan = le16_to_cpu(resp->vlan) & VLAN_VID_MASK;
> 8287			if (flags & FUNC_QCFG_RESP_FLAGS_TRUSTED_VF)
  8288				vf->flags |= BNXT_VF_TRUST;
  8289			else
  8290				vf->flags &= ~BNXT_VF_TRUST;
  8291		} else {
  8292			bp->pf.registered_vfs = le16_to_cpu(resp->registered_vfs);
  8293		}
  8294	#endif
  8295		flags = le16_to_cpu(resp->flags);
  8296		if (flags & (FUNC_QCFG_RESP_FLAGS_FW_DCBX_AGENT_ENABLED |
  8297			     FUNC_QCFG_RESP_FLAGS_FW_LLDP_AGENT_ENABLED)) {
  8298			bp->fw_cap |= BNXT_FW_CAP_LLDP_AGENT;
  8299			if (flags & FUNC_QCFG_RESP_FLAGS_FW_DCBX_AGENT_ENABLED)
  8300				bp->fw_cap |= BNXT_FW_CAP_DCBX_AGENT;
  8301		}
  8302		if (BNXT_PF(bp) && (flags & FUNC_QCFG_RESP_FLAGS_MULTI_HOST))
  8303			bp->flags |= BNXT_FLAG_MULTI_HOST;
  8304	
  8305		if (flags & FUNC_QCFG_RESP_FLAGS_RING_MONITOR_ENABLED)
  8306			bp->fw_cap |= BNXT_FW_CAP_RING_MONITOR;
  8307	
  8308		if (flags & FUNC_QCFG_RESP_FLAGS_ENABLE_RDMA_SRIOV)
  8309			bp->fw_cap |= BNXT_FW_CAP_ENABLE_RDMA_SRIOV;
  8310	
  8311		switch (resp->port_partition_type) {
  8312		case FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_0:
  8313		case FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_5:
  8314		case FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR2_0:
  8315			bp->port_partition_type = resp->port_partition_type;
  8316			break;
  8317		}
  8318		if (bp->hwrm_spec_code < 0x10707 ||
  8319		    resp->evb_mode == FUNC_QCFG_RESP_EVB_MODE_VEB)
  8320			bp->br_mode = BRIDGE_MODE_VEB;
  8321		else if (resp->evb_mode == FUNC_QCFG_RESP_EVB_MODE_VEPA)
  8322			bp->br_mode = BRIDGE_MODE_VEPA;
  8323		else
  8324			bp->br_mode = BRIDGE_MODE_UNDEF;
  8325	
  8326		bp->max_mtu = le16_to_cpu(resp->max_mtu_configured);
  8327		if (!bp->max_mtu)
  8328			bp->max_mtu = BNXT_MAX_MTU;
  8329	
  8330		if (bp->db_size)
  8331			goto func_qcfg_exit;
  8332	
  8333		bp->db_offset = le16_to_cpu(resp->legacy_l2_db_size_kb) * 1024;
  8334		if (BNXT_CHIP_P5(bp)) {
  8335			if (BNXT_PF(bp))
  8336				bp->db_offset = DB_PF_OFFSET_P5;
  8337			else
  8338				bp->db_offset = DB_VF_OFFSET_P5;
  8339		}
  8340		bp->db_size = PAGE_ALIGN(le16_to_cpu(resp->l2_doorbell_bar_size_kb) *
  8341					 1024);
  8342		if (!bp->db_size || bp->db_size > pci_resource_len(bp->pdev, 2) ||
  8343		    bp->db_size <= bp->db_offset)
  8344			bp->db_size = pci_resource_len(bp->pdev, 2);
  8345	
  8346	func_qcfg_exit:
  8347		hwrm_req_drop(bp, req);
  8348		return rc;
  8349	}
  8350	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH net-next 2/6] bnxt_en: Do not allow ethtool -m on an untrusted VF
  2024-12-15 20:59 ` [PATCH net-next 2/6] bnxt_en: Do not allow ethtool -m on an untrusted VF Michael Chan
  2024-12-16 14:25   ` kernel test robot
@ 2024-12-16 14:50   ` Ido Schimmel
  1 sibling, 0 replies; 10+ messages in thread
From: Ido Schimmel @ 2024-12-16 14:50 UTC (permalink / raw)
  To: Michael Chan
  Cc: davem, netdev, edumazet, kuba, pabeni, andrew+netdev,
	pavan.chebbi, andrew.gospodarek, Kalesh AP

On Sun, Dec 15, 2024 at 12:59:39PM -0800, Michael Chan wrote:
> @@ -4480,6 +4486,9 @@ static int bnxt_get_module_eeprom_by_page(struct net_device *dev,
>  	struct bnxt *bp = netdev_priv(dev);
>  	int rc;
>  
> +	if (BNXT_VF(bp) && !BNXT_VF_IS_TRUSTED(bp))
> +		return -EPERM;
> +

Nit: You can use 'extack' here to help users understand why the
operation failed.

>  	rc = bnxt_get_module_status(bp, extack);
>  	if (rc)
>  		return rc;

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-12-16 14:50 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-15 20:59 [PATCH net-next 0/6] bnxt_en: Driver update Michael Chan
2024-12-15 20:59 ` [PATCH net-next 1/6] bnxt_en: Use FW defined resource limits for RoCE Michael Chan
2024-12-15 20:59 ` [PATCH net-next 2/6] bnxt_en: Do not allow ethtool -m on an untrusted VF Michael Chan
2024-12-16 14:25   ` kernel test robot
2024-12-16 14:50   ` Ido Schimmel
2024-12-15 20:59 ` [PATCH net-next 3/6] bnxt_en: Skip PHY loopback ethtool selftest if unsupported by FW Michael Chan
2024-12-15 20:59 ` [PATCH net-next 4/6] bnxt_en: Skip MAC loopback selftest if it is " Michael Chan
2024-12-16  6:56   ` Michal Swiatkowski
2024-12-15 20:59 ` [PATCH net-next 5/6] bnxt_en: Skip reading PXP registers during ethtool -d if unsupported Michael Chan
2024-12-15 20:59 ` [PATCH net-next 6/6] MAINTAINERS: bnxt_en: Add Pavan Chebbi as co-maintainer Michael Chan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).