DGE(4)

πŸ“¦ version 11.0, in nixpkgs unstable

πŸ’– dge(4) β€” the Intel i82597EX Ten Gigabit Ethernet driver glow-up ✨

okay bestie, sit down, because we're about to talk about the dge manual page from the Kernel Interfaces Manual and honestly? it's giving "niche fiber-optic icon" and I'm obsessed πŸŽ€


🌸 NAME 🌸

dge β€” the Intel i82597EX Ten Gigabit Ethernet driver πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

dge* at pci? dev ? function ?

like, that's the whole vibe check: it attaches at pci?, device dev ?, function function ?. slay.


✨ DESCRIPTION ✨

so the dge device driver supports the Intel i82597EX PRO/10GbE LR Ethernet adapter, and that card uses a single mode fiber (1310nm) interface 🧚 literally fiber, no copper nonsense, we love a main character with taste.

the i82597EX supports IPv4/TCP/UDP checksumming in hardware, plus TCP Segmentation Offloading (TSO) β€” but heads up bestie: the driver currently only supports the hardware checksumming features. the TSO is just sitting there, unbothered, minding its business. if you wanna know how to enable the hardware checksum calculations, go read ifconfig(8) 🫢

the driver also makes use of the ifconfig(8) link flags link0 and link1 to set the PCIX burst size. and the burst size gets set according to this table, no cap:

  • link0 off, link1 off β†’ burst size 512
  • link0 on, link1 off β†’ burst size 1024
  • link0 off, link1 on β†’ burst size 2048
  • link0 on, link1 on β†’ burst size 4096

a larger burst size will increase the transmit capacity of the card dramatically πŸ”₯ but it may have negative effect on other devices in the system πŸ’€ so like, be a little mindful, yeah? it's giving "powerful but please don't wreck the rest of the box."


πŸ’œ DIAGNOSTICS πŸ’œ

okay this is the part where the driver talks back. let's go through every single one because we don't skip πŸ’…

  • dge%d: Tx packet consumes too many DMA segments, dropping... β€” the packet consisted of too many small mbufs and could therefore not be loaded into a DMA map. this is most unlikely β€” the driver can currently handle up to 100 segments β€” but over 80 segments has been seen using large (16k) jumbo frames. 😭 so like, rare, but witnessed.
  • dge%s: device timeout (txfree %d txsfree %d txnext %d) β€” the i82597EX had been given packets to send, but didn't interrupt within 5 seconds. this diagnostic is most likely the result of a hardware failure, and the chip will be reset to resume normal operation. it's giving "the card fell asleep mid-shift" πŸ™ˆ
  • dge%d: Receive overrun β€” if the computer is under heavy load, the software may not be able to keep up removing received datagrams from the receive queue, and will therefore lose datagrams. to avoid this, check that the other end is using the XON/XOFF protocol, if possible, or increase the receive descriptor ring size in the driver 🫢
  • dge%d: symbol error
  • dge%d: parity error β€” an error in the XGMII communication was detected. this is a hardware error in the MAC<->PHY communication bus πŸ’€
  • dge%d: CRC error β€” a CRC error in the received datagram was detected. the error is probably caused in the fiber communication 🧚
  • dge%d: WARNING: reset failed to complete β€” this is a fatal error and means that the hardware is broken and will most likely not function correctly. not me reading this and getting stressed 😭
  • dge%d: unable to allocate or map rx buffer %d error = %d β€” the driver was not able to map a mbuf cluster page to a receive descriptor entry in the receive ring. most likely the system has run out of mbuf clusters or has a too small cluster map. see the errno for more information 🌸

πŸŽ€ SEE ALSO πŸŽ€


⭐ HISTORY ⭐

the dge driver first appeared in NetBSD 2.0. a legend was born, periodt 🌈


πŸ‘‘ AUTHORS πŸ‘‘

the dge driver was written by Anders Magnusson <ragge@ludd.luth.se> β€” thank you for your service, king 🫢


πŸ’€ BUGS πŸ’€

there should be an XGMII framework for the driver to use. that's it. that's the bug. it's giving "unfinished business" and honestly, relatable πŸ™ˆ


and that's the whole page bestie β€” brought to you by the Debian crew, dated March 18, 2004, with the source living under DGE(4) in the Kernel Interfaces Manual. go be iconic with your fiber πŸ’…βœ¨

πŸ“¦ where this page comes from