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

svn path=/dists/trunk/linux-2.6/; revision=14721
This commit is contained in:
Ben Hutchings 2009-12-03 23:46:55 +00:00
parent e01e47de00
commit baef4ede8d
4 changed files with 103 additions and 0 deletions

3
debian/changelog vendored
View File

@ -30,6 +30,9 @@ linux-2.6 (2.6.32-1) UNRELEASED; urgency=low
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):

View File

@ -0,0 +1,67 @@
From: Jie Yang <jie.yang@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@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;
}

View File

@ -0,0 +1,30 @@
From cf02d4b259a3b5fa234bf8ffa34aac9c129b0672 Mon Sep 17 00:00:00 2001
From: Ben Hutchings <ben@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

View File

@ -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