Transceiver compatibility on NICs: driver whitelists
On a switch, module policy is a line in the network OS; on a server it is a decision made by the NIC driver and firmware, and it differs per vendor, per operating system and per driver version. Intel adapters are the ones that refuse unlisted modules; most others accept anything that parses. This page lists the behaviour by vendor and OS, the documented overrides, the FEC/auto-negotiation rules that decide whether DAC and optics link, and what a coded identity must satisfy on the server side.
Behaviour by vendor
| Vendor / driver | Check | On failure | Override | Notes |
|---|---|---|---|---|
| Intel ixgbe (X520, X540, X550 SFP+) | vendor OUI / PN list of Intel-qualified SFP+ | failed to load because an unsupported SFP+ or QSFP module type was detected, port down | module parameter allow_unsupported_sfp=1 (Linux); reload driver | DAC generally accepted; 1G SFPs limited |
| Intel i40e (X710, XXV710, XL710) | firmware-level qualification of the module | unsupported module in dmesg, link down or "module not qualified" in ethtool | allow_unsupported_sfp=1 on newer i40e; older builds none | XXV710 25G modules strictly checked |
| Intel ice (E810) | NVM/firmware qualification | Possible mis-configuration of the Ethernet port detected / unqualified module | depends on NVM and driver release; some builds honour an unsupported-SFP setting, others reject — check Intel's release notes | most permissive of the Intel line in recent NVM |
| Intel on Windows (PROSet drivers) | same lists | device shows "Network cable unplugged", event log warning | no documented override | use Intel-listed or Intel-coded modules |
| Intel on VMware ESXi (ixgben, i40en, icen) | same lists | link down, vmkernel.log "unsupported module" | module parameters via esxcli system module parameters set where the driver exposes allow_unsupported_sfp; not on all versions | prefer qualified modules in production |
| Nvidia / Mellanox mlx5 (ConnectX) | parses EEPROM; Ethernet: no list | link up; mlxlink shows module info | not needed | InfiniBand mode: fabric manager validates cable/module identity and may flag or downgrade (IB cables) |
| Broadcom bnxt_en (NetXtreme-E) | parses; no list on most SKUs | up | — | OEM-branded (Dell, HPE) firmware may add checks |
| Marvell / QLogic qede | parses | up | — | — |
| AMD Solarflare sfc | parses | up | — | — |
| Chelsio cxgb4 | parses | up | — | — |
| Pensando ionic | parses | up | — | — |
| Server-vendor OEM NICs (Dell, HPE, Lenovo, Cisco UCS VIC) | may add their own lists, esp. Cisco VIC | "unsupported transceiver" in CIMC/UCSM | none officially | UCS VIC accepts Cisco-coded modules |
Behaviour changes with driver and firmware (NVM) versions; verify on the exact combination (Compatibility matrices & firmware).
Applying the Intel override (Linux)
# temporary (until reload)
modprobe -r ixgbe && modprobe ixgbe allow_unsupported_sfp=1
# persistent
echo "options ixgbe allow_unsupported_sfp=1" > /etc/modprobe.d/ixgbe.conf
echo "options i40e allow_unsupported_sfp=1" > /etc/modprobe.d/i40e.conf
dracut -f # or update-initramfs -u
# verify
cat /sys/module/ixgbe/parameters/allow_unsupported_sfp
dmesg | grep -iE 'sfp|module|unsupported'
ethtool -m eth0
For multi-port cards the parameter takes a comma-separated list (one value per port) on some drivers. The setting is not supported by Intel for production; it removes the check, not the electrical requirements.
FEC and auto-negotiation on NICs
| Link type | AN | FEC | Notes |
|---|---|---|---|
| 25G DAC | on (Clause 73) both ends | negotiated (RS or BASE-R per cable class) | most "no link on DAC" cases are AN off on one end |
| 25G SR / LR optics | off; forced 25000 | RS-FEC for SR (required), LR: RS or none — must match switch | ethtool --set-fec eth0 encoding rs |
| 100G DAC | on | RS-FEC | — |
| 100G SR4 / CWDM4 / DR | off | RS-FEC required | — |
| 100G LR4 | off | none (RS on some platforms) | match the switch (FEC & AN) |
| 200G / 400G | off for optics | RS(544) KP4 always | — |
| 10G | off | none | — |
Commands per OS: NIC tools and diagnostics; switch side: Port configuration recipes.
What a coded module must satisfy for a NIC
| Target | Minimum |
|---|---|
| Intel ixgbe/i40e without override | vendor name and PN from Intel's qualified list (Intel-branded E10GSFPSR/E10GSFPLR/E25GSFP28SR or the OEM parts they resell), consistent compliance codes and checksums |
| Intel with override, all permissive vendors | valid checksums and compliance codes — no OEM coding needed |
| Cisco UCS VIC | Cisco-style identity as for Cisco switches (How each NOS validates a module) |
| InfiniBand HCAs | correct cable/module identity per IBTA and the fabric vendor's list |
Coding guidance: Vendor lock & coding, Part numbering.
Typical NIC-side symptoms
| Symptom | Likely cause | Check |
|---|---|---|
| Port absent or "unsupported module" in dmesg | driver whitelist | dmesg, ethtool -m, override or coded module |
| Link down, module recognised, good levels | FEC/AN mismatch, speed forced wrong | ethtool eth0, ethtool --show-fec eth0 (Speed & rate) |
| Link up at wrong speed | auto picked 10G on a dual-rate module | force speed |
| Link up, low throughput | PCIe width/speed | lspci -vv (Ports & PCIe) |
| Module hot, temperature alarms | card in exhaust airflow | DDM via ethtool -m; move card or improve airflow |
| Works in Linux, not in Windows/ESXi | different driver policy | use qualified module for that OS |
| InfiniBand link at reduced width/speed | cable not on the list or too long | ibstat, mlxlink |
In CodingBox
Server-side rejections are diagnosed from the same bytes as switch-side ones. Read vendor name, PN, OUI, compliance codes and checksums on Check transceiver; for Intel-only fleets the code database can hold the Intel identities that the drivers accept.