Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - spetrillo

#31
Ok so I installed OPNsense and booted things up to the console. I set both ports 0 and 1 as follows: sysctl dev.ix.0.advertise_speed=23 and sysctl dev.ix.1.advertise_speed=23. Both ports are now showing as 2500 on my switch, whereas port 0 would show 2500 and port 1 would show 100. That is a very good step forward.

Going to let this sit for a bit and see what happens. Maybe the NVM update was all I needed? How do ppl feel about a driver update in FreeBSD? I would think that is a bit more complicated and I am not sure I want to take that on.
#32
Quote from: BrandyWine on September 21, 2025, 02:07:02 AM
Quote from: spetrillo on September 20, 2025, 08:22:52 PMVendor ID is 8086 and Device ID is 1563, so we now confirm this is an Intel X5520-T2.

Note sure which OS you are looking from, but ix in freeBSD 14.3 says the 1563 is just a T model. They list 550T's as these two. I cannot find anything "T2" in driver files. I am not sure it matters because they go by the matching device ID, but we usually see model names in user gui's, so it can sometimes get confusing as to what actual model nic it is when we only look at names. I will assume "X550T" was really meant to say "X550T2".

Quote#define IXGBE_DEV_ID_X550T         0x1563
#define IXGBE_DEV_ID_X550T1         0x15D1


Yes I guess it can be confusing. I was still on Ubuntu desktop when I checked for the vendor and device id. Now at least I know I can move forward without worrying about EPCT.

Will I need to worry about driver updates in FreeBSD?

More info - I used the ethtool command to set the speed at 2500 for both ports and they connected at 2500! This is a good step forward. I am going to do a new install of OPNsense tomorrow and see what happens with both ports. Is there a similar tool in FreeBSD?
#33
Ok so I finally got the NVM updated. We are now running 3.70, which matches the package. I installed Ubuntu 24.04.3, so I could work on a platform I know. I am not a FreeBSD guy, even though there are similarities. I just wanted to be on an OS I knew. I saw your update about EPCT. I followed the bouncing ball but the wierd part is the EPCT64e command comes back with no supported adapters found. Not sure why this happening but going to investigate a bit more.

Vendor ID is 8086 and Device ID is 1563, so we now confirm this is an Intel X5520-T2.

More to come...
#34
First off I very much appreciate everyone's input to this. I really wish Intel would make it more straight forward but so be it. I do have one question and that is about the NVM update. Is that the only update I need to do to this card? We have talked about firmware and NVM almost interchangeably and I want to make sure I do whatever updates need to be done. I see the NVM update directory in the 30.4.2 update. I can follow that bouncing ball but is there another update for firmware or am I done at that point? Second what does the boot agent do for me and what options do most people pick when doing that kind of update on these cards?
#35
This is what I updated, and what it looks like I did is update the boot agent: Intel(R) Boot Agent XE (X550)  v2.4.59

So I did not do the firmware correct? I have to be honest I am very confused at this point. I have the Intel 30.4 update downloaded and unzipped. I thought this was the firmware but now I am not soo sure.

I ran the dmesg command...that is the output I posted in my last update. Is this not what you want to see? The rest of the output was about my vlans. I didnt think that was necessary to post but please tell me. You mention the I226 thread. Would you have a link for it? Is there a good doc for doing the update via UEFI? It seems that is the best way to do these updates?

So I just noticed that there is now a 30.4.2 update package. I am downloading that now and going to look into that for an update. Its highlighted in bold that it supports for FreeBSD 13.5 and FreeBSD 14.3 OSes. I wonder if that might help my situation.
#36
OK so below is the output from the grep command. What I noticed is the FW and NVM code needs to be updated. I thought I had updated the FW code but maybe it didnt apply. So that is the first place I am going to start working on. The switch is a ReadHD 2.5 gig switch with PoE. I have other devices running at 2.5 gig with no issue. The ethernet cables are Cat6 cables that were purchased about 6-12 months ago. I do not think they said anything about being 802.3bz compliant. I am not sure most cables tell you that.

So my course of action is as follows:

1) Update card with latest firmware and NVM code
2) Test other tunable options mentioned above
3) Dive into X550 code and Intel docs

Am I missing anything?

Steve

