OPNsense network card driver

From Thomas-Krenn-Wiki
Jump to navigation Jump to search

OPNsense contains drivers for numerous network cards. This Wiki article shows, which drivers are used for which network card. Some drivers must be activated manually. Information on this topic can be found in the article Activation of OPNsense Chelsio Mellanox Broadcom network card driver.

Driver versions

Driver Supported network chips/cards Driver version

in OPNsense 26.7

Driver version

in OPNsense 26.1

Driver version

in OPNsense 25.7

Driver version

in OPNsense 25.1

Driver version

in OPNsense 24.7

Driver version

in OPNsense 24.1

Driver version

in OPNsense 23.7

Driver version

in OPNsense 23.1

Driver version

in OPNsense 22.7

Driver version

in OPNsense 22.1

Driver version

in OPNsense 21.7

Driver version

in OPNsense 21.1

Driver version

in OPNsense 20.7

Driver version

in OPNsense 20.1

Kernel version FreeBSD 15.1-RELEASE FreeBSD 14.3-RELEASE FreeBSD 14.2-RELEASE FreeBSD 14.1-RELEASE FreeBSD 13.2-RELEASE FreeBSD 13.1-RELEASE FreeBSD 13.0-STABLE FreeBSD 12.1 FreeBSD 11.2
bge
  • Broadcom 1Gbit, for example:
    • H12SSL-i - BCM5720
    • H12SSW-iN - BCM5720
bnxt
  • Broadcom 10GBit, for example:
    • H12SSL-NT/CT - BCM57416
    • H12SSW-NT - BCM57416
    • P210TP - BCM57416
  • Broadcom 25GBit,for example:
    • X12SPZ-SPLN6F - BCM57414
    • P225P - BCM57414
230.0.133.0 (via iflib, driver is activated automatically)[1] 2.20.0.1 (via iflib, driver is now activated automatically)[2] 2.20.0.1 (via iflib)[3] 1.0.0.2 (via iflib)[4]
cxgbe
  • Chelsio T4/T5/T6
em
  • Intel I219
7.6.1-k (via iflib)[5] 7.6.1-k
igb
  • Intel I210
  • Intel I211
  • Intel I350
2.5.28-fbsd (via iflib)[6] 2.5.19-fbsd (via iflib)[7] 7.6.1-k (via iflib)[5] 2.5.3-k
igc
  • Intel I225-V
  • Intel I225-LM
  • Intel I226-V
1 (via iflib)[8]

[9]

1 (via iflib)[10] (not supported)
ix
  • Intel X520
  • Intel X550
  • Intel E610
5.0.1-k(via iflib)[11] 5.0.1-k(via iflib)[12] 4.0.1-k (via iflib)[13] 4.0.1-k (via iflib)[13] 4.0.1-k (via iflib)[14] 3.2.12-k ? (was on OPNsense 18.7)
ixl
  • Intel X700 Series
2.3.3-k (via iflib)[15] 2.3.3-k (via iflib)[16] 2.3.3-k (via iflib)[17] 2.3.3-k (via iflib)[18] 2.3.1-k (via iflib) 2.1.0-k (via iflib)[19] 1.9.9-k ?
ice
  • Intel E800 Series
1.43.3-k (via iflib)[20] 1.39.13-k (via iflib)[21] 1.37.11-k (via iflib)[22] 1.34.2-k (via iflib)[23] (not supported)
mlx4en
  • Mellanox ConnectX-4
mlx5en
  • Mellanox ConnectX-5
re
  • Realtek
See Realtek NICs in OPNsense

iflib

Iflib is a framework for network interface drivers for FreeBSD. It has been developed to remove standard codeblocks (boilerplates) that are often required for modern network interface devices. This should allow driver developers to focus on the specific code required for their hardware.[24]

Iflib was launched in the fall of 2017 and provides a standardized set of functions for implementing network drivers. iflib currently supports most Intel drivers and cards from Broadcom NetExtreme family.[25]

The idea behind iflib was to reduce the redundant code in different NIC drivers to standardize certain kernel interface functions. Most, but not all, NIC drivers have been rewritten by the manufacturers to support the iflib API. The new library handles tasks such as connecting Netmap devices to relieve the manufacturers' driver developers of this burden.

