aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
authorLennert Buytenhek <buytenh@marvell.com>2008-08-03 04:23:10 -0400
committerDavid S. Miller <davem@davemloft.net>2008-08-03 04:23:10 -0400
commite5a4a72d4f88f4389e9340d383ca67031d1b8536 (patch)
tree487fe8cf472a5b47007830a2666120c8ea5df51c /net/core
parent745e203164a9057e0de769ff4649e6e455daf753 (diff)
net: use software GSO for SG+CSUM capable netdevices
If a netdevice does not support hardware GSO, allowing the stack to use GSO anyway and then splitting the GSO skb into MSS-sized pieces as it is handed to the netdevice for transmitting is likely still a win as far as throughput and/or CPU usage are concerned, since it reduces the number of trips through the output path. This patch enables the use of GSO on any netdevice that supports SG. If a GSO skb is then sent to a netdevice that supports SG but does not support hardware GSO, net/core/dev.c:dev_hard_start_xmit() will take care of doing the necessary GSO segmentation in software. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r--net/core/dev.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index da7acacf02b5..cbf80098980c 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3988,6 +3988,10 @@ int register_netdevice(struct net_device *dev)
3988 } 3988 }
3989 } 3989 }
3990 3990
3991 /* Enable software GSO if SG is supported. */
3992 if (dev->features & NETIF_F_SG)
3993 dev->features |= NETIF_F_GSO;
3994
3991 netdev_initialize_kobject(dev); 3995 netdev_initialize_kobject(dev);
3992 ret = netdev_register_kobject(dev); 3996 ret = netdev_register_kobject(dev);
3993 if (ret) 3997 if (ret)