JME(4)
π jme(4) β the Kernel Interfaces Manual page, but make it cute π
okay so bestie, you're looking at the jme page from the Kernel Interfaces Manual, and honestly? it's giving "niche but iconic" β¨ it's literally the JMicron Gigabit/Fast Ethernet driver and we're gonna go through the whole thing together, no skips, no cap π«Ά
πΈ NAME πΈ
jme β the JMicron Gigabit/Fast Ethernet driver. that's her. that's the whole name. short, sweet, main character energy π
β¨ SYNOPSIS β¨
so if you wanna compile this driver into the kernel (instead of loading it as a module), you drop these lines into your kernel configuration file:
device miibus
device jme
or, alternative route bestie β load it as a module at boot time by putting this line in loader.conf(5):
if_jme_load="YES"
literally that's it. two paths, both valid, choose your fighter π
π¦ DESCRIPTION π¦
the jme device driver provides support for JMicron JMC25x PCI Express Gigabit Ethernet controllers and JMicron JMC26x PCI Express Fast Ethernet controllers. yes, both families. we love range π
every single LOM supported by the jme driver has:
- TCP/UDP/IP checksum offload for both transmit and receive
- TCP segmentation offload (TSO)
- hardware VLAN tag stripping/insertion features
- Wake On Lan (WOL)
- an interrupt coalescing/moderation mechanism
- a 64-bit multicast hash filter
that's a stacked feature list and honestly? she ate π₯
the JMC25x also supports Jumbo Frames (up to 9216 bytes), which you can configure via the interface MTU setting. select an MTU larger than 1500 bytes with the ifconfig(8) utility and boom β the adapter is configured to receive and transmit Jumbo Frames β¨
the jme driver supports the following media types:
autoselectβ enable autoselection of the media type and options. the user can manually override the autoselected mode by adding media options torc.conf(5).10baseT/UTPβ set 10Mbps operation.100baseTXβ set 100Mbps (Fast Ethernet) operation.1000baseTXβ set 1000baseTX operation over twisted pair.
and the following media options:
full-duplexβ force full duplex operation.half-duplexβ force half duplex operation.
for more info on configuring this device, see ifconfig(8). iykyk π
π HARDWARE π
the jme device driver provides support for these Ethernet controllers, and yes we're listing all four, no cutting corners:
- JMicron JMC250 PCI Express Gigabit Ethernet controller
- JMicron JMC251 PCI Express Gigabit Ethernet with Card Read Host controller
- JMicron JMC260 PCI Express Fast Ethernet controller
- JMicron JMC261 PCI Express Gigabit Ethernet with Card Read Host controller
look at that lineup. little family portrait π«Ά
β 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.jme.msi_disableβ this tunable disables MSI support on the Ethernet hardware. the default value is0.hw.jme.msix_disableβ this tunable disables MSI-X support on the Ethernet hardware. the default value is0.
two switches, both off by default, both doing exactly what they say on the tin π
π§ SYSCTL VARIABLES π§
the following variables are available as both sysctl(8) variables and loader(8) tunables. double duty, we love a multitasker π
dev.jme.%d.tx_coal_toβ sets the maximum amount of time to delay before sending a Tx completion interrupt, in microseconds. the accepted range is 1 to 65535; the default is 100 (100us).dev.jme.%d.tx_coal_pktβ sets the maximum number of outgoing packets which may be coalesced together into a single Tx completion interrupt. the accepted range is 1 to 255; the default is 8.dev.jme.%d.rx_coal_toβ sets the maximum amount of time to wait for additional packets to arrive (for possible packet coalescing) before firing an Rx completion interrupt, in microseconds. the accepted range is 1 to 65535; the default is 100 (100us).dev.jme.%d.rx_coal_pktβ sets the maximum number of incoming packets which may be coalesced into a single Rx completion interrupt. the accepted range is 1 to 255; the default is 2.dev.jme.%d.process_limitβ sets the maximum number of events that will be processed in a single batch before the handler is requeued into a taskqueue. the accepted range is 10 to 255; the default value is 128 events. and the cute part: the interface does not need to be brought down and up again before a change takes effect π¦
π₯ SEE ALSO π₯
altq(4), arp(4), miibus(4), netintro(4), ng_ether(4), vlan(4), ifconfig(8)
go read them, they're all linked, this is the friend group π
π HISTORY π
the jme driver was written by Pyun YongHyeon <yongari@FreeBSD.org>. it first appeared in FreeBSD 7.1. a legend, honestly π
π CAVEATS π
okay bestie, sit down, this part matters. not joking around here π
the jme driver tries to avoid unnecessary station address reprogramming for controllers that use eFuse to store the station address. the number of times that eFuse can be safely reprogrammed is 16 at most. and here's the scary bit: there is no way to restore the factory default station address once the station address has been reprogrammed via eFuse.
it is highly recommended not to reprogram the station address, and it is the responsibility of the administrator to store the original station address in a safe place when the station address is changed. like, write it down. put it in a vault. do not lose it π¨
also, there are two known 1000baseT link establishment issues with JMC25x:
- if the full mask revision number of the JMC25x controller is less than or equal to 4 and the link partner enabled the IEEE 802.3az Energy Efficient Ethernet feature, the controller will not be able to establish a 1000baseT link.
- also, if the length of the cable is longer than 120 meters, the controller can not establish a 1000baseT link.
the known workaround for these issues is to force manual link configuration with 100baseTX instead of relying on auto-negotiation. you can check the full mask revision number of the controller with the verbose kernel boot option β use the lower nibble of the chip revision number to get the full mask revision of the controller. noted, saved, screenshot taken πΈ
okay that's the whole page, you're officially a jme expert now, no cap π
β¨
source & version: this one comes from Debian, dated March 4, 2012 β so yeah, she's vintage, but vintage is iconic ππ
later bestie, go configure your NIC πΈπ¦
π¦ where this page comes from
- freebsd 14.5: base 14.5
- freebsd 15.1: base 15.1
- Copyright (c) 2008 Pyun YongHyeon
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms