diff options
author | Lennert Buytenhek <buytenh@marvell.com> | 2008-08-03 04:23:10 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-08-03 04:23:10 -0400 |
commit | e5a4a72d4f88f4389e9340d383ca67031d1b8536 (patch) | |
tree | 487fe8cf472a5b47007830a2666120c8ea5df51c /net/core | |
parent | 745e203164a9057e0de769ff4649e6e455daf753 (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.c | 4 |
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) |