[PATCH 1/1] common/sfc_efx/base: clear VADAPTER stats upon allocation

Ivan Malov ivan.malov at arknetworks.am
Mon Aug 24 13:26:47 CEST 2026


The probe-time clear in 'ef10_nic_probe' runs before the VADAPTER is
allocated and so cannot zero its counters. Add a complementary clear
to the point at which the VADAPTER is already in place, so that
VADAPTER statistics begin at zero for both PFs and VFs.

This change affects only Medford4 NICs within the 26.11 release, where
Medford4 VADAPTER statistics have been added in the first place.

Signed-off-by: Ivan Malov <ivan.malov at arknetworks.am>
Reviewed-by: Viacheslav Galaktionov <viacheslav.galaktionov at arknetworks.am>
Reviewed-by: Andy Moreton <andy.moreton at amd.com>
---
 drivers/common/sfc_efx/base/ef10_nic.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/drivers/common/sfc_efx/base/ef10_nic.c b/drivers/common/sfc_efx/base/ef10_nic.c
index 9af4259d38..954409ec90 100644
--- a/drivers/common/sfc_efx/base/ef10_nic.c
+++ b/drivers/common/sfc_efx/base/ef10_nic.c
@@ -2868,10 +2868,30 @@ ef10_nic_init(
 		if ((rc = ef10_upstream_port_vadaptor_alloc(enp)) != 0)
 			goto fail5;
 	}
+
+#if EFSYS_OPT_MAC_STATS
+	/*
+	 * Clear MAC statistics for the freshly allocated VADAPTER.
+	 * The probe-time wipe in 'ef10_nic_probe' predates the
+	 * allocation and cannot reach vadaptor-scoped counters;
+	 * do it here while 'en_vport_id' holds a valid value.
+	 */
+	rc = efx_mcdi_mac_stats_clear(enp);
+	if (rc != 0)
+		goto fail6;
+#endif
 	enp->en_nic_cfg.enc_mcdi_max_payload_length = MCDI_CTL_SDU_LEN_MAX_V2;
 
 	return (0);
 
+#if EFSYS_OPT_MAC_STATS
+fail6:
+	EFSYS_PROBE(fail6);
+	if (alloc_vadaptor != B_FALSE) {
+		(void) efx_mcdi_vadaptor_free(enp, enp->en_vport_id);
+		enp->en_vport_id = EVB_PORT_ID_NULL;
+	}
+#endif
 fail5:
 	EFSYS_PROBE(fail5);
 fail4:
-- 
2.47.3



More information about the dev mailing list