LE(4)

πŸ’– LE(4) β€” the AMD LANCE / ILACC / PCnet Ethernet driver, bestie edition πŸ’–

Kernel Interfaces Manual Β· section 4 Β· aka the page where we talk about everyone's fave little Ethernet chips from 1994

okay so. sit down, grab a snack πŸ“, because we're about to get into le, and ngl she is iconic. she's the driver for a whole lil family of AMD Ethernet chips and she's been holding it down since basically forever. let's goooo ✨


🌸 NAME 🌸

le β€” the AMD Am7900 LANCE and Am79C9xx ILACC/PCnet Ethernet interface driver πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

So like, you got two ways to get her in the building. Pick your fighter πŸ’–

Way 1: bake her into the kernel. Drop this line into your kernel configuration file:

device le

Way 2: load her as a module at boot time. Then this line goes in loader.conf(5):

if_le_load="YES"
⚠️ okay so for ISA non-PnP adapters you gotta be extra and specify the port address AND the IRQ AND the DRQ numbers in /boot/device.hints. no skipping steps bestie:
hint.le.0.at="isa"
hint.le.0.port="0x280"
hint.le.0.irq="10"
hint.le.0.drq="0"

πŸ‘‘ DESCRIPTION πŸ‘‘

So le provides support for Ethernet adapters based on the AMD Am7990 and Am79C90 (CMOS, pin-compatible) Local Area Network Controller for Ethernet (LANCE) chips. yes the acronym is a whole thing, we love her πŸ’œ

She also supports Ethernet adapters based on the AMD Am79C900 Integrated Local Area Communications Controller (ILACC) plus the Am79C9xx PCnet family of chips, which are basically single-chip implementations of a LANCE chip and a DMA engine. this includes a superset of the PCI bus Ethernet chips that pcn(4) handles.

🫢 but listen. the le driver treats all of these PCI bus Ethernet chips as an AMD Am79C970 PCnet-PCI and does NOT support the extra features like the MII bus and burst mode of AMD Am79C971 PCnet-FAST and greater chips. so for those, pcn(4) should be preferred. she said what she said πŸ’…

Generally, le is aiming at supporting as many different chips on as many different platforms as possible β€” partially at the cost of the best performance with some of these. she's a people pleaser, it's giving versatility over speed, and honestly? respect 😌

Oh and she supports reception and transmission of extended frames for vlan(4). Selective reception of multicast Ethernet frames is provided by a 64-bit mask; multicast destination addresses are hashed to a bit entry using the Ethernet CRC function. math girlies rise up πŸ”₯


πŸŽ€ HARDWARE πŸŽ€

✨ ISA ✨

le supports ISA bus Ethernet adapters which are based on the following chips:

  • AMD Am7990 and Am79C90 LANCE
  • AMD Am79C960 PCnet-ISA
  • AMD Am79C961 PCnet-ISA+
  • AMD Am79C961A PCnet-ISA II

This includes support for the following Ethernet adapters:

ISA non-PnP:

  • BICC Isolan
  • Novell NE2100

ISA PnP:

  • AMD AM1500T/AM2100
  • AMD PCnet-32
  • AMD PCnet-ISA
  • Allied Telesyn AT-1500
  • Boca LANCard Combo
  • Cabletron E2100 Series DNI
  • Cabletron E2200 Single Chip
  • Melco Inc. LGY-IV
  • Novell NE2100
  • Racal InterLan EtherBlaster
😭 heads up: the le driver does not support the selection of media types and options via ifconfig(8) with ISA bus Ethernet adapters. no media menus for the ISA girlies, sorry.

✨ PCI ✨

The PCI bus Ethernet chips supported by le are:

  • AMD Am53C974/Am79C970/Am79C974 PCnet-PCI
  • AMD Am79C970A PCnet-PCI II
  • AMD Am79C971 PCnet-FAST
  • AMD Am79C972 PCnet-FAST+
  • AMD Am79C973/Am79C975 PCnet-FAST III
  • AMD Am79C976 PCnet-PRO
  • AMD Am79C978 PCnet-Home

This includes support for the following Ethernet adapters:

  • AcerLAN NIC P20
  • Allied Telesyn AT-2450 and AT-2700 series
  • VMware emulated AMD Am79C970A PCnet-PCI II interface

le supports the selection of the following media types via ifconfig(8) with PCI bus Ethernet adapters:

  • autoselect β€” turn on autoselection of the media type. she'll pick for you, main character energy πŸ’…
  • 10baseT/UTP β€” select UTP media.
  • 10base5/AUI β€” select AUI/BNC media.