[1] acpi0: Power Button (fixed)
[1] ix0: <Intel(R) X550-T2> mem 0xb0400000-0xb07fffff,0xb0804000-0xb0807fff irq 17 at device 0.0 on pci1
[1] ix0: Using 2048 TX descriptors and 2048 RX descriptors
[1] ix0: Using 6 RX queues 6 TX queues
[1] ix0: Using MSI-X interrupts with 7 vectors
[1] ix0: allocated for 6 queues
[1] ix0: allocated for 6 rx queues
[1] ix0: Ethernet address: a0:36:9f:29:94:1c
[1] ix0: PCI Express Bus: Speed 8.0GT/s Width x4
[1] ix0: fw 2.11.11 nvm 1.86.0 Option ROM V1-b3863-p0 eTrack 0x80000c67
[1] ix0: netmap queues/slots: TX 6/2048, RX 6/2048
[1] ix1: <Intel(R) X550-T2> mem 0xb0000000-0xb03fffff,0xb0800000-0xb0803fff irq 16 at device 0.1 on pci1
[1] ix1: Using 2048 TX descriptors and 2048 RX descriptors
[1] ix1: Using 6 RX queues 6 TX queues
[1] ix1: Using MSI-X interrupts with 7 vectors
[1] ix1: allocated for 6 queues
[1] ix1: allocated for 6 rx queues
[1] ix1: Ethernet address: a0:36:9f:29:94:1e
[1] ix1: PCI Express Bus: Speed 8.0GT/s Width x4
[1] ix1: fw 2.11.11 nvm 1.86.0 Option ROM V1-b3863-p0 eTrack 0x80000c67
[1] ix1: netmap queues/slots: TX 6/2048, RX 6/2048
#37
Here is the info right from the Amazon listing:

10Gb PCI-E NIC Network Card for Intel X550-T2,2.5GbE/5GbE/10GbE Copper Dual RJ45 Ports,with Intel ELX550AT2 Chip,10GbE PCI Express 3.0 X4 Ethernet Adapter Support Windows/Linux/VMware

So it seems the card is called a X550-T2 but the chipset is AT2. Did i read that correctly?
#38
Quote from: BrandyWine on September 17, 2025, 10:53:03 PM
Quote from: meyergru on September 17, 2025, 10:26:23 AMBTW: The FreeBSD Intel ix driver has a section in it that reads:

Quoteif (hw->mac.type == ixgbe_mac_X550 &&
            hw->phy.autoneg_advertised == 0) {
            /*
            * 2.5G and 5G autonegotiation speeds on X550
            * are disabled by default due to reported
            * interoperability issues with some switches.
            *
            * The second condition checks if any operations
            * involving setting autonegotiation speeds have
            * been performed prior to this ixgbe_config_link()
            * call.
            *
            * If hw->phy.autoneg_advertised does not
            * equal 0, this means that the user might have
            * set autonegotiation speeds via the sysctl
            * before bringing the interface up. In this
            * case, we should not disable 2.5G and 5G
            * since that speeds might be selected by the
            * user.
            *
            * Otherwise (i.e. if hw->phy.autoneg_advertised
            * is set to 0), it is the first time we set
            * autonegotiation preferences and the default
            * set of speeds should exclude 2.5G and 5G.
            */
            autoneg &= ~(IXGBE_LINK_SPEED_2_5GB_FULL |
                IXGBE_LINK_SPEED_5GB_FULL);
        }


Thus, I assume that "hw.ix.advertise_speed = 0x0CAA" or "hw.ix.advertise_speed = 3242" might do the trick, but I haven't tried.

You always bring up info that makes me wonder if coders are good or not.
If the tunable for phy.autoneg_advertised = 0, then why would coders think they should choose an arbitrary set of speeds to include or exclude? Makes no sense. If it's set to 0 then why would autonegotiate even happen? Would make more sense to just set a number (the default) that equals the math used to define what speeds should be advertised. And then we must ask, why disable speeds (by default) for the reason of "some switches were having an issue negotiating", just leave all the speeds active and when that rare switch has an issue there's a ReleaseNotes doc that explains how to set the tunable to exclude one or more speeds. And better yet, if they know autoneg for 2.5 a 5 are having issues, then why not actually fix that issue instead of band-aid that disables speeds most people want to use.


