diff options
author | Matthew Wilcox <matthew@wil.cx> | 2007-07-31 17:00:02 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-07-31 17:00:02 -0400 |
commit | 61a44b9c4b20d40c41fd1b70a4ceb13b75ea79a4 (patch) | |
tree | 26c97ff8b3b5e3827ba927bf5738baa092146d85 /net/core | |
parent | f1543f8b8316f49b318ac6cd8c78a7fd18509311 (diff) |
[NET]: ethtool ops are the only way
During the transition to the ethtool_ops way of doing things, we supported
calling the device's ->do_ioctl method to allow unconverted drivers to
continue working. Those days are long behind us, all in-tree drivers
use the ethtool_ops way, and so we no longer need to support this.
The bonding driver is the biggest beneficiary of this; it no longer
needs to call ioctl() as a fallback if ethtool_ops aren't supported.
Also put a proper copyright statement on ethtool.c.
Signed-off-by: Matthew Wilcox <matthew@wil.cx>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/ethtool.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/net/core/ethtool.c b/net/core/ethtool.c index 0b531e98ec33..2bf565e8d0b3 100644 --- a/net/core/ethtool.c +++ b/net/core/ethtool.c | |||
@@ -3,10 +3,12 @@ | |||
3 | * Copyright (c) 2003 Matthew Wilcox <matthew@wil.cx> | 3 | * Copyright (c) 2003 Matthew Wilcox <matthew@wil.cx> |
4 | * | 4 | * |
5 | * This file is where we call all the ethtool_ops commands to get | 5 | * This file is where we call all the ethtool_ops commands to get |
6 | * the information ethtool needs. We fall back to calling do_ioctl() | 6 | * the information ethtool needs. |
7 | * for drivers which haven't been converted to ethtool_ops yet. | ||
8 | * | 7 | * |
9 | * It's GPL, stupid. | 8 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
10 | */ | 12 | */ |
11 | 13 | ||
12 | #include <linux/module.h> | 14 | #include <linux/module.h> |
@@ -821,7 +823,7 @@ int dev_ethtool(struct ifreq *ifr) | |||
821 | return -ENODEV; | 823 | return -ENODEV; |
822 | 824 | ||
823 | if (!dev->ethtool_ops) | 825 | if (!dev->ethtool_ops) |
824 | goto ioctl; | 826 | return -EOPNOTSUPP; |
825 | 827 | ||
826 | if (copy_from_user(ðcmd, useraddr, sizeof (ethcmd))) | 828 | if (copy_from_user(ðcmd, useraddr, sizeof (ethcmd))) |
827 | return -EFAULT; | 829 | return -EFAULT; |
@@ -960,7 +962,7 @@ int dev_ethtool(struct ifreq *ifr) | |||
960 | rc = ethtool_set_gso(dev, useraddr); | 962 | rc = ethtool_set_gso(dev, useraddr); |
961 | break; | 963 | break; |
962 | default: | 964 | default: |
963 | rc = -EOPNOTSUPP; | 965 | rc = -EOPNOTSUPP; |
964 | } | 966 | } |
965 | 967 | ||
966 | if (dev->ethtool_ops->complete) | 968 | if (dev->ethtool_ops->complete) |
@@ -970,15 +972,6 @@ int dev_ethtool(struct ifreq *ifr) | |||
970 | netdev_features_change(dev); | 972 | netdev_features_change(dev); |
971 | 973 | ||
972 | return rc; | 974 | return rc; |
973 | |||
974 | ioctl: | ||
975 | /* Keep existing behaviour for the moment. */ | ||
976 | if (!capable(CAP_NET_ADMIN)) | ||
977 | return -EPERM; | ||
978 | |||
979 | if (dev->do_ioctl) | ||
980 | return dev->do_ioctl(dev, ifr, SIOCETHTOOL); | ||
981 | return -EOPNOTSUPP; | ||
982 | } | 975 | } |
983 | 976 | ||
984 | EXPORT_SYMBOL(dev_ethtool); | 977 | EXPORT_SYMBOL(dev_ethtool); |