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 4/6] common/sfc_efx/base: deny tuning FCS and flow control to VFs
Date: Tue, 11 Aug 2026 21:50:23 +0400 [thread overview]
Message-ID: <20260811175025.9019-5-ivan.malov@arknetworks.am> (raw)
In-Reply-To: <20260811175025.9019-1-ivan.malov@arknetworks.am>
Medford4 VFs can configure MAC settings via the netport MCDI,
but controlling FCS stripping and setting flow control mode
are off limits. Express all this in code to allow the DPDK
driver to start and forbid changes to FCS and flow control.
For what it's worth, changing MTU is allowed on VFs, but
the value must be less than or equal to the PF's MTU.
Signed-off-by: Ivan Malov <ivan.malov@arknetworks.am>
Reviewed-by: Andy Moreton <andy.moreton@amd.com>
---
drivers/common/sfc_efx/base/efx_np.c | 41 +++++++++++++++++++++++-----
1 file changed, 34 insertions(+), 7 deletions(-)
diff --git a/drivers/common/sfc_efx/base/efx_np.c b/drivers/common/sfc_efx/base/efx_np.c
index 1563fbae37..6d9c62fcda 100644
--- a/drivers/common/sfc_efx/base/efx_np.c
+++ b/drivers/common/sfc_efx/base/efx_np.c
@@ -1548,6 +1548,7 @@ efx_np_mac_ctrl(
__in efx_np_handle_t nph,
__in const efx_np_mac_ctrl_t *mc)
{
+ const efx_nic_cfg_t *encp = &enp->en_nic_cfg;
EFX_MCDI_DECLARE_BUF(payload,
MC_CMD_MAC_CTRL_IN_LEN,
MC_CMD_MAC_CTRL_OUT_LEN);
@@ -1571,9 +1572,19 @@ efx_np_mac_ctrl(
if (mc->enmc_set_pdu_only != B_FALSE)
goto skip_full_reconfigure;
- cfg |= 1U << MC_CMD_MAC_CONFIG_OPTIONS_CFG_INCLUDE_FCS;
- if (mc->enmc_include_fcs != B_FALSE)
- flags |= 1U << MC_CMD_MAC_FLAGS_FLAG_INCLUDE_FCS;
+ /* Only PFs can control FCS stripping. */
+ if (EFX_PCI_FUNCTION_IS_PF(encp)) {
+ cfg |= 1U << MC_CMD_MAC_CONFIG_OPTIONS_CFG_INCLUDE_FCS;
+ if (mc->enmc_include_fcs != B_FALSE)
+ flags |= 1U << MC_CMD_MAC_FLAGS_FLAG_INCLUDE_FCS;
+ } else if (mc->enmc_include_fcs != B_FALSE) {
+ /*
+ * Assume that FCS stripping being enabled is the driver's
+ * default expectation and deny disabling it to VFs.
+ */
+ rc = ENOTSUP;
+ goto fail1;
+ }
MCDI_IN_SET_DWORD(req, MAC_CTRL_IN_FLAGS, flags);
@@ -1595,12 +1606,22 @@ efx_np_mac_ctrl(
break;
default:
rc = EINVAL;
- goto fail1;
+ goto fail2;
}
}
- cfg |= 1U << MC_CMD_MAC_CONFIG_OPTIONS_CFG_FCNTL;
- MCDI_IN_SET_DWORD(req, MAC_CTRL_IN_FCNTL, fcntl);
+ /* Only PFs can change flow control settings. */
+ if (EFX_PCI_FUNCTION_IS_PF(encp)) {
+ cfg |= 1U << MC_CMD_MAC_CONFIG_OPTIONS_CFG_FCNTL;
+ MCDI_IN_SET_DWORD(req, MAC_CTRL_IN_FCNTL, fcntl);
+ } else if (fcntl != MC_CMD_FCNTL_AUTO) {
+ /*
+ * Assume that flow control auto-negotiation is the driver's
+ * default expectation and deny any attempts to override it.
+ */
+ rc = ENOTSUP;
+ goto fail3;
+ }
skip_full_reconfigure:
MCDI_IN_SET_DWORD(req, MAC_CTRL_IN_V2_CONTROL_FLAGS, cfg);
@@ -1609,11 +1630,17 @@ efx_np_mac_ctrl(
if (req.emr_rc != 0) {
rc = req.emr_rc;
- goto fail2;
+ goto fail4;
}
return (0);
+fail4:
+ EFSYS_PROBE(fail4);
+
+fail3:
+ EFSYS_PROBE(fail3);
+
fail2:
EFSYS_PROBE(fail2);
--
2.47.3
next prev parent reply other threads:[~2026-08-11 17:51 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-11 17:50 [PATCH 0/6] common/sfc_efx/base: add Medford4 VF support Ivan Malov
2026-08-11 17:50 ` [PATCH 1/6] common/sfc_efx/base: let Medford4 PF manage VFs Ivan Malov
2026-08-11 17:50 ` [PATCH 2/6] common/sfc_efx/base: indicate dummy netport properties on VF Ivan Malov
2026-08-11 17:50 ` [PATCH 3/6] common/sfc_efx/base: skip netport event subscriptions on VFs Ivan Malov
2026-08-11 17:50 ` Ivan Malov [this message]
2026-08-11 17:50 ` [PATCH 5/6] common/sfc_efx/base: deny periodic MAC stats delivery to VFs Ivan Malov
2026-08-11 17:50 ` [PATCH 6/6] doc: announce VF support of AMD Solarflare X45xx family NICs Ivan Malov
2026-08-11 21:05 ` [PATCH 0/6] common/sfc_efx/base: add Medford4 VF support 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=20260811175025.9019-5-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox