Since it deserved recognition, here's the bit from if_rl.c that John is referring to:
* 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. Rock solid driver for a comically bad chipset. Thanks Bill! On Tue, Feb 12, 2013 at 7:00 PM, John Nielsen <li...@jnielsen.net> wrote: > On Feb 9, 2013, at 5:02 PM, Ronald F. Guilmette <r...@tristatelogic.com> > wrote: > > > P.S. While I appreciate all the friendly advice people here have given > > me, i.e. to go with a card based around some non-Realtek chip, I have to > > say that up until now I have always and consistantly had -zero- problems > > with the many other Realtek-based 10/100 cards that I have owned and > used. > > A bit OT, but I would say that this is _because_ of the FreeBSD driver > (rl, also by Bill Paul). Some of the hardware deficiencies documented in > the manpage and in comments in the if_rl.c are almost comical.. > > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org" > _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"