I guess from coding view they use "ixgbe", but the driver for freeBSD is "ix". Linux uses "ixbge"

But check this out. Looks like there's a driver issue where although it negotiated correctly, it did not report the actual speed. A fix as of Sep 12 2025. So the freeBSD might be lying about actual speed. Probably not related to actual speed if the switch port also says it's only 1G.
https://cgit.freebsd.org/src/commit/?h=stable/14&id=7dc494e6377451469763a8a687032dee2b8324b2
Quoteixgbe: Fix incomplete speed coverage in link status logging
Originally ixgbe_if_update_admin_status() only handled 1G and 10G speeds,
causing any other speeds to display as "1 Gbps" in link status logs.


This might make sense. What I am seeing now is that the switch is reporting the second port is running at 100M but the firewall is telling me the dev.ix.1.advertise_speed=23, which should mean it should do 2500M.
#39
I have an X550 with two RJ-45 ports. I hope that clears things up.
#40
Well this is weird...but I think I know what has happened.

I went back into the Tunables section and just applied the changes one more time. I then rebooted. Now both ports are registering at 2500M. I would be careful when adding multiple additions in the Tunables. I would do one at a time, apply, and then reboot. Ensure the first change is working. Then rince and repeat with each change.

dev.ix.0.advertise_speed
dev.ix.1.advertise_speed
value is 23 for 2500M
#41
I have not tried your proposed value...what I did was follow what Patrick Hausen propsed and it sorta worked. I entered the following in /System/Settings/Tunables section: dev.ix.0.advertise_speed and dev.ix.1.advertise_speed with a value of 23. Both ports now show 23 as their setting. Port 0 shows a speed of 2500M but port 1 shows a speed of 100M.

One step forward...sort of!

#42
One thing I did not do on the card was to update the NVM. I updated the card's firmware but not the NVM. I am going to do this now.
#43
Quote from: meyergru on September 17, 2025, 07:51:18 PM@spetrillo: What makes you believe that 23 is the correct value? Do you have any reliable source for that assumption?

It is neither for the Netgate version according to their docs nor is it according to the source code of the ix driver in FreeBSD, which should be the one you use in OpnSense. The value 0x0CAA (or 3242 decimal) will enable autonegotiation for all speeds, 23 is most probably incorrect, IMHO.


I found this in another post on the X550. Here is the post link: https://forum.opnsense.org/index.php?topic=43906.msg218886#quickreply_anchor

Quote from: AhnHEL on December 10, 2024, 02:48:32 AMSee if this helps you.

Quotesysctl 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.

To add advertisement of 2.5G and 5G on ix0:

sysctl dev.ix.0.advertise_speed=55

Since 7 + 16 + 32 = 55.


#44
So here is the problem that I see...

First off if you read the text at the top of /boot/loader.conf it says the file is autogenerated and to use /boot/loader.conf.local. I did that and entered two parameter lines: sysctl dev.ix.0.advertise_speed=23 and sysctl dev.ix.1.advertise_speed=23. This tells both ports that it can support 2.5 gig. It does not seem this gets loaded after a reboot bc when I run sysctl dev.ix.0.advertise_speed and sysctl dev.ix.1.advertise_speed they both output 7, which is the default to support 100M, 1G, and 10G.

I just tried hex instead of decimal and that made no change. I think the first thing is to understand if using loader.conf.local works bc right now it does not seem to be working. Second I am going to remove the changes and try to force it on the switch side and see what happens. More to come.
#45
Hello all,

My firewall is running with a 2 port X550. I have these ports connected to a 2.5 gig switch. When I look at the switch these ports are running at 1 gig. In doing some research here I found that I need to augment the config of the X550 ports, to support 2.5 gig. Out of the gate the OS supports 100M, 1 gig, and 10 gig. I want to add support for 2.5 gig. I added sysctl dev.ix.0.advertise_speed=23 to /boot/loader.conf but it looks to get overwritten at OS boot time. The file's documentation tells me to add this to the tunables section in the GUI, so I did that and rebooted but my switch is still showing that the ports are running at 1 gig.

The tunables section has a type selection, which is boot-time, runtime, or environment. I have no ability to change this so my additions are running as environment. This could be the problem. Has anyone had success in get the X550 ports to support 2.5 gig?

Thanks,
Steve