And the following media option is supported with these media types:

  • full-duplex β€” select full duplex operation. both directions at once, we love a multitasker ✨
🫢 note that unlike pcn(4), the le driver does not support selecting 100Mbps (Fast Ethernet) media types. 10 megabit supremacy I guess, periodt πŸ’€

✨ sparc64 ✨

le supports the on-board LANCE interfaces found in Sun Ultra 1 machines. With these on-board interfaces, she allows selection of the following media types via ifconfig(8):

  • autoselect β€” turn on autoselection of the media type.
  • 10baseT/UTP β€” select UTP media.
  • 10base5/AUI β€” select AUI media.

When using autoselection, a default media type is selected for use by examining all ports for carrier. The first media type with which a carrier is detected will be selected. Additionally, if carrier is dropped on a port, the driver will switch between the possible ports until one with carrier is found. it's giving ✨persistence✨ and honestly? we stan πŸ₯°

le also supports the following Sun SBus Ethernet add-on adapters:

  • SCSI HBA and Buffered Ethernet (SBE/S, P/N 501-1869)
  • Fast SCSI and Buffered Ethernet (FSBE/S, P/N 501-2015 and 501-2981)
😭 and AGAIN: the le driver does not support the selection of media types and options via ifconfig(8) with SBus Ethernet add-on adapters. SBus girlies, you get what you get.

For further information on configuring media types and options, see ifconfig(8). 🫢


πŸ’€ DIAGNOSTICS πŸ’€

okay so this is the part where she tells you what went wrong. read these, they're important fr fr.

  • le%d: overflow β€” More packets came in from the Ethernet than there was space in the LANCE receive buffers. Packets were missed. she's full bestie, the inbox is overflowing 😭
  • le%d: receive buffer error β€” The LANCE ran out of buffer space, packet dropped.
  • le%d: lost carrier β€” The Ethernet carrier disappeared during an attempt to transmit. The LANCE will finish transmitting the current packet, but will not automatically retry transmission if there is a collision. she finished the sentence but she's not repeating herself πŸ’…
  • le%d: excessive collisions, tdr %d β€” The Ethernet was extremely busy or jammed, outbound packets were dropped after 16 attempts to retransmit.

TDR is the abbreviation of "Time Domain Reflectometry". The optionally reported TDR value is an internal counter of the interval between the start of a transmission and the occurrence of a collision. This value can be used to determine the distance from the Ethernet tap to the point on the Ethernet cable that is shorted or open (unterminated). nerdy and useful, we love a two-for-one πŸ”₯

  • le%d: dropping chained buffer β€” A packet did not fit into a single receive buffer and was dropped. Since the le driver allocates buffers large enough to receive maximum sized Ethernet packets, this means some other station on the LAN transmitted a packet larger than allowed by the Ethernet standard. someone on your LAN is being messy πŸ™ˆ
  • le%d: transmit buffer error β€” The LANCE ran out of buffer space before finishing the transmission of a packet. If this error occurs, the driver software has a bug. πŸ›
  • le%d: underflow β€” The LANCE ran out of buffer space before finishing the transmission of a packet. If this error occurs, the driver software has a bug. πŸ›
  • le%d: controller failed to initialize β€” Driver failed to start the LANCE. This is potentially a hardware failure. 😭
  • le%d: memory error β€” RAM failed to respond within the timeout when the LANCE wanted to read or write it. This is potentially a hardware failure. 😭
  • le%d: receiver disabled β€” The receiver of the LANCE was turned off due to an error.
  • le%d: transmitter disabled β€” The transmitter of the LANCE was turned off due to an error.

🌈 SEE ALSO 🌈

altq(4), arp(4), intro(4), netintro(4), pcn(4), vlan(4), ifconfig(8)

go read those too, iykyk πŸ’œ


🧚 HISTORY 🧚

The le driver was ported from NetBSD and first appeared in FreeBSD 6.1. The NetBSD version in turn was derived from the le driver which first appeared in 4.4BSD. she's got lore, she's got lineage, she's been around the block πŸ‘‘


🫢 AUTHORS 🫢

The le driver was ported by Marius Strobl <marius@FreeBSD.org>. thank you king, we appreciate you πŸ’–


Debian Β· February 15, 2017 Β· LE(4)

and that's the whole page bestie, tysm for reading, go configure your NIC and slay πŸ’…βœ¨πŸ¦‹πŸŒΈπŸ’–

πŸ“¦ where this page comes from