[kernel] r14711 - in dists/lenny/linux-2.6/debian: . patches/bugfix/all patches/features/all patches/series

Ben Hutchings benh at alioth.debian.org
Wed Dec 2 05:12:57 UTC 2009


Author: benh
Date: Wed Dec  2 05:12:53 2009
New Revision: 14711

Log:
atl1e: Remove broken implementation of TSO for TCP/IPv6 (Closes: #558426)
and allow other hardware offloads to be disabled in case they are also buggy

Added:
   dists/lenny/linux-2.6/debian/patches/bugfix/all/atl1e-remove-broken-tsov6.patch
   dists/lenny/linux-2.6/debian/patches/features/all/atl1e-allow-offload-disable.patch
Modified:
   dists/lenny/linux-2.6/debian/changelog
   dists/lenny/linux-2.6/debian/patches/series/21

Modified: dists/lenny/linux-2.6/debian/changelog
==============================================================================
--- dists/lenny/linux-2.6/debian/changelog	Tue Dec  1 17:42:15 2009	(r14710)
+++ dists/lenny/linux-2.6/debian/changelog	Wed Dec  2 05:12:53 2009	(r14711)
@@ -13,6 +13,9 @@
     different build failures
   * usbnet: Set link down initially for drivers that update link state
     (Closes: #444043)
+  * atl1e: Remove broken implementation of TSO for TCP/IPv6
+    (Closes: #558426) and allow other hardware offloads to be disabled in
+    case they are also buggy
 
   [ dann frazier ]
   * floppy: request and release only the ports we actually use

Added: dists/lenny/linux-2.6/debian/patches/bugfix/all/atl1e-remove-broken-tsov6.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/lenny/linux-2.6/debian/patches/bugfix/all/atl1e-remove-broken-tsov6.patch	Wed Dec  2 05:12:53 2009	(r14711)
@@ -0,0 +1,67 @@
+From: Jie Yang <jie.yang at atheros.com>
+Date: Wed, 2 Dec 2009 11:18:34 +0800
+Subject: [PATCH net-next]atl1e:disable NETIF_F_TSO6 for hardware limit
+
+For hardware limit to support TSOV6, just disable this feature
+Signed-off-by: Jie Yang <jie.yang at atheros.com>
+---
+
+ drivers/net/atl1e/atl1e_main.c |   36 ------------------------------------
+ 1 files changed, 0 insertions(+), 36 deletions(-)
+
+diff --git a/drivers/net/atl1e/atl1e_main.c b/drivers/net/atl1e/atl1e_main.c
+index ad17e74..08f8c09 100644
+--- a/drivers/net/atl1e/atl1e_main.c
++++ b/drivers/net/atl1e/atl1e_main.c
+@@ -1664,41 +1664,6 @@ static int atl1e_tso_csum(struct atl1e_adapter *adapter,
+ 			}
+ 			return 0;
+ 		}
+-
+-		if (offload_type & SKB_GSO_TCPV6) {
+-			real_len = (((unsigned char *)ipv6_hdr(skb) - skb->data)
+-					+ ntohs(ipv6_hdr(skb)->payload_len));
+-			if (real_len < skb->len)
+-				pskb_trim(skb, real_len);
+-
+-			/* check payload == 0 byte ? */
+-			hdr_len = (skb_transport_offset(skb) + tcp_hdrlen(skb));
+-			if (unlikely(skb->len == hdr_len)) {
+-				/* only xsum need */
+-				dev_warn(&pdev->dev,
+-					"IPV6 tso with zero data??\n");
+-				goto check_sum;
+-			} else {
+-				tcp_hdr(skb)->check = ~csum_ipv6_magic(
+-						&ipv6_hdr(skb)->saddr,
+-						&ipv6_hdr(skb)->daddr,
+-						0, IPPROTO_TCP, 0);
+-				tpd->word3 |= 1 << TPD_IP_VERSION_SHIFT;
+-				hdr_len >>= 1;
+-				tpd->word3 |= (hdr_len & TPD_V6_IPHLLO_MASK) <<
+-					TPD_V6_IPHLLO_SHIFT;
+-				tpd->word3 |= ((hdr_len >> 3) &
+-					TPD_V6_IPHLHI_MASK) <<
+-					TPD_V6_IPHLHI_SHIFT;
+-				tpd->word3 |= (tcp_hdrlen(skb) >> 2 &
+-					TPD_TCPHDRLEN_MASK) <<
+-					TPD_TCPHDRLEN_SHIFT;
+-				tpd->word3 |= ((skb_shinfo(skb)->gso_size) &
+-					TPD_MSS_MASK) << TPD_MSS_SHIFT;
+-					tpd->word3 |= 1 << TPD_SEGMENT_EN_SHIFT;
+-			}
+-		}
+-		return 0;
+ 	}
+ 
+ check_sum:
+@@ -2287,7 +2252,6 @@ static int atl1e_init_netdev(struct net_device *netdev, struct pci_dev *pdev)
+ 		NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
+ 	netdev->features |= NETIF_F_LLTX;
+ 	netdev->features |= NETIF_F_TSO;
+-	netdev->features |= NETIF_F_TSO6;
+ 
+ 	return 0;
+ }
+
+

