diff options
author | Stanislaw Gruszka <sgruszka@redhat.com> | 2011-03-22 23:54:49 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-04-14 13:02:11 -0700 |
commit | 95bd481686a4848a902a340c4b4b1673cf97092f (patch) | |
tree | 5ad90b65343db7e075b993b8118f46d46aed905c /include | |
parent | 2743bc470c3a9c5f0bfdc085d6ed7b716865bc00 (diff) |
net: fix ethtool->set_flags not intended -EINVAL return value
commit 673e63c688f43104c73aad8ea4237f7ad41fa14d upstream.
After commit d5dbda23804156ae6f35025ade5307a49d1db6d7 "ethtool: Add
support for vlan accleration.", drivers that have NETIF_F_HW_VLAN_TX,
and/or NETIF_F_HW_VLAN_RX feature, but do not allow enable/disable vlan
acceleration via ethtool set_flags, always return -EINVAL from that
function. Fix by returning -EINVAL only if requested features do not
match current settings and can not be changed by driver.
Change any driver that define ethtool->set_flags to use
ethtool_invalid_flags() to avoid similar problems in the future
(also on drivers that do not have the problem).
Tested with modified (to reproduce this bug) myri10ge driver.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/ethtool.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index a3c1874171c..a04b6cee1cb 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h @@ -591,6 +591,7 @@ int ethtool_op_set_ufo(struct net_device *dev, u32 data); u32 ethtool_op_get_flags(struct net_device *dev); int ethtool_op_set_flags(struct net_device *dev, u32 data, u32 supported); void ethtool_ntuple_flush(struct net_device *dev); +bool ethtool_invalid_flags(struct net_device *dev, u32 data, u32 supported); /** * ðtool_ops - Alter and report network device settings |