why is auto negotiation disable a devarg rather than extending relevant part of ethdev? my opinion is every time a devarg like this gets added it means the ethdev abstraction is the real issue
On Mon, Nov 2, 2026, 16:37 Bruce Richardson <[email protected]> wrote: > On Mon, Nov 02, 2026 at 10:55:43AM +0000, Loftus, Ciara wrote: > > > Subject: [PATCH] net/ice: add explicit control of link auto-negotiation > > > > > > When selecting a fixed speed of the link, whether or not > > > autonegotiation (e.g. AN Clause 37, etc.), needs to be enabled depends > > > on the peer link. While commit 3dc2933866d9 ("net/ice: disable link > > > negotiation for fixed speed selection") would allow link setup when the > > > remote side also has a fixed link without AN37 auto-negotiation, it > > > causes the link to flap up and down when e.g. two ports are connected > > > back to back and only one is set to a fixed speed. > > > > > > Support both scenarios of auto-negotiation supported or unsupported on > > > the remote end by adding an explicit driver option for disabling > > > auto-negotiation when a fixed speed is selected. If no fixed speed > > > setting, then new option does nothing. > > > > > > Fixes: 3dc2933866d9 ("net/ice: disable link negotiation for fixed speed > > > selection") > > > > > > Signed-off-by: Bruce Richardson <[email protected]> > > > --- > > > doc/guides/nics/ice.rst | 10 ++++++++++ > > > doc/guides/rel_notes/release_26_11.rst | 2 ++ > > > drivers/net/intel/ice/ice_ethdev.c | 12 +++++++++++- > > > drivers/net/intel/ice/ice_ethdev.h | 1 + > > > 4 files changed, 24 insertions(+), 1 deletion(-) > > > > > > diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst > > > index ca3a94655b..af36341c9a 100644 > > > --- a/doc/guides/nics/ice.rst > > > +++ b/doc/guides/nics/ice.rst > > > @@ -107,6 +107,16 @@ Configuration > > > Runtime Configuration > > > ~~~~~~~~~~~~~~~~~~~~~ > > > > > > +``auto_neg_disable`` (default ``0``) > > > + Control hardware link negotiation when a fixed speed is requested > with > > > ``RTE_ETH_LINK_SPEED_FIXED``. > > > + By default, the firmware's negotiation settings are preserved, > > > + allowing a fixed-speed link to use negotiation such as Clause 37 > when > > > required by its peer. > > > + Set ``auto_neg_disable=1`` to disable Clause 28, Clause 37 and > Clause 73 > > > negotiation. > > > + This option has no effect when automatic speed selection is > requested. > > > + For example:: > > > + > > > + -a 80:00.0,auto_neg_disable=1 > > > + > > > > The approach looks good to me. > > Something my AI review flagged was the setting of "link.link_autoneg" > > in ice_link_update() - your patch doesn't update that setting, and it's > still > > just based off the dev_conf.link_speeds value, and doesn't take into > account > > the value of the devarg (unlike ice_apply_link_speed() which accounts for > > both). Perhaps it's not necessary, just something to check. > > Once that is addressed or ruled out: > > > > Acked-by: Ciara Loftus <[email protected]> > > Yes, good catch. That is fixed in v2, but I've dropped your ack as some of > the logic has been moved to a subfunction to avoid copy-pasting too much. >

