diff mbox

smsc95xx: fix tx checksum offload for big endian

Message ID 1351853060-2330-1-git-send-email-steve.glendinning@shawell.net
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Steve Glendinning Nov. 2, 2012, 10:44 a.m. UTC
f7b2927 introduced tx checksum offload support for smsc95xx,
and enabled it by default. This feature doesn't take
endianness into account, so causes most tx to fail on
those platforms.

This patch fixes the problem fully by adding the missing
conversion.

An alternate workaround is to disable TX checksum offload
on those platforms. The cpu impact of this feature is very low.

Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net>
---
 drivers/net/usb/smsc95xx.c |    1 +
 1 file changed, 1 insertion(+)

Comments

David Miller Nov. 3, 2012, 7:30 p.m. UTC | #1
From: Steve Glendinning <steve.glendinning@shawell.net>
Date: Fri,  2 Nov 2012 10:44:20 +0000

> f7b2927 introduced tx checksum offload support for smsc95xx,
> and enabled it by default. This feature doesn't take
> endianness into account, so causes most tx to fail on
> those platforms.
> 
> This patch fixes the problem fully by adding the missing
> conversion.
> 
> An alternate workaround is to disable TX checksum offload
> on those platforms. The cpu impact of this feature is very low.
> 
> Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net>

Applied and queued up for -stable, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index 46cd784..34f2e78 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -1398,6 +1398,7 @@  static struct sk_buff *smsc95xx_tx_fixup(struct usbnet *dev,
 		} else {
 			u32 csum_preamble = smsc95xx_calc_csum_preamble(skb);
 			skb_push(skb, 4);
+			cpu_to_le32s(&csum_preamble);
 			memcpy(skb->data, &csum_preamble, 4);
 		}
 	}