Support for SolarFlare Network Interface Cards

Dear Team,

My server carries SolarFlare network card. Please kindly add out of the box driver (sfc driver) for it. Please also add support for their kernel bypass technology called OpenOnload (built from source on linux with solarflare card installed and kernel devel). By that I mean that latest OpenOnload builds and substitutes native sfc driver with no issues on ClearLinux.

I am more than happy to provide details or contribute in any other way. Please feel free to get in touch.

Sincerely,
Ilgar

SolarFlare appears to distribute “OpenOnload(?)” their drivers as dkms over here:

https://support.solarflare.com/index.php/component/cognidox/?view=categories&id=1945

Is this not sufficient? Clear Linux supports dkms already, so I suspect this will just work.

When requesting packages or changes, any detail will help us - especially links to source code downloads.

1 Like

@ahkok thank you. I will experiment with OpenOnload and native SolarFlare driver on ClearLinux and let you know on the results

Hello all,

Here is the small update. Did not manage to build the Onload out of their currently latest sources: Onload-7.0.0.176. Attached is the build error.

Hello!
We’re trying to see how suitable ClearLinux is for HFT; it shows a lot of promise, with the optimisations and how far less bloated it is compared with other distributions.
A quick introduction follows for the benefit of those who are not familiar with the HFT domain.

The most important software component of an HFT system generally runs a tight loop receiving multicast packets (from the exchange computer systems), decoding financial instruments prices from them, taking some decisions based on these prices, and potentially sending orders via one or more TCP connections to the exchange.
Key to achieving low latencies in the network processing part is using high performance, kernel-bypass enabled network cards, such as those from SolarFlare and Mellanox.

The software package for SolarFlare cards is called onload, and it builds some kernel modules, some user-space libs, and some tools.
Being a new user I’m restricted to 2 links per post, so the urls below need some intervention.
It can be obtained from this page: https:/support-nic.xilinx.c[om]/wp/onload
where clicking on the OpenOnload category and selecting the first package called OpenOnload Release Package
it downloads to a zip file, which contains some text files and onload-7.1.1.75.tgz which contains the actual code to be built.
Note that the above package builds, installs and runs fine on RHEL/CentOS 8.3 with kernel 4.18.0-240.22.1.el8_3.x86_64 (which is heavily patched, as they do).

Having failed to build against the org.clearlinux.native.5.12.3-* kernels, which are not supported by onload, I have tried onload-7.1.1.75 with the 2018 LTS kernel.
After unpacking onload-7.1.1.75.tgz, running

sudo scripts/onload_install

results in it picking up the correct kernel:

Build tree made for linux as x86_64_linux-4.19.190-203.lts2018

and building some of the kernel related components, as far as I can tell, but failing when building some user-space components, reproduced below:

../../../../../src/include/onload/declare_syscalls.h.tmpl:138:28: error: ‘__fxstat’ undeclared here (not in a function); did you mean ‘fstat’?
  138 | CI_MK_DECL(int           , __fxstat   , (int, int, struct stat *));
      |                            ^~~~~~~~
../../../../../src/lib/transport/ip/syscall.c:28:63: note: in definition of macro ‘CI_MK_DECL’
   28 | # define CI_MK_DECL(ret, fn, args)  ret (*ci_sys_##fn) args = fn
      |                                                               ^~
../../../../../src/include/onload/declare_syscalls.h.tmpl:143:28: error: ‘__fxstat64’ undeclared here (not in a function); did you mean ‘fstat64’?
  143 | CI_MK_DECL(int           , __fxstat64 , (int, int, struct stat64 *));
      |                            ^~~~~~~~~~
../../../../../src/lib/transport/ip/syscall.c:28:63: note: in definition of macro ‘CI_MK_DECL’
   28 | # define CI_MK_DECL(ret, fn, args)  ret (*ci_sys_##fn) args = fn
      |                                                               ^~
make[3]: *** [../../../../../mk/after.mk:173: ci_ip_syscall.o] Error 1

Does this __fxstat64 issue seem familiar to anyone? I’ve not been able to find anything similar on this forum, or in the wild.

Has anyone been able to build onload after all, on any kernel on ClearLinux?

Any help would be very much appreciated. I’d attach the full build log, if I saw a way to do it.