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>,
stable@dpdk.org
Subject: [PATCH v3 3/3] common/sfc_efx/base: fix reading advertised autoneg ability
Date: Fri, 14 Aug 2026 16:55:45 +0400 [thread overview]
Message-ID: <20260814125545.13343-4-ivan.malov@arknetworks.am> (raw)
In-Reply-To: <20260814125545.13343-1-ivan.malov@arknetworks.am>
The issue is that when the user disables auto-negotiation by removing
the capability bit from the 'advertised mask' (set method) and then
reads the resulting capabilities, which involves querying MCDI, the
bit reappears in the mask irrespective of the user's intent.
Fix this by remembering the user's intent before any link-state queries.
Depends-on: series-38976 ("common/sfc_efx/base: fix code analysis issues")
Fixes: 2a5cf77e6de8 ("common/sfc_efx/base: provide PHY link get method on Medford4")
Fixes: 06f569de6c06 ("common/sfc_efx/base: decode netport link state on probe path")
Cc: stable@dpdk.org
Suggested-by: Andy Moreton <andy.moreton@amd.com>
Signed-off-by: Ivan Malov <ivan.malov@arknetworks.am>
Reviewed-by: Viacheslav Galaktionov <viacheslav.galaktionov@arknetworks.am>
Reviewed-by: Andy Moreton <andy.moreton@amd.com>
---
drivers/common/sfc_efx/base/efx_np.c | 11 +++++------
drivers/common/sfc_efx/base/medford4_phy.c | 5 ++++-
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/drivers/common/sfc_efx/base/efx_np.c b/drivers/common/sfc_efx/base/efx_np.c
index 06cb33e39b..6dba75f23d 100644
--- a/drivers/common/sfc_efx/base/efx_np.c
+++ b/drivers/common/sfc_efx/base/efx_np.c
@@ -436,9 +436,6 @@ efx_np_link_state(
MCDI_OUT2(req, const uint8_t, LINK_STATE_OUT_ADVERTISED_ABILITIES),
&lsp->enls_adv_cap_mask);
- if (lsp->enls_an_supported != B_FALSE)
- lsp->enls_adv_cap_mask |= 1U << EFX_PHY_CAP_AN;
-
efx_np_cap_hw_data_to_sw_mask(
MCDI_OUT2(req, const uint8_t,
LINK_STATE_OUT_LINK_PARTNER_ABILITIES),
@@ -1030,11 +1027,13 @@ efx_np_attach(
if (rc != 0)
goto fail3;
- if (ls.enls_an_supported != B_FALSE)
- epp->ep_phy_cap_mask |= 1U << EFX_PHY_CAP_AN;
-
epp->ep_adv_cap_mask = ls.enls_adv_cap_mask;
+ if (ls.enls_an_supported != B_FALSE) {
+ epp->ep_adv_cap_mask |= 1U << EFX_PHY_CAP_AN;
+ epp->ep_phy_cap_mask |= 1U << EFX_PHY_CAP_AN;
+ }
+
#if EFSYS_OPT_LOOPBACK
efx_np_assign_loopback_props(enp);
#endif /* EFSYS_OPT_LOOPBACK */
diff --git a/drivers/common/sfc_efx/base/medford4_phy.c b/drivers/common/sfc_efx/base/medford4_phy.c
index 7b456c9b8a..17aa068041 100644
--- a/drivers/common/sfc_efx/base/medford4_phy.c
+++ b/drivers/common/sfc_efx/base/medford4_phy.c
@@ -34,13 +34,16 @@ medford4_phy_get_link(
efx_np_handle_t nph = enp->en_port.ep_np_handle;
efx_np_link_state_t ls;
efx_np_mac_state_t ms;
+ uint32_t preserve_an;
efx_rc_t rc;
+ preserve_an = enp->en_port.ep_adv_cap_mask & (1U << EFX_PHY_CAP_AN);
+
rc = efx_np_link_state(enp, nph, &ls);
if (rc != 0)
goto fail1;
- elsp->epls.epls_adv_cap_mask = ls.enls_adv_cap_mask;
+ elsp->epls.epls_adv_cap_mask = ls.enls_adv_cap_mask | preserve_an;
elsp->epls.epls_lp_cap_mask = ls.enls_lp_cap_mask;
elsp->epls.epls_lane_count = ls.enls_lane_count;
elsp->els_loopback = ls.enls_loopback;
--
2.47.3
next prev parent reply other threads:[~2026-08-14 12:56 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-11 17:48 [PATCH 00/14] common/sfc_efx/base: fix code analysis issues Ivan Malov
2026-08-11 17:48 ` [PATCH 01/14] common/sfc_efx/base: reduce stack in RSS context table write Ivan Malov
2026-08-11 17:48 ` [PATCH 02/14] common/sfc_efx/base: reduce stack in get addr regions MCDI Ivan Malov
2026-08-11 17:48 ` [PATCH 03/14] common/sfc_efx/base: reduce stack in set " Ivan Malov
2026-08-11 17:48 ` [PATCH 04/14] common/sfc_efx/base: reduce stack in netport stat describe Ivan Malov
2026-08-11 17:48 ` [PATCH 05/14] common/sfc_efx/base: fix filter saved spec handling Ivan Malov
2026-08-11 17:48 ` [PATCH 06/14] common/sfc_efx/base: fix annotations in client MAC addr get Ivan Malov
2026-08-11 17:48 ` [PATCH 07/14] common/sfc_efx/base: fix annotations in HW-SW mask converter Ivan Malov
2026-08-11 17:48 ` [PATCH 08/14] common/sfc_efx/base: fix annotations in get fixed port props Ivan Malov
2026-08-11 17:48 ` [PATCH 09/14] common/sfc_efx/base: fix annotations in SW-HW enum converter Ivan Malov
2026-08-11 17:48 ` [PATCH 10/14] common/sfc_efx/base: fix annotation in netport stat describe Ivan Malov
2026-08-11 17:48 ` [PATCH 11/14] common/sfc_efx/base: fix flex array " Ivan Malov
2026-08-11 17:48 ` [PATCH 12/14] common/sfc_efx/base: fix filter in SW-HW mask converter Ivan Malov
2026-08-11 17:48 ` [PATCH 13/14] common/sfc_efx/base: rework SW mask to HW enum converter Ivan Malov
2026-08-11 17:48 ` [PATCH 14/14] common/sfc_efx/base: cleanup wider type comparisons in loops Ivan Malov
2026-08-11 20:24 ` [PATCH 00/14] common/sfc_efx/base: fix code analysis issues Stephen Hemminger
2026-08-12 17:08 ` [PATCH v2 " Ivan Malov
2026-08-12 17:08 ` [PATCH v2 01/14] common/sfc_efx/base: reduce stack in RSS context table write Ivan Malov
2026-08-12 17:08 ` [PATCH v2 02/14] common/sfc_efx/base: reduce stack in get addr regions MCDI Ivan Malov
2026-08-12 17:08 ` [PATCH v2 03/14] common/sfc_efx/base: reduce stack in set " Ivan Malov
2026-08-12 17:08 ` [PATCH v2 04/14] common/sfc_efx/base: reduce stack in netport stat describe Ivan Malov
2026-08-12 17:08 ` [PATCH v2 05/14] common/sfc_efx/base: fix filter saved spec handling Ivan Malov
2026-08-12 17:08 ` [PATCH v2 06/14] common/sfc_efx/base: fix annotations in client MAC addr get Ivan Malov
2026-08-12 17:08 ` [PATCH v2 07/14] common/sfc_efx/base: fix annotations in HW-SW mask converter Ivan Malov
2026-08-12 17:08 ` [PATCH v2 08/14] common/sfc_efx/base: fix annotations in get fixed port props Ivan Malov
2026-08-12 17:08 ` [PATCH v2 09/14] common/sfc_efx/base: fix annotations in SW-HW enum converter Ivan Malov
2026-08-12 17:08 ` [PATCH v2 10/14] common/sfc_efx/base: fix annotation in netport stat describe Ivan Malov
2026-08-12 17:08 ` [PATCH v2 11/14] common/sfc_efx/base: fix flex array " Ivan Malov
2026-08-12 17:08 ` [PATCH v2 12/14] common/sfc_efx/base: fix filter in SW-HW mask converter Ivan Malov
2026-08-12 17:08 ` [PATCH v2 13/14] common/sfc_efx/base: rework SW mask to HW enum converter Ivan Malov
2026-08-12 17:08 ` [PATCH v2 14/14] common/sfc_efx/base: cleanup wider type comparisons in loops Ivan Malov
2026-08-13 2:35 ` [PATCH v2 00/14] common/sfc_efx/base: fix code analysis issues Stephen Hemminger
2026-08-13 3:37 ` Ivan Malov
2026-08-14 12:54 ` [PATCH v3 " Ivan Malov
2026-08-14 12:54 ` [PATCH v3 01/14] common/sfc_efx/base: reduce stack in RSS context table write Ivan Malov
2026-08-14 12:54 ` [PATCH v3 02/14] common/sfc_efx/base: reduce stack in get addr regions MCDI Ivan Malov
2026-08-14 12:54 ` [PATCH v3 03/14] common/sfc_efx/base: reduce stack in set " Ivan Malov
2026-08-14 12:54 ` [PATCH v3 04/14] common/sfc_efx/base: reduce stack in netport stat describe Ivan Malov
2026-08-14 12:54 ` [PATCH v3 05/14] common/sfc_efx/base: fix filter saved spec handling Ivan Malov
2026-08-14 12:54 ` [PATCH v3 06/14] common/sfc_efx/base: fix annotations in client MAC addr get Ivan Malov
2026-08-14 12:54 ` [PATCH v3 07/14] common/sfc_efx/base: fix annotations in HW-SW mask converter Ivan Malov
2026-08-14 12:54 ` [PATCH v3 08/14] common/sfc_efx/base: fix annotations in get fixed port props Ivan Malov
2026-08-14 12:54 ` [PATCH v3 09/14] common/sfc_efx/base: fix annotations in SW-HW enum converter Ivan Malov
2026-08-14 12:54 ` [PATCH v3 10/14] common/sfc_efx/base: fix annotation in netport stat describe Ivan Malov
2026-08-14 12:54 ` [PATCH v3 11/14] common/sfc_efx/base: fix flex array " Ivan Malov
2026-08-14 12:54 ` [PATCH v3 12/14] common/sfc_efx/base: fix filter in SW-HW mask converter Ivan Malov
2026-08-14 12:54 ` [PATCH v3 13/14] common/sfc_efx/base: rework SW mask to HW enum converter Ivan Malov
2026-08-14 12:54 ` [PATCH v3 14/14] common/sfc_efx/base: cleanup wider type comparisons in loops Ivan Malov
2026-08-15 15:44 ` [PATCH v3 00/14] common/sfc_efx/base: fix code analysis issues Stephen Hemminger
2026-08-14 12:55 ` [PATCH v3 0/3] net/sfc: miscellaneous bug fixes Ivan Malov
2026-08-14 12:55 ` [PATCH v3 1/3] net/sfc: set Rx queue type flags from scratch on queue setup Ivan Malov
2026-08-14 12:55 ` [PATCH v3 2/3] net/sfc: drop wrong static qualifier from iterator variable Ivan Malov
2026-08-14 12:55 ` Ivan Malov [this message]
2026-08-14 12:56 ` [PATCH v3 0/3] common/sfc_efx/base: add VADAPTER statistics for Medford4 Ivan Malov
2026-08-14 12:56 ` [PATCH v3 1/3] common/sfc_efx/base: update MCDI headers Ivan Malov
2026-08-16 16:55 ` Stephen Hemminger
2026-08-14 12:56 ` [PATCH v3 2/3] common/sfc_efx/base: add support for VADAPTER statistics IDs Ivan Malov
2026-08-14 12:56 ` [PATCH v3 3/3] common/sfc_efx/base: switch netport stats to use EVB port ID Ivan Malov
2026-08-14 12:56 ` [PATCH v3 0/6] common/sfc_efx/base: add Medford4 VF support Ivan Malov
2026-08-14 12:56 ` [PATCH v3 1/6] common/sfc_efx/base: let Medford4 PF manage VFs Ivan Malov
2026-08-14 12:56 ` [PATCH v3 2/6] common/sfc_efx/base: indicate dummy netport properties on VF Ivan Malov
2026-08-14 12:56 ` [PATCH v3 3/6] common/sfc_efx/base: skip netport event subscriptions on VFs Ivan Malov
2026-08-14 12:56 ` [PATCH v3 4/6] common/sfc_efx/base: deny tuning FCS and flow control to VFs Ivan Malov
2026-08-14 12:56 ` [PATCH v3 5/6] common/sfc_efx/base: deny periodic MAC stats delivery " Ivan Malov
2026-08-14 12:56 ` [PATCH v3 6/6] doc: announce VF support of AMD Solarflare X45xx family NICs Ivan Malov
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=20260814125545.13343-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=stable@dpdk.org \
--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