ALC(4)

πŸŽ€ ALC(4) β€” the Atheros Ethernet driver, bestie edition πŸ’…

okay so first things first: this is the manual page for alc, section 4 of the Kernel Interfaces Manual. she's a network driver and she is serving. let's get into it πŸ¦‹


✨ NAME ✨

alc β€” the Atheros AR813x/AR815x/AR816x/AR817x Gigabit/Fast Ethernet driver. yes that's a lot of numbers, no we are not scared of them πŸ’–


✨ SYNOPSIS ✨

so you wanna compile this driver into the kernel? periodt. drop these lines into your kernel configuration file:

device miibus
device alc

orrr, if you'd rather load it as a module at boot time (main character move, honestly), put this line in loader.conf(5):

if_alc_load="YES"

✨ DESCRIPTION ✨

the alc device driver provides support for the Atheros AR813x, AR815x, AR816x and AR817x PCI Express Gigabit/Fast Ethernet controllers. that's the whole job. she does it. 🌸

and like, every single LOM that alc supports comes with TCP/UDP/IP checksum offload for transmit, TCP segmentation offload (TSO), hardware VLAN tag stripping/insertion features, Wake On Lan (WOL), an interrupt moderation mechanism, and a 64-bit multicast hash filter. that's a full glam squad, not just one feature. ✨

the AR813x, AR815x, AR816x and AR817x support Jumbo Frames β€” up to 9216, 6144, 9216 and 9216 bytes, respectively (yes the AR815x is the short one, we don't judge 🫢) β€” and you configure that via the interface MTU setting. pick an MTU larger than 1500 bytes with the ifconfig(8) utility and boom, the adapter is configured to receive and transmit Jumbo Frames. iconic.

πŸ’« media types (the vibe check) πŸ’«

the alc driver supports the following media types:

  • autoselect β€” enables autoselection of the media type and options. and bestie, you can manually override the autoselected mode by adding media options to rc.conf(5). you're in charge. πŸ‘‘
  • 10baseT/UTP β€” sets 10Mbps operation.
  • 100baseTX β€” sets 100Mbps (Fast Ethernet) operation.
  • 1000baseTX β€” sets 1000baseTX operation over twisted pair.

πŸ’« media options πŸ’«

and the alc driver supports the following media options:

  • full-duplex β€” forces full duplex operation.
  • half-duplex β€” forces half duplex operation.

for more info on configuring this device, go see ifconfig(8). iykyk πŸ’œ


✨ HARDWARE ✨

the alc device driver provides support for the following Ethernet controllers. look at this lineup, it's giving roster reveal πŸ”₯

  • Atheros AR8131 PCI Express Gigabit Ethernet controller
  • Atheros AR8132 PCI Express Fast Ethernet controller
  • Atheros AR8151 v1.0 PCI Express Gigabit Ethernet controller
  • Atheros AR8151 v2.0 PCI Express Gigabit Ethernet controller
  • Atheros AR8152 v1.1 PCI Express Fast Ethernet controller
  • Atheros AR8152 v2.0 PCI Express Fast Ethernet controller
  • Atheros AR8161 PCI Express Gigabit Ethernet controller
  • Atheros AR8162 PCI Express Fast Ethernet controller
  • Atheros AR8171 PCI Express Gigabit Ethernet controller
  • Atheros AR8172 PCI Express Fast Ethernet controller
  • Killer E2200 Gigabit Ethernet controller
  • Killer E2400 Gigabit Ethernet controller
  • Killer E2500 Gigabit Ethernet controller

✨ LOADER TUNABLES ✨

tunables can be set at the loader(8) prompt before booting the kernel, or stored in loader.conf(5). your call, bestie πŸŽ€

  • hw.alc.msi_disable β€” this tunable disables MSI support on the Ethernet hardware. the default value is 0.
  • hw.alc.msix_disable β€” this tunable disables MSI-X support on the Ethernet hardware. the default value is 0.

✨ SYSCTL VARIABLES ✨

the following variables are available as both sysctl(8) variables and loader(8) tunables. double duty, we love a versatile queen πŸ’…

  • dev.alc.%d.int_rx_mod β€” maximum amount of time to delay receive interrupt processing, in units of 1us. the accepted range is 0 to 130000, and the default is 100 (100us). a value of 0 completely disables the interrupt moderation.
  • dev.alc.%d.int_tx_mod β€” maximum amount of time to delay transmit interrupt processing, in units of 1us. the accepted range is 0 to 130000, and the default is 1000 (1ms). a value of 0 completely disables the interrupt moderation.
  • dev.alc.%d.process_limit β€” maximum number of Rx frames to be processed in the event loop before rescheduling a taskqueue. the accepted range is 32 to 255, and the default value is 64 events. and here's the cute part: the interface does not need to be brought down and up again before a change takes effect. no drama, no reboot. 🌈

✨ SEE ALSO ✨

altq(4), arp(4), miibus(4), netintro(4), ng_ether(4), vlan(4), ifconfig(8)

go read those too, they're all part of the friend group 🫢


✨ HISTORY ✨

the alc driver was written by Pyun YongHyeon <yongari@FreeBSD.org>. it first appeared in FreeBSD 8.0. shoutout to the author, absolute legend ⭐


and that's the whole page, bestie πŸ’– this one's from the Debian crew, dated August 22, 2016 β€” yes she's an older icon but she still ate, no cap. go configure your NIC and slay πŸ¦‹πŸ’…βœ¨

πŸ“¦ where this page comes from