4 ms·
From the source of the RealTek 8129/8139 PCI NIC driver in FreeBSD: (old, not directly relevant, just amusing) https://elixir.bootlin.com/freebsd/v10.2/source/s
by simonjgreen 6mo ago
From the source of the RealTek 8129/8139 PCI NIC driver in FreeBSD: (old, not directly relevant, just amusing) https://elixir.bootlin.com/freebsd/v10.2/source/sys/pci/if_rl.c https://elixir.bootlin.com/freebsd/v10.2/source/sys/pci/if_r...
/*
* RealTek 8129/8139 PCI NIC driver
*
* Supports several extremely cheap PCI 10/100 adapters based on
* the RealTek chipset. Datasheets can be obtained from
* www.realtek.com.tw.
*
* Written by Bill Paul <wpaul@ctr.columbia.edu>
* Electrical Engineering Department
* Columbia University, New York City
/
/
* The RealTek 8139 PCI NIC redefines the meaning of 'low end.' This is
* probably the worst PCI ethernet controller ever made, with the possible
* exception of the FEAST chip made by SMC. The 8139 supports bus-master
* DMA, but it has a terrible interface that nullifies any performance
* gains that bus-master DMA usually offers.
*
* For transmission, the chip offers a series of four TX descriptor
* registers. Each transmit frame must be in a contiguous buffer, aligned
* on a longword (32-bit) boundary. This means we almost always have to
* do mbuf copies in order to transmit a frame, except in the unlikely
* case where a) the packet fits into a single mbuf, and b) the packet
* is 32-bit aligned within the mbuf's data area. The presence of only
* four descriptor registers means that we can never have more than four
* packets queued for transmission at any one time.
*
* Reception is not much better. The driver has to allocate a single large
* buffer area (up to 64K in size) into which the chip will DMA received
* frames. Because we don't know where within this region received packets
* will begin or end, we have no choice but to copy data from the buffer
* area into mbufs in order to pass the packets up to the higher protocol
* levels.
*
* It's impossible given this rotten design to really achieve decent
* performance at 100Mbps, unless you happen to have a 400Mhz PII or
* some equally overmuscled CPU to drive it.
*
* On the bright side, the 8139 does have a built-in PHY, although
* rather than using an MDIO serial interface like most other NICs, the
* PHY registers are directly accessible through the 8139's register
* space. The 8139 supports autonegotiation, as well as a 64-bit multicast
* filter.
*
* The 8129 chip is an older version of the 8139 that uses an external PHY
* chip. The 8129 has a serial MDIO interface for accessing the MII where
* the 8139 lets you directly access the on-board PHY registers. We need
* to select which interface to use depending on the chip type.
*/
- eqvinox 6mo ago8159 != 8139 > /* * RealTek 8129/8139 PCI NIC driver * * Supports several extremely cheap PCI 10/100 adapters based on […] Also, please, for the love of whatever entity, at least remove the *s on that paste. This is just atrocious and disrespectful of any reader.
- daneel_w 6mo agoThose comments are about the 25 years old RTL8139, among the world's first highly affordable and fully-integrated Fast Ethernet controllers that ended up on pretty much every motherboard. Contrary to all of the aged complaints about the RTL8139, I ran several such on OpenBSD (and Windows) for close to ten years with no problems at all.
- kalleboo 6mo ago> unless you happen to have a 400Mhz PII or some equally overmuscled CPU to drive it Oh no!
- ayesha-ashu 5mo ago[flagged]