[Bug 261866] ixgbe(4) with optics not setting media type
Date: Thu, 10 Feb 2022 15:48:29 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=261866 Bug ID: 261866 Summary: ixgbe(4) with optics not setting media type Product: Base System Version: 12.3-RELEASE Hardware: amd64 OS: Any Status: New Severity: Affects Only Me Priority: --- Component: kern Assignee: bugs@FreeBSD.org Reporter: firstname.lastname@example.org Hello, I am testing FreeBSD-12.3 using an '82599ES 10-Gigabit SFI/SFP+ Network Connection' with an 10Gbase-LR transceiver. A similar box at a remote location was unable to establish a 10GbE link and fell back to 1GbE. I wanted to force the 1000baseLX media type to see if that could be established reliably. After my testing, I believe ixgbe resets the media type to autoselect immediately after setting any other type - making the 'ifconfig ixl0 media 1000baseLX' command useless. I believe it is revision r312544 that causes this behavior. I am interested if ixgbe can be reworked so that fixed media types can be applied. Thank you! When linked at 10G, the output of 'ifconfig ixl0' includes: media: Ethernet autoselect (10Gbase-LR <full-duplex>) My understanding is the first 'Ethernet autoselect' reflects what is configured while the section in parenthesis '10Gbase-LR' is what is negotiated. I can try to force the negotiated speed but ifconfig still reports 'Ethernet autoselect': # ifconfig ixl0 media 10Gbase-LR media: Ethernet autoselect (10Gbase-LR <full-duplex>) Note if I try this on a 1GbE igb driver, the configured media type is displayed: # ifconfig igb0 media 100baseTX media: Ethernet 100baseTX (100baseTX <half-duplex>) Next, I built the kernel using options 'IFMEDIA_DEBUG' and after booting set 'sysctl debug.ifmedia=1'. I added additional logging before the two ifmedia_set() calls in the if_ix.c - in ixgbe_setup_interface() and ixgbe_handl_msf(). Testing showed that after setting a new mode, the link goes down then comes back up, and the handle_msf() function is called. That function clears and reloads the available media types then sets the interface to auto. That cancels out the forced media type. I traced this problem to r312544 where ifmedia_set() was added to avoid an invalid memory access. Is there a way to retain the configured media state and attempt to use it after reloading the available types? Otherwise, at least when using optics, it seems like I am unable to set a media type. I see ixl and ice drivers don't support setting a media type - perhaps it is related to this problem? -- You are receiving this mail because: You are the assignee for the bug.