diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-09-17 11:56:18 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-09-17 11:56:18 -0700 |
commit | 67c9660831f6b6b76866a0838466c83765ffbbd3 (patch) | |
tree | dd3052a219d46b5f565efd30e6e54437340847ba /net | |
parent | 457e9d2233bdde5bb5577df3e2d4d48f84c67b66 (diff) | |
download | op-kernel-dev-67c9660831f6b6b76866a0838466c83765ffbbd3.zip op-kernel-dev-67c9660831f6b6b76866a0838466c83765ffbbd3.tar.gz |
ethtool: change ethtool_set_gro() to use ethtool_op_get_rx_csum
To be able to switch on GRO on a device, ethtool_set_gro() checks this
device provides a get_rx_csum() method.
Some devices dont provide this method, while they do support RX
checksumming.
This patch allows bonding to support GRO :
ethtool -K bond0 gro on
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/ethtool.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/core/ethtool.c b/net/core/ethtool.c index fcd62757..248c25c 100644 --- a/net/core/ethtool.c +++ b/net/core/ethtool.c @@ -1181,8 +1181,11 @@ static int ethtool_set_gro(struct net_device *dev, char __user *useraddr) return -EFAULT; if (edata.data) { - if (!dev->ethtool_ops->get_rx_csum || - !dev->ethtool_ops->get_rx_csum(dev)) + u32 rxcsum = dev->ethtool_ops->get_rx_csum ? + dev->ethtool_ops->get_rx_csum(dev) : + ethtool_op_get_rx_csum(dev); + + if (!rxcsum) return -EINVAL; dev->features |= NETIF_F_GRO; } else |