summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2006-08-18 03:22:32 +0200
committerDavid S. Miller <davem@davemloft.net>2006-08-18 03:22:32 +0200
commit78eb887733ec8ff5d6e6c69e3c32a187a9303622 (patch)
tree1028d082b0240f04f1b0d8f91b9e2813e329710c /net
parent[NETFILTER]: ip_tables: fix table locking in ipt_do_table (diff)
downloadlinux-78eb887733ec8ff5d6e6c69e3c32a187a9303622.tar.xz
linux-78eb887733ec8ff5d6e6c69e3c32a187a9303622.zip
[BRIDGE]: Disable SG/GSO if TX checksum is off
When the bridge recomputes features, it does not maintain the constraint that SG/GSO must be off if TX checksum is off. This patch adds that constraint. On a completely unrelated note, I've also added TSO6 and TSO_ECN feature bits if GSO is enabled on the underlying device through the new NETIF_F_GSO_SOFTWARE macro. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/bridge/br_if.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index f55ef682ef84..b1211d5342f6 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -386,12 +386,17 @@ void br_features_recompute(struct net_bridge *br)
checksum = 0;
if (feature & NETIF_F_GSO)
- feature |= NETIF_F_TSO;
+ feature |= NETIF_F_GSO_SOFTWARE;
feature |= NETIF_F_GSO;
features &= feature;
}
+ if (!(checksum & NETIF_F_ALL_CSUM))
+ features &= ~NETIF_F_SG;
+ if (!(features & NETIF_F_SG))
+ features &= ~NETIF_F_GSO_MASK;
+
br->dev->features = features | checksum | NETIF_F_LLTX |
NETIF_F_GSO_ROBUST;
}