Взяли новый сервер Dell R840 и с ней шла карточка Broadcom 57416 2 Port 10Gb Base-T. Как видно из статьи, сетевая автоматически не опозналась, а значит гуглим на предмет необходимого драйвера. Им оказался bnxt (согласно FreeBSD). Учитывая, что имена драйверов почти в 99% совпадают с FreeBSD было решено довериться им и проверить.
И так, запускаем snanpci и смотрим на наши карточки:
# scanpci -v
...
pci bus 0x0017 cardnum 0x00 function 0x00: vendor 0x14e4 device 0x16d8 Broadcom Limited BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller CardVendor 0x14e4 card 0x4160 (Broadcom Limited, Card unknown) STATUS 0x0010 COMMAND 0x0006 CLASS 0x02 0x00 0x00 REVISION 0x01 BIST 0x00 HEADER 0x80 LATENCY 0x00 CACHE 0x00 BASE0 0x0000000097e10000 SIZE 65536 MEM64 PREFETCHABLE BASE2 0x0000000097500000 SIZE 1048576 MEM64 PREFETCHABLE BASE4 0x0000000097ea2000 SIZE 8192 MEM64 PREFETCHABLE MAX_LAT 0x00 MIN_GNT 0x00 INT_PIN 0x01 INT_LINE 0x0b pci bus 0x0017 cardnum 0x00 function 0x01: vendor 0x14e4 device 0x16d8 Broadcom Limited BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller CardVendor 0x14e4 card 0x4160 (Broadcom Limited, Card unknown) STATUS 0x0010 COMMAND 0x0006 CLASS 0x02 0x00 0x00 REVISION 0x01 BIST 0x00 HEADER 0x80 LATENCY 0x00 CACHE 0x00 BASE0 0x0000000097e00000 SIZE 65536 MEM64 PREFETCHABLE BASE2 0x0000000096c00000 SIZE 1048576 MEM64 PREFETCHABLE BASE4 0x0000000097ea0000 SIZE 8192 MEM64 PREFETCHABLE MAX_LAT 0x00 MIN_GNT 0x00 INT_PIN 0x02 INT_LINE 0x06
...
Проверим, не опозналась ли карточка нашим драйвером:
# mdb -k Loading modules: [ unix genunix dtrace specfs mac cpu.generic uppc apix scsi_vhci iommu zfs rpcmod lmrc sas sd sockfs ip hook neti arp usba zvmisc random lofs idm sata cpc fcip fctl fcp ksplice ptm smbsrv nfs zvmm ufs logindmux nsmb ipc ] > ::devbindings -q bnxt >
Как видим, не опозналась. Теперь нужно посмотреть в список поддерживаемых устройств /etc/driver_aliases:
$ grep bnxt /etc/driver_aliases
...
Здесь мы увидим много поддерживающих устройств. Теперь перейдём к конкретной идентификации нашей карты. У нас vendor=0x14e4, device=0x16d8, а значит поищем по pciex14e4 в /etc/driver_aliases и 16d8. Здесь есть 16d7 и 16d9, но конкретно 16d8 – нету. Исправляем ситуацию:
# update_drv -a -i 'pciex14e4,16d8' bnxt
После этого в dmesg’e можно увидеть следующее:
Feb 22 11:54:38 SRV mac: [ID 469746 kern.info] NOTICE: bnxt0 registered
Feb 22 11:54:38 SRV bnxt: [ID 611667 kern.info] NOTICE: bnxt0: Broadcom 25Gb Ethernet, bnxt 17.1.8
Feb 22 11:54:38 SRV pcieb: [ID 586369 kern.info] PCIE-device: pci14e4,4160@0, bnxt0
Feb 22 11:54:38 SRV npe: [ID 236367 kern.info] PCI Express-device: pci14e4,4160@0, bnxt0
Feb 22 11:54:38 SRV mac: [ID 469746 kern.info] NOTICE: bnxt1 registered
Feb 22 11:54:38 SRV bnxt: [ID 611667 kern.info] NOTICE: bnxt1: Broadcom 25Gb Ethernet, bnxt 17.1.8
Feb 22 11:54:38 SRV pcieb: [ID 586369 kern.info] PCIE-device: pci14e4,4160@0,1, bnxt1
Feb 22 11:54:38 SRV npe: [ID 236367 kern.info] PCI Express-device: pci14e4,4160@0,1, bnxt1
Проверим binding:
# mdb -k Loading modules: [ unix genunix dtrace specfs mac cpu.generic uppc apix scsi_vhci iommu zfs rpcmod lmrc sas sd sockfs ip hook neti arp usba zvmisc random lofs idm sata cpc fcip fctl fcp ksplice ptm smbsrv nfs zvmm ufs logindmux nsmb ipc ] > ::devbindings -q bnxt ffffa7003873f080 /pci@1,0/pci8086,2030@0/pci14e4,4160@0 /rootnex0/npe1/pcieb3/bnxt0 ffffa7003873ed48 /pci@1,0/pci8086,2030@0/pci14e4,4160@0,1 /rootnex0/npe1/pcieb3/bnxt1
Теперь работает
# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE net0 Ethernet up 1000 full bge0 net1 Ethernet down 0 unknown bge1 net2 Ethernet down 0 unknown bnxt0 net3 Ethernet unknown 0 unknown bnxt1