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)
|
will remain mounted over a suspend/resume cycle. (Closes: #504391)
|
||||||
* Add MODULE_FIRMWARE declarations to many drivers that lacked them, so
|
* Add MODULE_FIRMWARE declarations to many drivers that lacked them, so
|
||||||
that missing firmware will be reported automatically during upgrades
|
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 ]
|
[ dann frazier ]
|
||||||
* mac80211 (CVE-2009-4026, CVE-2009-4027):
|
* 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/0022-wl12xx-declare-MODULE_FIRMWARE.patch
|
||||||
+ features/all/module-firmware/0023-zd1201-declare-MODULE_FIRMWARE.patch
|
+ features/all/module-firmware/0023-zd1201-declare-MODULE_FIRMWARE.patch
|
||||||
+ features/all/module-firmware/0024-zd1211rw-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