Open RyanChaosInc opened 4 months ago
Apologies for the confusion. The X440 does not support auto-negotiation on the QSFP ports. It only supports the mode described by the bitstream flavor (CG = 100 GbE). You have to switch bitstreams to change modes. This is intentional to save resources on the FPGA for other uses. I believe this is the same behavior as the SFP ports on other USRPs, but you may get lucky with auto-negotion enabled on the NIC.
From reading your description, it sounds like it's behaving as expected. Given it's not supported, is there something you saw that still seems incorrect? Or was there a mistake in the documentation?
I understand that and agree that we must change the bitstream flavor to match the desired speed. No issues there.
I still believe there is a bug with the driver in 100GbE configurations.
Ethtool should report the correct and accurate information so the other network device can correctly and automatically connect.
Supported link modes, supports auto-negotiation, advertised link modes, and advertised auto-negotiation must be accurate to enable NICs to connect to it normally w/o special configuration.
100GbE:
root@SDR15:~# ethtool sfp1
Settings for sfp1:
Supported ports: [ MII ]
Supported link modes: Not reported
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 100000Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Link detected: yes
For reference, the 10GbE driver correctly reports required data and doesn't show them as "Not reported". 10GbE:
root@SDR4:~# ethtool sfp1
Settings for sfp1:
Supported ports: [ ]
Supported link modes: 10000baseER/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: 10000baseER/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Port: MII
PHYAD: 4
Transceiver: internal
Auto-negotiation: off
Link detected: yes
Thank you for creating this issue! I agree it looks like some of the information being reported is wrong.
You also mentioned that you got "all but one" of the cables/transceivers to work. Can you share the part numbers for the items that didn't work?
Thank you for creating this issue! I agree it looks like some of the information being reported is wrong.
You also mentioned that you got "all but one" of the cables/transceivers to work. Can you share the part numbers for the items that didn't work?
This is the one that didn't work, but I didn't have time to chase down why. https://www.amazon.com/dp/B0CJ8BWMB3
Issue Description
X440 configured with CG_400 FPGA Flavor does not properly advertise supported link modes which does not allow for receiving NIC or switches to auto-negotiate to 100 GbE Full Duplex via QSFP28.
Once auto-negotiate was DISABLED on 100 GbE switch, then link was able to be detected and established. While auto-negation is enabled on the SDR side, the SDR does not advertise necessary data to enable the other side of the connection to establish the link.
ethtool
on the X400 configured with CG_400 confirms this.In the output below, the external switch has been configured with auto-negotiate=false to enable the link to be established. Therefore, Link detected: yes below is expected w/ 100GbE tranceiver/cables:
Setup Details
X400 configured w/ CG_400
I tried 5 different brands of QSFP28 transceivers & cables.
All but one worked once I disabled once I turned off auto-negotiation on the switch's QSFP28 port connected to the SDR.
If configured, with other FPGA flavors using 4 x 10GbE and a QSFP28 splitter, 10GbE auto-negotiates fine. The problem is when trying to connect QSFP28 to QSFP28 at 100GbE using CG_400.
Expected Behavior
Auto-negotiate should be advertised for SFP0 and SFP1 when using CG_400 and therefore supported at 100GbE, consistent with 10GbE and 1GbE on other Ettus SDRs..
Actual Behaviour
Link cannot be established to a receiving NIC or switch using auto-negotiation. However, if same cable is connected to 2 X440s w/ CG_400 a link light is established.
Steps to reproduce the problem
Configure X440 with CG_400. Use QSFP28 cable to connect to a QSFP28 port on a switch or NIC set to auto-negotiate.
ethtool sfp0
will showlink detected: no
and no link light will show.ip a
will show no IP address.Additional Information
Many other parameters were tried on both the SDR and Switch side and ultimately it was narrowed down to lack of advertising of the link mode by the SDR to enable auto-negotiation.
In doing so:
ethtool
is found to not implement a large amount of options specified byethtool -h
. Many of the options, such as -s are not supported. It appears viaethtool -i sfp0
that the nixge driver is very minimal. Therefore ethtool wasn't able to override or set missing config.