IX(4)
π IX(4) β the Intel 10Gb Ethernet driver, explained by your favorite nerd π
okay bestie, sit down, hydrate, because we're talking about ix(4) β the manual page for the Intel 10Gb Ethernet driver. yes it's in the Kernel Interfaces Manual, yes this is the whole vibe, let's go β¨
πΈ SYNOPSIS πΈ
so like, if you want this driver baked into the kernel (main character energy, no modules), you drop these lines into your kernel configuration file:
device iflib
device ix
alternatively β and honestly this is the lowkey easier route β load it as a module at boot time by putting this one line in loader.conf(5):
if_ix_load="YES"
periodt. that's it. π
π¦ DESCRIPTION π¦
the ix driver is what gives you support for Intel(R) 10Gb Ethernet PCIe adapters. and she is not a one-trick pony β the driver supports Jumbo Frames, MSIX, TSO, and RSS. obsessed. π
if you have questions about hardware requirements, go read the documentation that ships with your Intel 10GbE adapter β all of the hardware requirements listed there apply to using it with FreeBSD, fr fr.
Jumbo Frames support comes via the interface MTU setting. pick an MTU bigger than 1500 bytes using the ifconfig(8) utility and you've just configured the adapter to receive and transmit Jumbo Frames. the maximum MTU size for Jumbo Frames is 9710. no cap. π
this driver version supports VLANs. for info on enabling VLANs, see ifconfig(8). iykyk π§
π HARDWARE π
the ix driver supports Intel 10Gb Ethernet PCIe adapters, including:
- Intel(R) Ethernet E610
- Intel(R) Ethernet X553
- Intel(R) Ethernet X552
- Intel(R) Ethernet X550
- Intel(R) Ethernet X540 Bypass
- Intel(R) Ethernet X540
- Intel(R) Ethernet X520 Bypass (82599)
- Intel(R) Ethernet X520 (82599)
- Intel(R) 10 Gigabit Server Adapter (82598EB)
the whole lineup, ate πβ¨
β LOADER TUNABLES β
the ix driver supports these loader tunables, and yes you should know all of them:
hw.ix.max_interrupt_rateβ Maximum interrupts per second.hw.ix.flow_controlβ Default flow control used for all adapters.hw.ix.advertise_speedβ Default advertised speed for all adapters.hw.ix.enable_msixβ Enable Message Signalled Interrupts (MSI-X).hw.ix.allow_unsupported_sfpβ Allow unsupported small form-factor pluggable (SFP) modules. Use at your own risk.hw.ix.enable_fdirβ Enable Flow Director. Flow Director directs Ethernet packets to the core where the packet consuming process, application, container, or microservice is running.hw.ix.enable_rssβ Enable Receive-Side Scaling (RSS). When RSS is enabled, all of the receive data processing for a particular TCP connection is shared across multiple processors or processor cores. Without RSS, all of the processing is performed by a single processor, resulting in inefficient system cache utilization. This has no effect if your system has only one processing unit.hw.ix.enable_aimβ Enable Adaptive Interrupt Moderation (AIM). Vary the interrupt rate over time based on the traffic for that interrupt vector.
the allow_unsupported_sfp one says use at your own risk right in the page, so likeβ¦ don't come for me when your SFP acts up π
π SYSCTL VARIABLES π
the ix driver supports the following sysctl(8) variables. buckle up, this list is long and she's iconic:
dev.ix.?.debug.dump.clustersβ Specify a bitmask to select firmware event clusters to be included in the debug dump. Possible values include:0β All clusters excluding Manageability Transactions0x1β Link cluster0x2β Full CSR Space excluding RCW registers
This feature is only supported on E610 devices.
dev.ix.?.debug.dump.dumpβ Specify1to generate a per-device debugging snapshot. Output must be redirected to a file and decoded by Intel Customer Support.
This feature is only supported on E610.
dev.ix.?.debug.fw_log.severity.<module>β Specify firmware logging verbosity level for the specified module. Available levels include:0β none1β error2β warning3β normal4β verbose
Supported modules: general, ctrl, link, link_topo, dnl, i2c, sdp, mdio, adminq, hdma, lldp, dcbx, dcb, xlr, nvm, auth, vpd, iosf, parser, sw, scheduler, txq, acl, post, watchdog, task_dispatch, mng, synce, health, tsdrv, pfreg, mdlver.
This feature is only supported on E610 devices.
dev.ix.?.debug.fw_log.registerβ Specify1to apply per-device firmware logging configuration.
This feature is only supported on E610 devices.
dev.ix.?.debug.fw_log.on_loadβ Enable firmware logging during driver initialization when set viakenv(1).
This feature is only supported on E610 devices.
heads up: all thefw_logstuff plusdump.clustersanddump.dumpare E610-only. if you don't have an E610, these are giving "not for you bestie" energy π
π DIAGNOSTICS π
when things go sideways, here's the translations:
ix%d: Unable to allocate bus resource: memoryβ A fatal initialization error has occurred. yeah she's not okay.ix%d: Unable to allocate bus resource: interruptβ A fatal initialization error has occurred.ix%d: watchdog timeout -- resettingβ The device has stopped responding to the network, or there is a problem with the network connection (cable).
the watchdog one? check your cable first. it's almost always the cable. π
π«Ά SUPPORT π«Ά
for general information and support, go to the Intel support website at: http://support.intel.com.
if an issue is identified with the released source code on the supported kernel with a supported adapter, email the specific information related to the issue to β¨freebsd@intel.comβ©. be specific, they love that β¨
π₯ SEE ALSO π₯
altq(4), arp(4), iflib(4), netintro(4), ng_ether(4), polling(4), vlan(4), ifconfig(8), sysctl(8)
the whole friend group, all linked π¦
π HISTORY π
the ix device driver first appeared in FreeBSD 7.0. a legend from day one, honestly. π
π AUTHORS π
the ix driver was written by Intel Corporation β¨freebsd@intel.comβ©. thank you intel, genuinely π«Ά
π CAVEATS π
read these carefully, bestie, this is the important tea:
- Intel (R) Flow director support is not fully implemented in FreeBSD at this time and additional work is required before those features can be supported.
- Enabling flow director may route traffic to the wrong RX queue of the NIC, resulting in sub-optimal performance on the receive side.
so likeβ¦ flow director is lowkey not done yet. flip it on and you might get sub-optimal receive performance. you've been warned π
anyway that's the whole ix(4) page, every flag, every tunable, every sysctl, every error string, preserved with love and zero skips π go forth and 10-gigabit, bestie.
this page is from the Debian packaging, dated November 10, 2025 β mwah, see you in the next man page πβ¨
π¦ where this page comes from
- freebsd 14.5: base 14.5
- freebsd 15.1: base 15.1
- Copyright (c) 2001-2008, Intel Corporation
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms