smsc95xx: fix transmission where ZLP is expected
authorSteve Glendinning <steve.glendinning@smsc.com>
Tue, 22 Sep 2009 04:00:27 +0000 (04:00 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 22 Sep 2009 21:28:26 +0000 (14:28 -0700)
commitec4756238239f1a331d9fb95bad8b281dad56855
tree774936e88cb6c8527473e8e4d30b6a9dc914c1f2
parent36989b90879c785f95b877bdcf65a2527dadd893
smsc95xx: fix transmission where ZLP is expected

Usbnet framework assumes USB hardware doesn't handle zero length
packets, but SMSC LAN95xx requires these to be sent for correct
operation.

This patch fixes an easily reproducible tx lockup when sending a frame
that results in exactly 512 bytes in a USB transmission (e.g. a UDP
frame with 458 data bytes, due to IP headers and our USB headers).  It
adds an extra flag to usbnet for the hardware driver to indicate that
it can handle and requires the zero length packets.

This patch should not affect other usbnet users, please also consider
for -stable.

Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/smsc95xx.c
drivers/net/usb/usbnet.c
include/linux/usb/usbnet.h