OPNsense network card driver
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 |
|
||||||||||||||
| bnxt |
|
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 |
|
||||||||||||||
| em |
|
7.6.1-k (via iflib)[5] | 7.6.1-k | ||||||||||||
| igb |
|
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 |
|
1 (via iflib)[8] | 1 (via iflib)[10] | (not supported) | |||||||||||
| ix |
|
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 |
|
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 |
|
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 |
|
||||||||||||||
| mlx5en |
|
||||||||||||||
| re |
|
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:
- netmap(4) on OPNsense (docs.google.com/spreadsheets)
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:
- OPNsense Webinar: Intrusion Detection – Pro and Contra (TKmag, 16.06.2020)
References
- ↑ [Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5for 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
- ↑ [Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5for 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
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5on 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
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5dev.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.0 5.1 Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5on 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
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5on 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
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5on 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)
- ↑ Read out via
sysctl -a | grep -E 'dev.igc.0.iflib.driver_version' -A 6on 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:
- ↑ Read out via
sysctl -a | grep -E 'dev.igc.0.iflib.driver_version' -A 6on 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:
- ↑ Read out via
sysctl -a | grep -E 'dev.igc.0.iflib.driver_version' -A 6on 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:
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 6on 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)
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 6on 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.0 13.1 Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 6on 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
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 6on 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+)
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5with 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
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5on 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
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5with 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
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5with 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
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5with 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
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5with 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
- ↑ Read out via
sysctl -a | grep -E 'dev.*.iflib.driver_version' -A 5with 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
- ↑ 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
- ↑ 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.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
- ↑ iflib Manpage (www.freebsd.org)
- ↑ Sam Gwydir: Improving netdump hardware support and performance with iflib - BSDCan 2018 (youtube.com)
- ↑ 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.
|



