MII(4)

πŸ“¦
version 11.0 Β· 2 versions
, in nixpkgs unstable

πŸ’… MII(4) β€” bestie edition πŸ’…

okay so this is mii(4), from the Kernel Interfaces Manual (yes, the kernel interfaces girlies are eating today πŸ“), and it's literally the IEEE 802.3 Media Independent Interface network bus. buckle up bestie, we're going in 🌸


✨ NAME ✨

mii β€” the IEEE 802.3 Media Independent Interface network bus. that's it, that's the whole vibe. no cap.


✨ SYNOPSIS ✨

here's the group chat lineup of PHY drivers, all of them doing the exact same at mii? phy ? thing because they're all main characters in the same show πŸ’…

acphy*    at mii? phy ?       # Altima AC101 10/100 PHY
amhphy*   at mii? phy ?       # AMD 79c901 PHY (10BASE-T part)
bmtphy*   at mii? phy ?       # Broadcom BCM5201/5202 PHYs
brgphy*   at mii? phy ?       # Broadcom BCM5400/5401 Gig-E PHYs
ciphy*    at mii? phy ?       # Cicada CS8201 Gig-E PHYs
dmphy*    at mii? phy ?       # Davicom DM9101 PHYs
exphy*    at mii? phy ?       # 3Com internal PHYs
gentbi*   at mii? phy ?       # Generic ten-bit 1000BASE-X PHYs
glxtphy*  at mii? phy ?       # Level One LXT-1000 Gig-E PHYs
gphyter*  at mii? phy ?       # NatSemi DP83861 Gig-E PHYs
icsphy*   at mii? phy ?       # Integrated Circuit Systems ICS1890 PHYs
ikphy*    at mii? phy ?       # Intel 82563 PHYs
inphy*    at mii? phy ?       # Intel 82555 PHYs
iophy*    at mii? phy ?       # Intel 82553 PHYs
ipgphy*   at mii? phy ?       # IC PLUS IP1000A/IP1001 PHYs
jmphy*    at mii? phy ?       # JMicron
lxtphy*   at mii? phy ?       # Level One LXT-970 PHYs
makphy*   at mii? phy ?       # Marvel 88E1000 Gig-E PHYs
micphy*   at mii? phy ?       # Micrel KSZ9021 Gig-E PHYs
nsphy*    at mii? phy ?       # NatSemi DP83840 PHYs
nsphyter* at mii? phy ?       # NatSemi DP83843/DP83815 PHYs
pnaphy*   at mii? phy ?       # Generic HomePNA PHYs
qsphy*    at mii? phy ?       # Quality Semiconductor QS6612 PHYs
rgephy*   at mii? phy ?       # Realtek 8169S/8110S internal PHYs
rlphy*    at mii? phy ?       # Realtek 8139/8201L PHYs
smscphy*  at mii? phy ?       # SMSC LAN87xx PHYs
sqphy*    at mii? phy ?       # Seeq 80220/80221/80223/80225 PHYs
tlphy*    at mii? phy ?       # ThunderLAN internal PHYs
tqphy*    at mii? phy ?       # TSC Semiconductor 78Q2120 PHYs
ukphy*    at mii? phy ?       # Generic/unknown PHYs
urlphy*   at mii? phy ?       # Realtek RTL8150L internal PHYs

and then, one single glorious option:

options MIIVERBOSE

that's the whole synopsis. thirty-one PHY drivers and one (1) kernel option. iconic behavior honestly πŸŽ€


✨ DESCRIPTION ✨

okay so picture this: Media Independent Interface is an IEEE standard serial bus, and its whole job is connecting MACs (that's network controllers) to PHYs (that's physical media interfaces). like a little matchmaker between your network card and your actual cable situation πŸ”₯

the mii layer is lowkey the bestie of network device drivers everywhere, because it lets them all share support code for all the different PHY models instead of everyone reinventing the wheel. and the glow-up? if your system has zero of a certain PHY, that support can just... not be in your kernel at all. lean. mean. efficient. we love to see it πŸ¦‹

network device drivers that use the mii layer carry the β€œmii” autoconfiguration attribute β€” so your kernel config files can literally just list PHYs like in the synopsis above and be done with it. no fuss, no drama πŸ’œ


🌈 the dmesg moment 🌈

here's what it looks like when the kernel detects a network interface with a PHY attached β€” this is the example straight from the page, look at her go:

epic0 at pci0 dev 12 function 0: SMC EPIC/100 Fast Ethernet
epic0: interrupting at kn20aa irq 4
epic0: SMC9432TX, Ethernet address 00:e0:29:07:17:c4
qsphy0 at epic0 phy 3: QS6612 10/100 media interface, rev. 1
qsphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto

all PHY drivers display the media types the PHY supports when the kernel detects it β€” every single one, no skips. and those media types? they're valid media keywords you can use with the ifconfig(8) program. so like, you literally take those words and go use them. iykyk ✨


✨ SEE ALSO ✨

the whole friend group, in order, because we don't do favorites here 🫢

acphy(4), amhphy(4), bmtphy(4), brgphy(4), ciphy(4), dmphy(4), exphy(4), gentbi(4), glxtphy(4), gphyter(4), icsphy(4), ifmedia(4), ikphy(4), inphy(4), iophy(4), jmphy(4), lxtphy(4), makphy(4), micphy(4), nsphy(4), nsphyter(4), pnaphy(4), qsphy(4), rgephy(4), rlphy(4), smscphy(4), sqphy(4), tlphy(4), tqphy(4), ukphy(4), urlphy(4), ifconfig(8)

and if you're feeling extra and wanna go read about OUI assignments (yes, that's a real thing and yes it's giving spreadsheet energy but it's our spreadsheet), the list lives at:

http://standards.ieee.org/regauth/oui/index.shtml

ok real talk before you go β€” this page is from Debian, dated November 2, 2019. sΓ€ga hej dΓ₯ bestie, mwah πŸ’‹ actually wait no, go plug in an ethernet cable first. then mwah. πŸ’–

that's the whole manpage, you ate that, periodt βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…

πŸ“¦ where this page comes from