NBASE-T Support for Intel X550
-
I have played a bit with NBASE-T on my Intel original X550-T2 card.
EDIT: This card is not on the latest firmware, but some 1.93 stated. Will re-test this with latest later.
Port connected to 2.5Gbit switch. When set pfSense autoselect on that port it can SOMETIMES just crash the firewall and on the next boot it stops saying "Configuring interface xxx "
To boot I need to disconnect the cable.
When set to default it stops for a minute or two on boot and then comes 1000Base-T and not getting IP via DHCP.
If I set manually to 2500Base-T everything is working fine.
Booted to Kali-linux some latest available today.
There is no more 2.5G speed available and card works only on 10GBase-T, any other link – no IP or no media connected. Same for the latest Ubuntu version.
According to this Intel forum link to get the 2.5G it is needed to run 18.04 Ubuntu, so I downloaded it and voilà, no need to set up anything, both ports are working on desired speed. 10G and 2.5 are working “out of the box”.EDIT2: Similar behavior on the latest 3.6 NVM.
Well, it looks like we have at least possibility to get this all working, just a broken driver need to be fixed to get everything to work.Should it be reported? I don't know…
-
Crasdumps crash_x550.txt
Also reading FreeBSD forum provides more information about what is wrong with that card
For example this answer on Intel forums -
One of those look likes this: https://redmine.pfsense.org/issues/14431
Probably a symptom of the link failure rather than a cause of it.
Yes, likely a driver update required to get auto-select working. -
@stephenw10 said in NBASE-T Support for Intel X550:
Yes, likely a driver update required to get auto-select working.
It not just auto-select not working, but I can not get any IP by DHCP on the second, ix0 port, even if it up and running, if I do packet capture I see at least that some packets are moving, but don't see any DHCP offerings. That's strange. Will do further testings soon, may be I've missed something.
-
When mode is autoselect and speed is 1G, then pcap shows only my PPPoE PADI connection retries and Errors IN constantly grows UP, whatever it means and no packets going in. Does anyone else have the same behavior?
-
Booted into 2.6, using recovery mode. Got both ports running, one port shows "unknown" speed, but got IP address, so it's like @nater said just don't show the correct NBASE-T speed. Second shows correct speed and also works fine. Should I create redmine ticket or it's already known problem?
-
Which part? The fact it won't auto-negotiate? That's an upstream issue but we can open a ticket to track it.
-
@stephenw10 said in NBASE-T Support for Intel X550:
Which part? The fact it won't auto-negotiate?
Yes, it would be nice to solve all issues. I understand perfectly well that this is outside the area of responsibility of Netgate. But… Netgate have more chances to get it fixed in cooperation with maintainers.
BTW… Thanks to another thread and your suggestions…
dev.ix.1.advertise_speed: Control advertised link speed using these flags: 0x1 - advertise 100M 0x2 - advertise 1G 0x4 - advertise 10G 0x8 - advertise 10M 0x10 - advertise 2.5G 0x20 - advertise 5G 100M and 10M are only supported on certain adapters.
I found that default dev.ix.1.advertise_speed: 7
When I select default mode for the interface and set sysctl dev.ix.1.advertise_speed=16 via system tunables tab and then reboot the firewall than it connects on 2.5G speed. -
Ah, so it could simply be a matter of setting a different set of default advertisement flags?
-
@stephenw10
Isn't the same as manual selection of desired speed in GUI?
BTW if I set 2, then it comes with 1000BaseT link, but no data moving as I've been selected in GUI… -
I don't think so, not in ixgbe. As far as I know those NICs support a real fixed speed if you set it. It's igc that does not and setting a speed only sets a single advertisement speed.
-
@stephenw10
Ok, but, I've been checked this right now. Gui selection for 2500, sets
dev.ix.0.advertise_speed: 16
5000:
dev.ix.0.advertise_speed: 32
1000:
dev.ix.0.advertise_speed: 3
autoselect:
dev.ix.0.advertise_speed: 7
10G:
dev.ix.1.advertise_speed: 7 -
Right, those are all multiple advertised values rather than a single available value which is what igc does.
It appears it needs to include the 2.5 and/or 5G bits when set to autoselect and is not.
-
@stephenw10
I think it is commitSetting 63 as value is not possible, because in fact it reports that card is not supporting 10M, but if I set 37 and select "default" it sets media to the 100M and at least it is working, getting an IP address also!
If i select 100M in GUI then it sets the sysctl value to 1, but no IP then. If I change sysctl value to 37 it gets the IP.
36, 32 causes no link on the port, but it is accepted by sysctl.
Setting it to 2 in sysctl the link is active but no IP then. Looks like there are some values are hardly encoded in the other part of code and maybe not on the pf side. I will try the Ubuntu again to see if I can change the port speed to different values. -
It looks like Ubuntu have similar problems and even worse.
Link negotiation "Ignore" — this mode just means that some other manager or driver itself somehow auto-selecting the link speed, that puts the maximum speed for the link, like 2.5Gbps and 10Gbps.
Selecting 'auto' means 1Gbps in Ubuntu, at least on my cards.
Manual selecting is some kind of lottery that depends on a switch, for example if I select 1Gbps speed on 10G capable switch, it stays on 10Gbps, just ignoring the setting.
On other switch that is capable for 2.5Gbps and fully compliant with NBASE-T, I select 1Gbps, and it changes the link speed, but then no IP received from DHCP, like it happening on the pfSense side.I have found one x550 user report that in the Windows you need manualy select the link speed for X550 when the other side is 226 intel card.
I hope those findings will help someone to make things a bit better.
At least it would be good to use dev.ix.1.advertise_speed: 37 as default value, so you will have a working connection, but this need to be tested.
-
Yes it would need to be extensively tested. Because it looks like that was deliberately not set as a default in order to prevent negotiation issues with some other hardware. So if we set that as a default it could break links for anyone with that hardware.
-
@stephenw10
Yes, sure…
The fastest way is just to add the explanation to the Netgate pfSense documentation?
I think it can be helpful when installing on the hardware when the ix550 is on the LAN side and connected to some 2.5/5Gbps switch that have no link, because of this setting missing or non-compatible by default. -
I agree, let me see what I can do here....
-
https://redmine.pfsense.org/issues/14647
-
@stephenw10 I can confirm that setting
sysctl dev.ix.X.advertise_speed=N
Where X is the interface number (e.g. for ix0, X=0 in the command above) and N is the sum of the advertised speeds, works.
In hex and decimal:
Control advertised link speed using these flags: 0x1 - 1 - advertise 100M 0x2 - 2 - advertise 1G 0x4 - 4 - advertise 10G 0x8 - 8 - advertise 10M 0x10 - 16 - advertise 2.5G 0x20 - 32 - advertise 5G 100M and 10M are only supported on certain adapters.
My default value was 7, (in decimal, so it was 1+2+4, 100M/1G/10G) so to add advertisement of 2.5G and 5G on ix0, I ran:
sysctl dev.ix.0.advertise_speed=55
Since 7 + 16 + 32 = 55.
Now I see:
I also had to add dev.ix.0.advertise_speed as a system tunable, with value 55, to make it persist between reboots