OCE (emulex) network driver not loading during the boot.

Hello everyone,

I was having some issues while using the native oce driver from FreeBSD 12.3 so I decided to compile the newest source code for the oce driver from FreeBSD 14.
That generated a file (if_oce.ko) which is located at /boot/modules (also copied /boot/kernel just in case)
After that, I have added a line to the loader.conf file with the following:

Code:
 if_oce_load="YES"

...and rebooted the machine.
now the problem is that I don't see the oce module loaded. I have used the kldstat command which shows me other modules loaded, but not the if_oce.
Is that supposed to work? What Am I doing wrong?

Any help is very welcome. Thanks Much!
 
I don't think copying 14.0-RELEASE kernel modules to 12.3-RELEASE is a good idea.

Regardless the best way to see what is happening is to manually load the driver.

kldload -v if_oce
 
it might have unresolved symbols or some other problems. you (probably) need to "backport" it to comply with 12.x kernel abi not just compile it as is
you can probably see the error msg in /var/log/messages
try kldload if_oce from #prompt and check messages again
 
I don't think copying 14.0-RELEASE kernel modules to 12.3-RELEASE is a good idea.

Regardless the best way to see what is happening is to manually load the driver.

kldload -v if_oce
Thanks for the reply! Much appreciated!

The "kldload -v if_oce" shows me the following message:

kldload: an error occurred while loading module if_oce. Please check dmesg(8) for more details.

Then I ran "dmesg" and here is what I got:

interface oce.1 already present in the KLD 'kernel'!
linker_load_file: /boot/kernel/if_oce.ko - unsupported file type


In fact, the kernel was compiled with the "device oce" option (and that's the one I think it's causing the failures) - Just don't know about the linker_load message.
So, I am trying to replace the oce driver without having to recompile the kernel.
 
it might have unresolved symbols or some other problems. you (probably) need to "backport" it to comply with 12.x kernel abi not just compile it as is
you can probably see the error msg in /var/log/messages
try kldload if_oce from #prompt and check messages again
Thank You! Please refer to my answer above.
 
Why is it you are trying to use a 14.0-RELEASE module on 12.3-RELEASE ???
12.3 is EOL
Does if_oce not exist on 12.4-RELEASE?
We have a physical content server (web and fs) with tons of data in production. We are buying a new physical server to replace that one.
So, for now, I was looking for a work-around for that oce driver error. (error message below)

Code:
 kernel: oce0: oce_mbox_get_nic_stats_v0 failed

But, I could verify that I can't override a kernel driver loading a module. (right?)

That´s the answer I am looking for.
I don't know for real if that is a driver error. I am just trying to work-around the problem while I don't get the new server.
Thank You!
 
But, I could verify that I can't override a kernel driver loading a module. (right?)
you probably can do that with a bit of hacking but what if it panics ? (loading 14.x driver on 12.x)
DRIVER_MODULE(oce, pci, oce_driver, oce_devclass, 0, 0);
to
DRIVER_MODULE(ocetest, pci, oce_driver, oce_devclass, 0, 0);
and the use devctl to detach the built in driver and attach ocetest
i wouldn't do it on a live production box and i do lots of weird/nonorthodox stuff
 
you probably can do that with a bit of hacking but what if it panics ? (loading 14.x driver on 12.x)
DRIVER_MODULE(oce, pci, oce_driver, oce_devclass, 0, 0);
to
DRIVER_MODULE(ocetest, pci, oce_driver, oce_devclass, 0, 0);
and the use devctl to detach the built in driver and attach ocetest
i wouldn't do it on a live production box and i do lots of weird/nonorthodox stuff
Yep, I am not going to do that. Better wait for the new hardware to come.
Thanks Anyway!!! Much appreciated!
 
Back
Top