E610-XT2

Started by spetrillo, September 25, 2025, 06:38:17 PM

Previous topic - Next topic
Just purchased the E610 card and was w9ndering if anyone knew where i can look to see if its supported in FreeBSD 14?

E610 support was added to FreeBSD in August and has not yet made it into an official release. Assuming it will be backported for 14.4 you can expect it in OPNsense 26.1 or 26.7.

At the moment the answer is "no".

Reference: https://cgit.freebsd.org/src/commit/?id=dea5f973d0c8d29a79b433283d0a2de8f4615957
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

September 25, 2025, 10:11:52 PM #2 Last Edit: September 25, 2025, 10:54:52 PM by BrandyWine
wah I was about to post "Ragu", but I was in a v15 src folder locally.
E610 are pricey too.

Hmmm, I wonder why the "introduce new device ID's" don't show these other two two that are in the driver code? They must be new because they are not in 14.3 -release.

#define IXGBE_DEV_ID_E610_VF                0x57AD
#define IXGBE_SUBDEV_ID_E610_VF_HV      0x0001

Introduce new PCI device IDs:
• 57AE: Intel(R) E610 (Backplane)
• 57AF: Intel(R) E610 (SFP)
• 57B0: Intel(R) E610 (10 GbE)
• 57B1: Intel(R) E610 (2.5 GbE)
• 57B2: Intel(R) E610 (SGMII)
Mini-pc N150 i226-V

If its not explicitly supported does that mean I have to compile a driver for it or am I SOL until next year?

I really was hoping this could replace my X550 bc the X550 is really toasty and I cannot put the cover to my mini pc on.

September 26, 2025, 12:43:12 AM #4 Last Edit: September 26, 2025, 01:31:52 AM by BrandyWine
Quote from: spetrillo on September 25, 2025, 11:33:30 PMIf its not explicitly supported does that mean I have to compile a driver for it or am I SOL until next year?

I really was hoping this could replace my X550 bc the X550 is really toasty and I cannot put the cover to my mini pc on.
Well, if the src code in 15 -stable is not complete yet (works but can be buggy, that's what "stable" means), then even compiling that down to a ko will be questionable. You might try to compile it against the 14.3 src tree and see if anything complains. If there are complaints then you'll need to map them out to see how yo can bring some of the v15 code over to 14.3.

That last commit in v15 for ixbge was about 35 days ago, so fairly new with a discrepancy as I noted.

It's not easy to follow where a v15 dependency is because these src code files all have lots of includes, which come from various parts of the src tree, and those files too could have been modified.

It's worth a try just to see if you can take v15 ixbge src and compile it against v14.3 tree. If nothing complains then you made it past the 50% line, the other 50% is seeing if the -stable code (now a ko driver) is complete enough to run your E610 without issue. I'll venture a guess and say your XT2 is device ID 0x57B0

Edit:
As example, lets say you compile on ubuntu, download the 14.3 release src tree, swap out the v14 ixgbe folder for the v15 one, get into that ixbge and compile there. You probably have to adjust some compile options so that gcc knows you are compiling against that specific tree.

I grab files for my ubuntu and see if I can compile the v15 stuff, see what err's it spits out.
Mini-pc N150 i226-V

Quote from: Patrick M. Hausen on September 25, 2025, 07:15:10 PM[...]At the moment the answer is "no".[...]

Argh! I didn't look at the version. Dang, they're late - they should have it committed prior to launch. And that's a hell of a patch for a jumped-up X550, which itself is apparently a jumped-up 82599.

Quote from: BrandyWine on September 26, 2025, 12:43:12 AMAs example, lets say you compile on ubuntu, [...]

I am not quite sure that is possible. Have you built FreeBSD on Linux?

I would go about it like this:

- install FreeBSD 14.3 in a VM or on some spare machine
- checkout the releng/14.3 source tree
- cherry pick the changes for the ixgbe directory - link in my first post above
- make buildworld && make buildkernel
- copy if_ix.ko to the OPNsense system, /boot/kernel directory, keep fingers crossed, reboot
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

September 26, 2025, 04:02:12 PM #7 Last Edit: September 26, 2025, 04:14:37 PM by BrandyWine
Quote from: Patrick M. Hausen on September 26, 2025, 10:17:48 AMI am not quite sure that is possible
100% possible (done all the time). You have to setup a x-compile environment which targets freebsd14, which is easy to do. Compiling a new gcc and having it install to a x-compile location is the longest part of the setup, and many times throws err for missing or not-found items, so some tweaking to get done. I just did this on my WSL Ubuntu. So it's basically setting up for freebsd14 target and then gcc against the 14.3 kernel.

It's absoultely much easier to compile on a like-for-like setup, I didn't want to install 14.3 for this task.

I not picking out anything, 15 already has lots of include changes, i will just compile ixbge against the 14.3 kernel

Quote from: Patrick M. Hausen on September 26, 2025, 10:17:48 AMcopy if_ix.ko to the OPNsense system, /boot/kernel directory, keep fingers crossed, reboot
This part is question.
Where currently does the opnsense system load in the ix.ko?
Currently the ix is in kernel, not loaded in as a KLM, kldstat does not show ix.ko as klm, I see it in kernel kldstat -v , not as klm. So how to unbind ix that's in kernel? After that we can kldload in ix.ko. Some OS's allows doing KLM over a resident kernel module, but from what I know of that, it's bad practice to allow it.
Mini-pc N150 i226-V

September 26, 2025, 04:27:00 PM #8 Last Edit: September 26, 2025, 04:34:18 PM by Patrick M. Hausen
Quote from: BrandyWine on September 26, 2025, 04:02:12 PMSo it's basically setting up for freebsd14 target and then gcc against the 14.3 kernel.

FreeBSD uses Clang for kernel compilation. I'd rather create a VM and run the build process natively.

Quote from: BrandyWine on September 26, 2025, 04:02:12 PMCurrently the ix is in kernel, not loaded in as a KLM

Then you need to copy over the kernel instead of the module. Or best build OPNsense from source after cherry picking.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

So the real answer for me is I am SOL until next year. That's ok.

The E610 is a very low wattage adapter, so when its supported it will be ready to replace my X550.

Quote from: Patrick M. Hausen on September 26, 2025, 10:17:48 AM[...]cherry pick the changes for the ixgbe directory[...]

~16 files, but that's just from that commit. Franky, I don't know how to use these RCS interfaces. I'd grab the whole directory from the latest tree, plus add the two lines to /sys/conf/files (I wouldn't just grab it without diffing it, as who knows what else has been altered).

