[smsc95xx] Add driver for SMSC/Microchip LAN95xx USB Ethernet NICs
authorMichael Brown <mcb30@ipxe.org>
Fri, 13 Nov 2015 13:51:17 +0000 (13:51 +0000)
committerMichael Brown <mcb30@ipxe.org>
Tue, 1 Dec 2015 15:37:37 +0000 (15:37 +0000)
commit89c767bfd605a8ff966ccff0e593f0ba8e827f12
treee6a39822f8d7bbbfc100dfa34cabc883822669bc
parent4957285b22b8c8749a7330f0cf11ccda910cfda6
[smsc95xx] Add driver for SMSC/Microchip LAN95xx USB Ethernet NICs

Tested using QEMU and usbredir to expose the LAN9512 chip present on a
Raspberry Pi.

There is a known issue with the LAN9512: an extra two bytes are
appended to every transmitted packet.  These two bytes comprise:

  {   0x00,   0x08 } if packet length == 0 (mod 8)
  { CRC[0],   0x00 } if packet length == 7 (mod 8)
  { CRC[0], CRC[1] } otherwise

The extra bytes are appended whether the Ethernet CRC is generated
manually or added automatically by the hardware.  The issue occurs
with the Linux kernel driver as well as the iPXE driver.  It appears
to be an undocumented hardware errata.

TCP/IP traffic is not affected, since the IP header length field
causes the extraneous bytes to be discarded by the receiver.  However,
protocols that rely on the length of the Ethernet frame (such as FCoE
or iPXE's "lotest" protocol) will be unusable on this hardware.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/net/smsc95xx.c [new file with mode: 0644]
src/drivers/net/smsc95xx.h [new file with mode: 0644]
src/include/ipxe/errfile.h