diff --git a/debian/changelog b/debian/changelog index 79508b2c9..c0f3de860 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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): diff --git a/debian/patches/bugfix/all/atl1e-remove-broken-tsov6.patch b/debian/patches/bugfix/all/atl1e-remove-broken-tsov6.patch new file mode 100644 index 000000000..c7710b3ca --- /dev/null +++ b/debian/patches/bugfix/all/atl1e-remove-broken-tsov6.patch @@ -0,0 +1,67 @@ +From: Jie Yang +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 +--- + + 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; + } + + diff --git a/debian/patches/features/all/atl1e-allow-offload-disable.patch b/debian/patches/features/all/atl1e-allow-offload-disable.patch new file mode 100644 index 000000000..98a6ea7ed --- /dev/null +++ b/debian/patches/features/all/atl1e-allow-offload-disable.patch @@ -0,0 +1,30 @@ +From cf02d4b259a3b5fa234bf8ffa34aac9c129b0672 Mon Sep 17 00:00:00 2001 +From: Ben Hutchings +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 + diff --git a/debian/patches/series/base b/debian/patches/series/base index f2cb0d2bf..32650d08a 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -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