From patchwork Fri Nov 2 10:44:20 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Glendinning X-Patchwork-Id: 196538 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 263432C0338 for ; Fri, 2 Nov 2012 21:44:35 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2992553Ab2KBKod (ORCPT ); Fri, 2 Nov 2012 06:44:33 -0400 Received: from cust23-dsl91-135-1.idnet.net ([91.135.1.23]:39841 "EHLO drevil.shawell.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756141Ab2KBKoc (ORCPT ); Fri, 2 Nov 2012 06:44:32 -0400 Received: from ivana.shawell.net (unknown [10.0.20.108]) by drevil.shawell.net (Postfix) with ESMTP id 2725D67AD8; Fri, 2 Nov 2012 10:44:28 +0000 (GMT) From: Steve Glendinning To: netdev@vger.kernel.org Cc: jose.ventura@efacec.com, Steve Glendinning Subject: [PATCH] smsc95xx: fix tx checksum offload for big endian Date: Fri, 2 Nov 2012 10:44:20 +0000 Message-Id: <1351853060-2330-1-git-send-email-steve.glendinning@shawell.net> X-Mailer: git-send-email 1.7.10.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 --- drivers/net/usb/smsc95xx.c | 1 + 1 file changed, 1 insertion(+) 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); } }