[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