From: Ivan Malov <ivan.malov@arknetworks.am>
To: dev@dpdk.org
Cc: Andy Moreton <andy.moreton@amd.com>,
Viacheslav Galaktionov <viacheslav.galaktionov@arknetworks.am>,
Roman Zhukov <Roman.Zhukov@arknetworks.am>,
Pieter Jansen van Vuuren <pieter.jansen-van-vuuren@amd.com>,
Stephen Hemminger <stephen@networkplumber.org>,
Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Subject: [PATCH 3/3] common/sfc_efx/base: switch netport stats to use EVB port ID
Date: Tue, 11 Aug 2026 21:49:49 +0400 [thread overview]
Message-ID: <20260811174949.8993-4-ivan.malov@arknetworks.am> (raw)
In-Reply-To: <20260811174949.8993-1-ivan.malov@arknetworks.am>
From: Andy Moreton <andy.moreton@amd.com>
Support for VADAPTER stats requires passing the EVB port handle.
Use GET_NETPORT_STATISTICS_V2 to do that.
Also for clarity adjust the argument order for efx_np_mac_stats
to match the legacy efx_mcdi_mac_stats.
Signed-off-by: Andy Moreton <andy.moreton@amd.com>
Reviewed-by: Ivan Malov <ivan.malov@arknetworks.am>
Reviewed-by: Viacheslav Galaktionov <viacheslav.galaktionov@arknetworks.am>
---
drivers/common/sfc_efx/base/efx_impl.h | 3 ++-
drivers/common/sfc_efx/base/efx_mcdi.c | 2 +-
drivers/common/sfc_efx/base/efx_np.c | 15 ++++++++++++---
drivers/common/sfc_efx/base/medford4_mac.c | 12 +++++++-----
4 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/drivers/common/sfc_efx/base/efx_impl.h b/drivers/common/sfc_efx/base/efx_impl.h
index c91fbbb61b..6dc7ca870d 100644
--- a/drivers/common/sfc_efx/base/efx_impl.h
+++ b/drivers/common/sfc_efx/base/efx_impl.h
@@ -1988,8 +1988,9 @@ extern __checkReturn efx_rc_t
efx_np_mac_stats(
__in efx_nic_t *enp,
__in efx_np_handle_t nph,
- __in efx_stats_action_t action,
+ __in uint32_t vport_id,
__in_opt const efsys_mem_t *esmp,
+ __in efx_stats_action_t action,
__in uint16_t period_ms);
#endif /* EFSYS_OPT_MAC_STATS */
diff --git a/drivers/common/sfc_efx/base/efx_mcdi.c b/drivers/common/sfc_efx/base/efx_mcdi.c
index 8f14f38cdc..f8306460fa 100644
--- a/drivers/common/sfc_efx/base/efx_mcdi.c
+++ b/drivers/common/sfc_efx/base/efx_mcdi.c
@@ -2250,7 +2250,7 @@ efx_mcdi_mac_stats_clear(
if (efx_np_supported(enp) != B_FALSE) {
rc = efx_np_mac_stats(enp, epp->ep_np_handle,
- EFX_STATS_CLEAR, NULL, 0);
+ enp->en_vport_id, NULL, EFX_STATS_CLEAR, 0);
} else {
rc = efx_mcdi_mac_stats(enp, enp->en_vport_id, NULL,
EFX_STATS_CLEAR, 0);
diff --git a/drivers/common/sfc_efx/base/efx_np.c b/drivers/common/sfc_efx/base/efx_np.c
index 816affce2d..5f5ec86647 100644
--- a/drivers/common/sfc_efx/base/efx_np.c
+++ b/drivers/common/sfc_efx/base/efx_np.c
@@ -1603,12 +1603,13 @@ efx_np_mac_ctrl(
efx_np_mac_stats(
__in efx_nic_t *enp,
__in efx_np_handle_t nph,
- __in efx_stats_action_t action,
+ __in uint32_t vport_id,
__in_opt const efsys_mem_t *esmp,
+ __in efx_stats_action_t action,
__in uint16_t period_ms)
{
EFX_MCDI_DECLARE_BUF(payload,
- MC_CMD_GET_NETPORT_STATISTICS_IN_LEN,
+ MC_CMD_GET_NETPORT_STATISTICS_V2_IN_LEN,
MC_CMD_GET_NETPORT_STATISTICS_OUT_LENMIN);
boolean_t enable = (action == EFX_STATS_ENABLE_NOEVENTS);
boolean_t events = (action == EFX_STATS_ENABLE_EVENTS);
@@ -1619,7 +1620,7 @@ efx_np_mac_stats(
efx_rc_t rc;
req.emr_out_length = MC_CMD_GET_NETPORT_STATISTICS_OUT_LENMIN;
- req.emr_in_length = MC_CMD_GET_NETPORT_STATISTICS_IN_LEN;
+ req.emr_in_length = MC_CMD_GET_NETPORT_STATISTICS_V2_IN_LEN;
req.emr_cmd = MC_CMD_GET_NETPORT_STATISTICS;
req.emr_out_buf = payload;
req.emr_in_buf = payload;
@@ -1661,6 +1662,14 @@ efx_np_mac_stats(
MCDI_IN_SET_DWORD(req, GET_NETPORT_STATISTICS_IN_DMA_LEN, sz);
}
+ /*
+ * NOTE: Do not use EVB_PORT_ID_ASSIGNED when disabling periodic stats,
+ * as this may fail (and leave periodic DMA enabled) if the
+ * vadapter has already been deleted.
+ */
+ MCDI_IN_SET_DWORD(req, GET_NETPORT_STATISTICS_V2_IN_PORT_ID,
+ (disable ? EVB_PORT_ID_NULL : vport_id));
+
efx_mcdi_execute(enp, &req);
if (req.emr_rc != 0) {
diff --git a/drivers/common/sfc_efx/base/medford4_mac.c b/drivers/common/sfc_efx/base/medford4_mac.c
index 8ef84c69c6..b6000cf6b9 100644
--- a/drivers/common/sfc_efx/base/medford4_mac.c
+++ b/drivers/common/sfc_efx/base/medford4_mac.c
@@ -172,8 +172,8 @@ medford4_mac_stats_upload(
efx_port_t *epp = &(enp->en_port);
efx_rc_t rc;
- rc = efx_np_mac_stats(enp,
- epp->ep_np_handle, EFX_STATS_UPLOAD, esmp, 0);
+ rc = efx_np_mac_stats(enp, epp->ep_np_handle, enp->en_vport_id,
+ esmp, EFX_STATS_UPLOAD, 0);
if (rc != 0)
goto fail1;
@@ -196,13 +196,15 @@ medford4_mac_stats_periodic(
if (period_ms == 0) {
rc = efx_np_mac_stats(enp, epp->ep_np_handle,
- EFX_STATS_DISABLE, NULL, 0);
+ enp->en_vport_id, NULL, EFX_STATS_DISABLE, 0);
} else if (events != B_FALSE) {
rc = efx_np_mac_stats(enp, epp->ep_np_handle,
- EFX_STATS_ENABLE_EVENTS, esmp, period_ms);
+ enp->en_vport_id, esmp, EFX_STATS_ENABLE_EVENTS,
+ period_ms);
} else {
rc = efx_np_mac_stats(enp, epp->ep_np_handle,
- EFX_STATS_ENABLE_NOEVENTS, esmp, period_ms);
+ enp->en_vport_id, esmp, EFX_STATS_ENABLE_NOEVENTS,
+ period_ms);
}
if (rc != 0)
--
2.47.3
next prev parent reply other threads:[~2026-08-11 17:50 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-11 17:49 [PATCH 0/3] common/sfc_efx/base: add VADAPTER statistics for Medford4 Ivan Malov
2026-08-11 17:49 ` [PATCH 1/3] common/sfc_efx/base: update MCDI headers Ivan Malov
2026-08-11 17:49 ` [PATCH 2/3] common/sfc_efx/base: add support for VADAPTER statistics IDs Ivan Malov
2026-08-11 17:49 ` Ivan Malov [this message]
2026-08-11 20:31 ` [PATCH 0/3] common/sfc_efx/base: add VADAPTER statistics for Medford4 Stephen Hemminger
2026-08-12 17:10 ` [PATCH v2 " Ivan Malov
2026-08-12 17:10 ` [PATCH v2 1/3] common/sfc_efx/base: update MCDI headers Ivan Malov
2026-08-12 17:10 ` [PATCH v2 2/3] common/sfc_efx/base: add support for VADAPTER statistics IDs Ivan Malov
2026-08-12 17:10 ` [PATCH v2 3/3] common/sfc_efx/base: switch netport stats to use EVB port ID Ivan Malov
2026-08-16 3:28 ` [PATCH v2 0/3] common/sfc_efx/base: add VADAPTER statistics for Medford4 Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260811174949.8993-4-ivan.malov@arknetworks.am \
--to=ivan.malov@arknetworks.am \
--cc=Roman.Zhukov@arknetworks.am \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=andy.moreton@amd.com \
--cc=dev@dpdk.org \
--cc=pieter.jansen-van-vuuren@amd.com \
--cc=stephen@networkplumber.org \
--cc=viacheslav.galaktionov@arknetworks.am \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.