Quote from: spetrillo on September 26, 2025, 04:29:27 PMSo the real answer for me is I am SOL until next year. That's ok.

The E610 is a very low wattage adapter, so when its supported it will be ready to replace my X550.

I get that. It looks like the only solution (for low-power multi-port 10GBASE-T). Everyone else besides Realtek is chasing the high end, and I haven't seen the 8127 yet (and it's not in the re driver).

Maybe @franco can be convinced to cherry pick that commit? @spetrillo try a feature request on github. The link to the commit can be found in my first post.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

September 26, 2025, 06:34:30 PM #12 Last Edit: September 26, 2025, 06:40:00 PM by BrandyWine
Clang and gcc are viable compilers.

I git clone 15stable and 14.3release source trees.
From there I setup my x-compile env.

Now, I can
1) compile the ixgbe inside 15 tree using 14.3 src tree as the reference for kernel, so essentially all the 15 code compiled for 14.3 kernel.

2) The 2nd thing that can be done is, copy ixgbe from 15 over to 14.3 sys/dev/ as ixgbe15, then compile the same way.

The 1st will pick up all the includes from 15 tree, the 2nd will pick up all the includes from 14.3 tree. Knowing that some other changes are made in 15 tree I suspect compiling in 15 tree is the best hope for success. The big unknown is, how complete is 15 stable, specifically regarding E610 stuff.

Quote from: Patrick M. Hausen on September 26, 2025, 04:27:00 PMThen you need to copy over the kernel instead of the module
This is the confusing part, I am not sure why the OPNsense install has all those /boot kernel ko's there if most of them are compiled into the kernel module. I don't think building new kernel is good because current build options are unknown, so rather not mess with that.

I was wondering if a boot process was picking up those ko's and loading them in, but from all the docs I have read there's no hiding a klm from kldstat.

So, more fun.


Mini-pc N150 i226-V

September 26, 2025, 06:57:26 PM #13 Last Edit: September 26, 2025, 07:20:26 PM by BrandyWine
Quote from: spetrillo on September 26, 2025, 04:29:27 PMSo the real answer for me is I am SOL until next year. That's ok.

The E610 is a very low wattage adapter, so when its supported it will be ready to replace my X550.
Your patience needs to match "community" of OPNsense product. ;)
Unless there are others who are willing to test a new ko, you are the testor.

Trusting compiled stuff from anonymous is not the best, and not acceptable for critical stuff.
Once the process is somewhat well-documented you can then do it yourself, this way if there are issues, it's on you.

Or if you prefer, shelve the 610 for now and wait.
Or, be community oriented, try test fix try test fix, report your findings, etc.

Mini-pc N150 i226-V

Quote from: BrandyWine on September 26, 2025, 06:57:26 PM
Quote from: spetrillo on September 26, 2025, 04:29:27 PMSo the real answer for me is I am SOL until next year. That's ok.

The E610 is a very low wattage adapter, so when its supported it will be ready to replace my X550.
Your patience needs to match "community" of OPNsense product. ;)
Unless there are others who are will to test a new ko, you are the testor.

Trusting compiled stuff from anonymous is not the best, and not acceptable for critical stuff.
Once the process is somewhat well-documented you can then do it yourself, this was if there are issues, it's on you.

Or if you prefer, shelve the 610 for now and wait.
Or, be community oriented, try test fix try test fix, report your findings, etc.



I am patient when I need to patient.

I am happy to be the testor. I have a spare machine that I can put the E610 into and setup a dev environment. I have never compiled anything on this platform, so if I do go down this path I will need some help in setting up the dev environment properly.

For now I am going to open a Git request and see if there is any appetite to port E610 support into the 14.3 software.