patch 'common/sfc_efx/base: fix indication of requestable FEC flags' has been queued to stable release 25.11.1
Kevin Traynor
ktraynor at redhat.com
Thu Feb 26 14:08:36 CET 2026
Hi,
FYI, your patch has been queued to stable release 25.11.1
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/02/26. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/238ddeca4e2601dccff8f86d0db375e3013c34de
Thanks.
Kevin
---
>From 238ddeca4e2601dccff8f86d0db375e3013c34de Mon Sep 17 00:00:00 2001
From: Ivan Malov <ivan.malov at arknetworks.am>
Date: Tue, 30 Dec 2025 01:35:21 +0400
Subject: [PATCH] common/sfc_efx/base: fix indication of requestable FEC flags
[ upstream commit 054d17aceb2e14be3bd2dbc53cd18430b0eb2269 ]
Without these, the client driver will not allow to change default FEC mode.
The existing code assumes that the FW supplies them in the 'FEC_REQ' field
of the 'GET_FIXED_PORT_PROPERTIES' MCDI, but that is not the case. Arrange
the code to reuse the snippet from pre-X4 EF10 attach path to set the bits.
Fixes: a90549f527eb ("common/sfc_efx/base: get netport fixed capabilities on probe")
Signed-off-by: Ivan Malov <ivan.malov at arknetworks.am>
Reviewed-by: Andy Moreton <andy.moreton at amd.com>
---
drivers/common/sfc_efx/base/ef10_nic.c | 57 ++++++++++++++------------
drivers/common/sfc_efx/base/efx_np.c | 2 +-
2 files changed, 32 insertions(+), 27 deletions(-)
diff --git a/drivers/common/sfc_efx/base/ef10_nic.c b/drivers/common/sfc_efx/base/ef10_nic.c
index 627144cfb0..9af4259d38 100644
--- a/drivers/common/sfc_efx/base/ef10_nic.c
+++ b/drivers/common/sfc_efx/base/ef10_nic.c
@@ -2221,33 +2221,21 @@ efx_mcdi_nic_board_cfg(
encp->enc_board_type = board_type;
- if (efx_np_supported(enp) != B_FALSE)
- goto skip_phy_props;
+ if (efx_np_supported(enp) == B_FALSE) {
+ /*
+ * Fill out fields in enp->en_port and enp->en_nic_cfg from MCDI
+ */
+ rc = efx_mcdi_get_phy_cfg(enp);
+ if (rc != 0)
+ goto fail8;
- /* Fill out fields in enp->en_port and enp->en_nic_cfg from MCDI */
- if ((rc = efx_mcdi_get_phy_cfg(enp)) != 0)
- goto fail8;
+ /* Obtain the default PHY advertised capabilities */
+ rc = ef10_phy_get_link(enp, &els);
+ if (rc != 0)
+ goto fail9;
- /*
- * Firmware with support for *_FEC capability bits does not
- * report that the corresponding *_FEC_REQUESTED bits are supported.
- * Add them here so that drivers understand that they are supported.
- */
- if (epp->ep_phy_cap_mask & (1u << EFX_PHY_CAP_BASER_FEC))
- epp->ep_phy_cap_mask |=
- (1u << EFX_PHY_CAP_BASER_FEC_REQUESTED);
- if (epp->ep_phy_cap_mask & (1u << EFX_PHY_CAP_RS_FEC))
- epp->ep_phy_cap_mask |=
- (1u << EFX_PHY_CAP_RS_FEC_REQUESTED);
- if (epp->ep_phy_cap_mask & (1u << EFX_PHY_CAP_25G_BASER_FEC))
- epp->ep_phy_cap_mask |=
- (1u << EFX_PHY_CAP_25G_BASER_FEC_REQUESTED);
+ epp->ep_default_adv_cap_mask = els.epls.epls_adv_cap_mask;
+ epp->ep_adv_cap_mask = els.epls.epls_adv_cap_mask;
+ }
- /* Obtain the default PHY advertised capabilities */
- if ((rc = ef10_phy_get_link(enp, &els)) != 0)
- goto fail9;
- epp->ep_default_adv_cap_mask = els.epls.epls_adv_cap_mask;
- epp->ep_adv_cap_mask = els.epls.epls_adv_cap_mask;
-
-skip_phy_props:
/* Check capabilities of running datapath firmware */
if ((rc = ef10_get_datapath_caps(enp)) != 0)
@@ -2484,4 +2472,5 @@ ef10_nic_probe(
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
efx_drv_cfg_t *edcp = &(enp->en_drv_cfg);
+ efx_port_t *epp = &(enp->en_port);
efx_rc_t rc;
@@ -2507,4 +2496,20 @@ ef10_nic_probe(
goto fail5;
+ /*
+ * Firmware with support for *_FEC capability bits does not
+ * report that the corresponding *_FEC_REQUESTED bits are supported.
+ * Add them here so that drivers understand that they are supported.
+ */
+
+ if (epp->ep_phy_cap_mask & (1u << EFX_PHY_CAP_BASER_FEC))
+ epp->ep_phy_cap_mask |=
+ (1u << EFX_PHY_CAP_BASER_FEC_REQUESTED);
+ if (epp->ep_phy_cap_mask & (1u << EFX_PHY_CAP_RS_FEC))
+ epp->ep_phy_cap_mask |=
+ (1u << EFX_PHY_CAP_RS_FEC_REQUESTED);
+ if (epp->ep_phy_cap_mask & (1u << EFX_PHY_CAP_25G_BASER_FEC))
+ epp->ep_phy_cap_mask |=
+ (1u << EFX_PHY_CAP_25G_BASER_FEC_REQUESTED);
+
/*
* Set default driver config limits (based on board config).
diff --git a/drivers/common/sfc_efx/base/efx_np.c b/drivers/common/sfc_efx/base/efx_np.c
index ca0eb09b4a..45f3cd07ed 100644
--- a/drivers/common/sfc_efx/base/efx_np.c
+++ b/drivers/common/sfc_efx/base/efx_np.c
@@ -1393,5 +1393,5 @@ efx_np_link_ctrl(
*/
EFX_NP_CAP_SW_MASK_TO_HW_ENUM(efx_np_cap_map_fec_req,
- ETH_AN_FIELDS_FEC_REQ, cap_data_raw, cap_mask_sw,
+ ETH_AN_FIELDS_FEC_MASK, cap_data_raw, cap_mask_sw,
NULL, NULL, &supported, &cap_enum_hw);
--
2.53.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2026-02-26 10:16:48.442215364 +0000
+++ 0034-common-sfc_efx-base-fix-indication-of-requestable-FE.patch 2026-02-26 10:16:46.939459185 +0000
@@ -1 +1 @@
-From 054d17aceb2e14be3bd2dbc53cd18430b0eb2269 Mon Sep 17 00:00:00 2001
+From 238ddeca4e2601dccff8f86d0db375e3013c34de Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 054d17aceb2e14be3bd2dbc53cd18430b0eb2269 ]
+
@@ -12 +13,0 @@
-Cc: stable at dpdk.org
More information about the stable
mailing list