Added: dists/lenny/linux-2.6/debian/patches/features/all/atl1e-allow-offload-disable.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/lenny/linux-2.6/debian/patches/features/all/atl1e-allow-offload-disable.patch	Wed Dec  2 05:12:53 2009	(r14711)
@@ -0,0 +1,30 @@
+From cf02d4b259a3b5fa234bf8ffa34aac9c129b0672 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Mon, 30 Nov 2009 02:57:29 +0000
+Subject: [PATCH] atl1e: Allow TX checksum offload and TSO to be disabled and reenabled
+
+---
+ drivers/net/atl1e/atl1e_ethtool.c |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/net/atl1e/atl1e_ethtool.c b/drivers/net/atl1e/atl1e_ethtool.c
+index 60edb9f..b0fb725 100644
+--- a/drivers/net/atl1e/atl1e_ethtool.c
++++ b/drivers/net/atl1e/atl1e_ethtool.c
+@@ -394,11 +394,13 @@ static const struct ethtool_ops atl1e_ethtool_ops = {
+ 	.get_eeprom             = atl1e_get_eeprom,
+ 	.set_eeprom             = atl1e_set_eeprom,
+ 	.get_tx_csum            = atl1e_get_tx_csum,
++	.set_tx_csum            = ethtool_op_set_tx_hw_csum,
+ 	.get_sg                 = ethtool_op_get_sg,
+ 	.set_sg                 = ethtool_op_set_sg,
+ #ifdef NETIF_F_TSO
+ 	.get_tso                = ethtool_op_get_tso,
+ #endif
++	.set_tso                = ethtool_op_set_tso,
+ };
+ 
+ void atl1e_set_ethtool_ops(struct net_device *netdev)
+-- 
+1.6.5.3
+

Modified: dists/lenny/linux-2.6/debian/patches/series/21
==============================================================================
--- dists/lenny/linux-2.6/debian/patches/series/21	Tue Dec  1 17:42:15 2009	(r14710)
+++ dists/lenny/linux-2.6/debian/patches/series/21	Wed Dec  2 05:12:53 2009	(r14711)
@@ -34,3 +34,5 @@
 + bugfix/all/isdn-hfc_usb-fix-read-buffer-overflow.patch
 + bugfix/all/fuse-prevent-fuse_put_request-on-invalid-pointer.patch
 + features/x86/hpilo-new-pci-device.patch
++ bugfix/all/atl1e-remove-broken-tsov6.patch
++ features/all/atl1e-allow-offload-disable.patch



More information about the Kernel-svn-changes mailing list