Mellanox ConnectX-3 will not initialize

I'm trying to get this card (MCX311A-XCAT) working under 15-RELEASE but something is wrong. The card never even gets a link light. It works under Ubuntu 22 and booting the Windows installer from a flash drive also initializes the card enough to get a link. I added the following to /boot/loader.conf

Code:
if_mlx4en_load="YES"

dmesg shows the following

Code:
mlx4_core0: <mlx4_core> mem 0xfb200000-0xfb2fffff,0xf2800000-0xf2ffffff at device 0.0 on pci6
mlx4_core: Mellanox ConnectX core driver v3.7.1 (November 2021)
mlx4_core: Initializing 0000:06:00.0
mlx4_core0: Unable to determine PCI device chain minimum BW

Running ifconfig -a does not show the interface. kldstat -v shows

Code:
12    1 0xffffffff83c32000    3c028 mlx4.ko (/boot/kernel/mlx4.ko)
    Contains modules:
         Id Name
        520 mlx4
        519 pci/lkpi_mlx4_pci_table

The machine in question is a Lenovo Thinkstation S30. Any ideas?
 
The card works fine in Windows and I was able to upgrade the firmware. Still no luck on FreeBSD. The appropriate sysctl parameter is set to "eth"

Code:
sys.device.mlx4_core0.mlx4_port1: eth
 
Do you need to load the module through loader or could you temporarily not do that and muck around by hand?
ls /boot/kernel | grep mlx shows a few different versions, maybe the mlx4 is not correct?
To me dmesg implies the device is at least seen, ifconfig not working implies a driver is not attached.
 
I took the lines out of /boot/loader.conf but mlx4.ko keeps being loaded. I can do a kldunload mlx4 and then kldstat reports it loaded immediately.

Code:
kldunload -v -f mlx4
Unloading mlx4.ko, id=16


kldstat
16    1 0xffffffff83242000    3c028 mlx4.ko

I also tried in /boot/loader.conf

Code:
mlx4en_load="NO"
mlx4_load="NO"

I tried a new rule in /etc/devd but again it still loads.

Code:
attach 0 {
    match "driver"  "mlx4";
    action          "";
};

attach 0 {
    match "driver"  "mlx4en";
    action          "";
};

Is there no way to prevent it from being loaded?

**edit

Finally made some progress. Commented out an ethernet bridge and tap device on another interface to simplify things. This allowed the mlx4 module to actually unload. This time I did

Code:
kldload mlx4en

And it loaded both mlx4 and mlx4en, giving me a new interface

Code:
mlxen0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
    options=ed07bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWFILTER,VLAN_HWTSO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6,HWSTATS>
    ether ec:0d:9a:13:06:90
    inet 192.168.1.16 netmask 0xffffff00 broadcast 192.168.1.255
    media: Ethernet autoselect (10Gbase-CX4 <full-duplex,rxpause,txpause>)
    status: active
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

Now to recreate this step and make it permanent at boot.
 
Back
Top