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

Ben Hutchings benh at alioth.debian.org
Thu Dec 3 23:46:56 UTC 2009


Author: benh
Date: Thu Dec  3 23:46:55 2009
New Revision: 14721

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/trunk/linux-2.6/debian/patches/bugfix/all/atl1e-remove-broken-tsov6.patch
   dists/trunk/linux-2.6/debian/patches/features/all/atl1e-allow-offload-disable.patch
Modified:
   dists/trunk/linux-2.6/debian/changelog
   dists/trunk/linux-2.6/debian/patches/series/base

Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog	Thu Dec  3 23:38:41 2009	(r14720)
+++ dists/trunk/linux-2.6/debian/changelog	Thu Dec  3 23:46:55 2009	(r14721)
@@ -30,6 +30,9 @@
     will remain mounted over a suspend/resume cycle. (Closes: #504391)
   * Add MODULE_FIRMWARE declarations to many drivers that lacked them, so
     that missing firmware will be reported automatically during upgrades
+  * 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 ]
   * mac80211 (CVE-2009-4026, CVE-2009-4027):

Added: dists/trunk/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/trunk/linux-2.6/debian/patches/bugfix/all/atl1e-remove-broken-tsov6.patch	Thu Dec  3 23:46:55 2009	(r14721)
@@ -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/trunk/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/trunk/linux-2.6/debian/patches/features/all/atl1e-allow-offload-disable.patch	Thu Dec  3 23:46:55 2009	(r14721)
@@ -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/trunk/linux-2.6/debian/patches/series/base
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/base	Thu Dec  3 23:38:41 2009	(r14720)
+++ dists/trunk/linux-2.6/debian/patches/series/base	Thu Dec  3 23:46:55 2009	(r14721)
@@ -77,3 +77,6 @@
 + features/all/module-firmware/0022-wl12xx-declare-MODULE_FIRMWARE.patch
 + features/all/module-firmware/0023-zd1201-declare-MODULE_FIRMWARE.patch
 + features/all/module-firmware/0024-zd1211rw-declare-MODULE_FIRMWARE.patch
+
++ bugfix/all/atl1e-remove-broken-tsov6.patch
++ features/all/atl1e-allow-offload-disable.patch



More information about the Kernel-svn-changes mailing list