smsc95xx: fix transmission where ZLP is expected
commitfe13bc44dae6452f49493ceb3cff40d85839b7ea
authorSteve Glendinning <steve.glendinning@smsc.com>
Tue, 22 Sep 2009 04:00:27 +0000 (22 04:00 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 12 Oct 2009 19:40:28 +0000 (12 12:40 -0700)
tree7bfa23788a27c9cec98b488392632727f87fbc2f
parent657453424a3c382035983f9a47306fafea730f6d
smsc95xx: fix transmission where ZLP is expected

[ Upstream commit ec4756238239f1a331d9fb95bad8b281dad56855 ]

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/net/usb/smsc95xx.c
drivers/net/usb/usbnet.c
include/linux/usb/usbnet.h