The use of iflib in FreeBSD means that the driver versions have changed. The version that can be seen in the current FreeBSD kernels is the iflib version of the driver and this version number usually does not match the latest version of the driver listed on the manufacturer's website. Some manufacturers provide an iflib version of their FreeBSD driver for newer kernel versions and an older, non-iflib version for older kernels. And the real catch is that, for some NIC drivers, the version number that appears to be newer and higher is actually older code than what might be included in a non-iflib version.[26]

IPS support

An overview, which drivers are supported by IPS, is shown in the following spreadsheet:

Information on ixl driver netmap support:

  • ixl: not working in netmap mode (Comment #30) (bugs.freebsd.org) I'm not surprised this works, because ixl in FreeBSD 12.x is implemented through iflib, and netmap in this case uses iflib to access the hw (and iflib must work, otherwise you would not be able to use an ixl NIC using the traditional networking tools and applications).

More information:

References

  1. [Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 for a system with a built-in Broadcom P225P network card:
    dev.bnxt.0.iflib.driver_version: 230.0.133.0
    dev.bnxt.0.%iommu: rid=0x8100
    dev.bnxt.0.%parent: pci6
    dev.bnxt.0.%pnpinfo: vendor=0x14e4 device=0x16d7 subvendor=0x14e4 subdevice=0x1402 class=0x020000
    dev.bnxt.0.%location: slot=0 function=0 dbsf=pci0:129:0:0
    dev.bnxt.0.%driver: bnxt
    
  2. [Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 for a system with a built-in Broadcom P225P network card:
    dev.bnxt.0.iflib.driver_version: 2.20.0.1
    dev.bnxt.0.%domain: 0
    dev.bnxt.0.%parent: pci6
    dev.bnxt.0.%pnpinfo: vendor=0x14e4 device=0x16d7 subvendor=0x14e4 subdevice=0x1402 class=0x020000
    dev.bnxt.0.%location: slot=0 function=0 dbsf=pci0:24:0:0 handle=\_SB_.PC01.BR1A.H000
    dev.bnxt.0.%driver: bnxt
    dev.bnxt.0.%desc: Broadcom BCM57414 NetXtreme-E 10Gb/25Gb Ethernet
    
  3. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 on a system with a Supermicro H13SSL-NT motherboard:
    dev.bnxt.0.iflib.driver_version: 2.20.0.1
    dev.bnxt.0.%domain: 0
    dev.bnxt.0.%parent: pci1
    dev.bnxt.0.%pnpinfo: vendor=0x14e4 device=0x16d8 subvendor=0x15d9 subdevice=0x16d8 class=0x020000
    dev.bnxt.0.%location: slot=0 function=0 dbsf=pci0:195:0:0
    dev.bnxt.0.%driver: bnxt
    
  4. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5
    dev.bnxt.0.iflib.driver_version: 1.0.0.2
    dev.bnxt.0.%parent: pci2
    dev.bnxt.0.%pnpinfo: vendor=0x14e4 device=0x16d7 subvendor=0x14e4 subdevice=0x1402 class=0x020000
    dev.bnxt.0.%location: slot=0 function=0 dbsf=pci0:194:0:0
    dev.bnxt.0.%driver: bnxt
    dev.bnxt.0.%desc: Broadcom BCM57414 NetXtreme-E 10Gb/25Gb Ethernet
    
  5. 5.0 5.1 Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 on a LES compact 4L with I210:
    dev.igb.0.iflib.driver_version: 7.6.1-k
    dev.igb.0.%parent: pci1
    dev.igb.0.%pnpinfo: vendor=0x8086 device=0x157b subvendor=0x8086 subdevice=0x0000 class=0x020000
    dev.igb.0.%location: slot=0 function=0 dbsf=pci0:1:0:0 handle=\_SB_.PCI0.RP01.PXSX
    dev.igb.0.%driver: igb
    dev.igb.0.%desc: Intel(R) PRO/1000 PCI-Express Network Driver
    
  6. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 on a LES compact 4L:
    dev.igb.0.iflib.driver_version: 2.5.28-fbsd
    dev.igb.0.%iommu: rid=0x100
    dev.igb.0.%parent: pci1
    dev.igb.0.%pnpinfo: vendor=0x8086 device=0x157b subvendor=0x8086 subdevice=0x0000 class=0x020000
    dev.igb.0.%location: slot=0 function=0 dbsf=pci0:1:0:0 handle=\_SB_.PCI0.RP01.PXSX
    dev.igb.0.%driver: igb
    
  7. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 on an Edge 4L:
    dev.igb.0.iflib.driver_version: 2.5.19-fbsd
    dev.igb.0.%parent: pci1
    dev.igb.0.%pnpinfo: vendor=0x8086 device=0x1533 subvendor=0xffff subdevice=0x0000 class=0x020000
    dev.igb.0.%location: slot=0 function=0 dbsf=pci0:1:0:0 handle=\_SB_.PCI0.RP03.PXSX
    dev.igb.0.%driver: igb
    dev.igb.0.%desc: Intel(R) I210 (Copper)
    
  8. Read out via sysctl -a | grep -E 'dev.igc.0.iflib.driver_version' -A 6 on a LES v4:
    dev.igc.0.iflib.driver_version: 1
    dev.igc.0.%parent: pci1
    dev.igc.0.%pnpinfo: vendor=0x8086 device=0x15f3 subvendor=0x8086 subdevice=0x0000 class=0x020000
    dev.igc.0.%location: slot=0 function=0 dbsf=pci0:1:0:0 handle=\_SB_.PC00.RP01.PXSX
    dev.igc.0.%driver: igc
    dev.igc.0.%desc: Intel(R) Ethernet Controller I225-V
    dev.igc.%parent:
    
  9. Read out via sysctl -a | grep -E 'dev.igc.0.iflib.driver_version' -A 6 on a LES plus v4:
    dev.igc.0.iflib.driver_version: 1
    dev.igc.0.%parent: pci2
    dev.igc.0.%pnpinfo: vendor=0x8086 device=0x125c subvendor=0x8086 subdevice=0x0000 class=0x020000
    dev.igc.0.%location: slot=0 function=0 dbsf=pci0:2:0:0 handle=\_SB_.PC00.RP05.PXSX
    dev.igc.0.%driver: igc
    dev.igc.0.%desc: Intel(R) Ethernet Controller I226-V
    dev.igc.%parent:
    
  10. Read out via sysctl -a | grep -E 'dev.igc.0.iflib.driver_version' -A 6 on a LES network 6L:
    dev.igc.0.iflib.driver_version: 1
    dev.igc.0.%parent: pci1
    dev.igc.0.%pnpinfo: vendor=0x8086 device=0x15f3 subvendor=0x8086 subdevice=0x0000 class=0x020000
    dev.igc.0.%location: slot=0 function=0 dbsf=pci0:1:0:0 handle=\_SB_.PCI0.RP05.PXSX
    dev.igc.0.%driver: igc
    dev.igc.0.%desc: Intel(R) Ethernet Controller I225-V
    dev.igc.%parent:
    
  11. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 6 on a system with a Kontron K3881-C motherboard and E610 interfaces:
    dev.ix.0.iflib.driver_version: 5.0.1-k
    dev.ix.0.%iommu: rid=0x700
    dev.ix.0.%parent: pci6
    dev.ix.0.%pnpinfo: vendor=0x8086 device=0x57b0 subvendor=0x8086 subdevice=0x0000 class=0x020000
    dev.ix.0.%location: slot=0 function=0 dbsf=pci0:7:0:0 handle=\_SB_.PC00.RP09.PXSX
    dev.ix.0.%driver: ix
    dev.ix.0.%desc: Intel(R) E610 (10 GbE)
    
  12. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 6 on a system with X520 (82599ES) interfaces:
    dev.ix.0.iflib.driver_version: 5.0.1-k
    dev.ix.0.%iommu: rid=0x200
    dev.ix.0.%parent: pci2
    dev.ix.0.%pnpinfo: vendor=0x8086 device=0x10fb subvendor=0xffff subdevice=0xffff class=0x020000
    dev.ix.0.%location: slot=0 function=0 dbsf=pci0:2:0:0 handle=\_SB_.PC00.RP01.PXSX
    dev.ix.0.%driver: ix
    dev.ix.0.%desc: Intel(R) X520 82599ES (SFI/SFP+)
    
  13. 13.0 13.1 Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 6 on a system with Supermicro X12SPi-TF motherboard:
    dev.ix.0.iflib.driver_version: 4.0.1-k
    dev.ix.0.%domain: 0
    dev.ix.0.%parent: pci1
    dev.ix.0.%pnpinfo: vendor=0x8086 device=0x1563 subvendor=0x15d9 subdevice=0x1563 class=0x020000
    dev.ix.0.%location: slot=0 function=0 dbsf=pci0:1:0:0 handle=\_SB_.PC00.RP01.D033
    dev.ix.0.%driver: ix
    
  14. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 6 on a system with Supermicro X10SDV-TP8F motherboard:
    dev.ix.0.iflib.driver_version: 4.0.1-k
    dev.ix.0.%parent: pci5
    dev.ix.0.%pnpinfo: vendor=0x8086 device=0x15ac subvendor=0x15d9 subdevice=0x15ac class=0x020000
    dev.ix.0.%location: slot=0 function=0 dbsf=pci0:4:0:0 handle=\_SB_.PCI0.BR2C.H000
    dev.ix.0.%driver: ix
    dev.ix.0.%desc: Intel(R) X552 (SFP+)
    
  15. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 with Advantech FWA-3034:
    dev.ixl.0.iflib.driver_version: 2.3.3-k
    dev.ixl.0.%iommu: rid=0x200
    dev.ixl.0.%parent: pci2
    dev.ixl.0.%pnpinfo: vendor=0x8086 device=0x1572 subvendor=0x13fe subdevice=0x303d class=0x020000
    dev.ixl.0.%location: slot=0 function=0 dbsf=pci0:2:0:0 handle=\_SB_.PC00.PEG0.PEGP
    dev.ixl.0.%driver: ixl
    
  16. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 on a system with Asus P13R-M/10G-2T motherboard:
    dev.ixl.0.iflib.driver_version: 2.3.3-k
    dev.ixl.0.%iommu: rid=0x300
    dev.ixl.0.%parent: pci3
    dev.ixl.0.%pnpinfo: vendor=0x8086 device=0x15ff subvendor=0x1043 subdevice=0x0000 class=0x020000
    dev.ixl.0.%location: slot=0 function=0 dbsf=pci0:3:0:0 handle=\_SB_.PC00.RP13.PXSX
    dev.ixl.0.%driver: ixl
    
  17. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 with a system that has a built-in Intel X710-T4 network card:
    dev.ixl.0.iflib.driver_version: 2.3.3-k
    dev.ixl.0.%domain: 0
    dev.ixl.0.%parent: pci8
    dev.ixl.0.%pnpinfo: vendor=0x8086 device=0x15ff subvendor=0x8086 subdevice=0x0001 class=0x020000
    dev.ixl.0.%location: slot=0 function=0 dbsf=pci0:81:0:0 handle=\_SB_.PC02.BR2A.H000
    dev.ixl.0.%driver: ixl
    dev.ixl.0.%desc: Intel(R) Ethernet Controller X710 for 10GBASE-T - 2.3.3-k
    
  18. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 with a system featuring an Asus P12R-M/10G-2T motherboard:
    dev.ixl.0.iflib.driver_version: 2.3.3-k
    dev.ixl.0.%parent: pci3
    dev.ixl.0.%pnpinfo: vendor=0x8086 device=0x15ff subvendor=0x1043 subdevice=0x0000 class=0x020000
    dev.ixl.0.%location: slot=0 function=0 dbsf=pci0:3:0:0 handle=\_SB_.PC00.RP09.D073
    dev.ixl.0.%driver: ixl
    dev.ixl.0.%desc: Intel(R) Ethernet Controller X710 for 10GBASE-T - 2.3.3-k
    
  19. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 with a Supermicro AOC-STG-i4S network card:
    dev.ixl.0.iflib.driver_version: 2.1.0-k
    dev.ixl.0.%parent: pci20
    dev.ixl.0.%pnpinfo: vendor=0x8086 device=0x1572 subvendor=0x15d9 subdevice=0x087e class=0x020000
    dev.ixl.0.%location: slot=0 function=0 dbsf=pci0:65:0:0
    dev.ixl.0.%driver: ixl
    dev.ixl.0.%desc: Intel(R) Ethernet Controller X710 for 10GbE SFP+ - 2.1.0-k
    
  20. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 with Advantech FWA-3034:
    dev.ice.0.iflib.driver_version: 1.43.3-k
    dev.ice.0.%iommu: rid=0x100
    dev.ice.0.%parent: pci1
    dev.ice.0.%pnpinfo: vendor=0x8086 device=0x1593 subvendor=0x13fe subdevice=0x2060 class=0x020000
    dev.ice.0.%location: slot=0 function=0 dbsf=pci0:1:0:0 handle=\_SB_.PC00.PEG1.PEGP
    dev.ice.0.%driver: ice
    
  21. Read out via sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 with a system that has a built-in Intel E810-XXVDA2 network card:
    dev.ice.0.iflib.driver_version: 1.39.13-k
    dev.ice.0.%domain: 0
    dev.ice.0.%parent: pci10
    dev.ice.0.%pnpinfo: vendor=0x8086 device=0x159b subvendor=0x8086 subdevice=0x0003 class=0x020000
    dev.ice.0.%location: slot=0 function=0 dbsf=pci0:138:0:0 handle=\_SB_.PC04.BR4A.H000
    dev.ice.0.%driver: ice
    dev.ice.0.%desc: Intel(R) Ethernet Network Adapter E810-XXV-2 - 1.39.13-k
    
  22. Read out via root@OPNsense:~ # sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5on a system with Supermicro X12SDV-4C-SP6F motherboard:
    dev.ice.0.iflib.driver_version: 1.37.11-k
    dev.ice.0.%domain: 0
    dev.ice.0.%parent: pci8
    dev.ice.0.%pnpinfo: vendor=0x8086 device=0x124d subvendor=0x15d9 subdevice=0x124d class=0x020000
    dev.ice.0.%location: slot=0 function=0 dbsf=pci0:244:0:0 handle=\_SB_.PC02.VP2A.CPM0
    dev.ice.0.%driver: ice
    
  23. Read out via root@OPNsense:~ # sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5 on a system with Supermicro X12SDV-4C-SP6F motherboard:
    dev.ice.1.iflib.driver_version: 1.34.2-k
    dev.ice.1.%domain: 0
    dev.ice.1.%parent: pci8
    dev.ice.1.%pnpinfo: vendor=0x8086 device=0x124d subvendor=0x15d9 subdevice=0x124d class=0x020000
    dev.ice.1.%location: slot=0 function=2 dbsf=pci0:244:0:2 handle=\_SB_.PC02.VP2A.D077
    dev.ice.1.%driver: ice
    
  24. iflib Manpage (www.freebsd.org)
  25. Sam Gwydir: Improving netdump hardware support and performance with iflib - BSDCan 2018 (youtube.com)
  26. Any one know which Intel ix driver for x520 card is in the actual kernel? (forum.netgate.com)


Author: Werner Fischer

Werner Fischer, working in the Knowledge Transfer team at Thomas-Krenn, completed his studies of Computer and Media Security at FH Hagenberg in Austria. He is a regular speaker at many conferences like LinuxTag, OSMC, OSDC, LinuxCon, and author for various IT magazines. In his spare time he enjoys playing the piano and training for a good result at the annual Linz marathon relay.


Author: Thomas Niedermeier

Thomas Niedermeier working in the product management team at Thomas-Krenn, completed his bachelor's degree in business informatics at the Deggendorf University of Applied Sciences. Since 2013 Thomas is employed at Thomas-Krenn and takes care of OPNsense firewalls, the Thomas-Krenn-Wiki and firmware security updates.


Translator: Alina Ranzinger

Alina has been working at Thomas-Krenn.AG since 2024. After her training as multilingual business assistant, she got her job as assistant of the Product Management and is responsible for the translation of texts and for the organisation of the department.


Related articles

Adjustment of OPNsense keyboard layout in the command line
Installation of OPNsense OpenVPN instances site-to-site
Set OPNsense language