Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
RDP(4)		       BSD/i386	Kernel Interfaces Manual		RDP(4)

     rdp -- Ethernet driver for	RealTek	RTL 8002 pocket	ethernet

     device rdp0 at isa? port 0x378 irq	7
     device rdp0 at isa? port 0x378 irq	7 flags	0x2

     The rdp device driver supports RealTek RTL	8002-based pocket ethernet
     adapters, connected to a standard parallel	port.

     These adapters seem to belong to the cheaper choices among	pocket ether-
     net adapters.  The	RTL 8002 is the	central	part, containing an interface
     to	BNC and	UTP (10	Mbit/s)	media, as well as a host interface that	is de-
     signed to talk to standard	parallel printer adapters.  For	the full eth-
     ernet adapter to work, it is completed by an external RAM used as the Tx
     and Rx packet buffer (16 K	x 4 for	the RTL	8002), and an EEPROM to	hold
     the assigned ethernet hardware address.  For the RTL 8002,	the EEPROM can
     be	either a standard 93C46	serial EEPROM (which seems to be a common
     choice), or a 74S288 parallel one.	 The latter variant needs the device
     configuration flag	0x1 in order to	work.

     Since standard printer adapters seem to vary wildly among their timing
     requirements, there are currently two possible choices for	the way	data
     are being exchanged between the pocket ethernet adapter and the printer
     interface.	 The default is	the fastest mode the RTL 8002 supports.	 If
     the printer adapter to use	is particularly	slow (which can	be noticed by
     watching the ethernet wire	for crippled packets, or by not	seeing cor-
     reclty received packets), the configuration flag 0x2 can be set in	order
     to	throttle down the rdp driver.  Note that in fast mode, the data	rate
     is	assymetric, sending is a little	faster (up to two times) than receiv-
     ing.  Rates like 150 KB/s for sending and 80 KB/s for receiving are com-
     mon.  For slow mode, both rates are about the same, and in	the range of
     50	KB/s through 70	KB/s.  As always, your mileage may vary.

     In	case the adapter isn't recognized at boot-time,	setting	the
     bootverbose flag (`-v') might help	in diagnosing the reason.  Since the
     RTL 8002 requires the availability	of a working interrupt for the printer
     adapter (unlike the ppc(4)	driver), the rdp driver	fails to attach	if the
     ethernet adapter cannot assert an interrupt at probe time.

     The RTL 8002 doesn't support (hardware) multicast.

     The rdp driver internally sets a flag so it gets probed very early.  This
     way, it is	possible to configure both, an rdp driver as well as a ppc(4)
     driver into the same kernel.  If no RTL 8002 hardware is present, probing
     will eventually detect the	printer	driver.

	   rdp0: configured IRQ	(7) cannot be asserted by device

     The probe routine was unable to get the RTL 8002 asserting	an interrupt
     request through the printer adapter.

	   rdp0: failed	to find	a valid	hardware address in EEPROM

     Since there doesn't seem to be a standard place for storing the hardware
     ethernet address within the EEPROM, the rdp driver	walks the entire (se-
     rial) EEPROM contents until it finds something that looks like a valid
     ethernet hardware address,	based on the IEEE's OUI	assignments.  This di-
     agnostic tells the	driver was unable to find one.	Note: it might as well
     be	the current adapter is one of the rare examples	with a 74S288 EEPROM,
     so	`flags 0x1' should be tried.

	   rdp0: Device	timeout

     After initiating a	packet transmission, the ethernet adapter didn't re-
     turn a notification of the	(successful or failed) transmission.  The
     hardware is likely	to be wedged, and is being reset.

     ng_ether(4), ppc(4), ifconfig(8)

     This driver was written by	Jorg Wunsch, based on RealTek's	packet driver
     for the RTL 8002, as well as on some description of the successor chip,
     RTL 8012, gracefully provided by RealTek.

     There are certainly many of them.

     Since the rdp driver wants	to probe its hardware at boot-time, the
     adapter needs to be present then in order to be detected.

     Only two out of the eight different speed modes RealTek's packet driver
     could handle are implemented.  Thus there might be	hardware where even
     the current slow mode is too fast.

     There should be a DMA transfer test in the	probe routine that figures out
     the usable	mode automatically.

     Abusing a standard	printer	interface for data exchange is error-prone.
     Occasional	stuck hardware shouldn't surprise too much, hopefully the
     timeout routine will catch	these cases.  Flood-pinging is a good example
     of	triggering this	problem.  Likewise, albeit BPF is of course supported,
     it's certainly a bad idea attempting to watch a crowded ethernet wire us-
     ing promiscuous mode.

     Since the RTL 8002	has only 4 KB of Rx buffer space (2 x 2	KB are used as
     Tx	buffers), the usual NFS	deadlock with large packets arriving too
     quickly could happen if a machine using the rdp driver NFS-mounts some
     fast server with the standard NFS blocksize of 8 KB.  (Since NFS can only
     retransmit	entire NFS packets, the	same packet will be retransmitted over
     and over again.)

     The heuristic to find out the ethernet hardware address from the EEPROM
     sucks, but	seems to be the	only sensible generic way that doesn't depend
     on	the actual location in EEPROM.	RealTek's sample driver	placed it di-
     rectly at address 0, other	vendors	picked something like 15, with other
     junk in front of it that must not be confused with	a valid	ethernet ad-

     The driver	should support the successor chip RTL 8012, which seems	to be
     available and used	these days.  (The RTL 8002 is already somewhat aged,
     around 1992/93.)  The RTL 8012 offers support for advanced	printer
     adapter hardware, like bidirectional SPP, or EPP, which could speed up
     the transfers substantially.  The RTL 8012	also supports hardware multi-
     cast, and has the ability to address 64 K x 4 packet buffer RAM.

     The driver	should be layered upon the ppc driver, instead of working
     standalone, and should be available as a loadable module, so the device
     probing can be deferred until the pocket ethernet adapter has actually
     been attached.

BSD			       December	21, 1998			   BSD


Want to link to this manual page? Use this URL:

home | help