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:
parent
e01e47de00
commit
baef4ede8d
|
@ -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):
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue