[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>
This commit is contained in:
committed by
David S. Miller
parent
f1543f8b83
commit
61a44b9c4b
@@ -29,35 +29,24 @@
|
||||
* Determine initial path cost based on speed.
|
||||
* using recommendations from 802.1d standard
|
||||
*
|
||||
* Need to simulate user ioctl because not all device's that support
|
||||
* ethtool, use ethtool_ops. Also, since driver might sleep need to
|
||||
* not be holding any locks.
|
||||
* Since driver might sleep need to not be holding any locks.
|
||||
*/
|
||||
static int port_cost(struct net_device *dev)
|
||||
{
|
||||
struct ethtool_cmd ecmd = { ETHTOOL_GSET };
|
||||
struct ifreq ifr;
|
||||
mm_segment_t old_fs;
|
||||
int err;
|
||||
|
||||
strncpy(ifr.ifr_name, dev->name, IFNAMSIZ);
|
||||
ifr.ifr_data = (void __user *) &ecmd;
|
||||
|
||||
old_fs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
err = dev_ethtool(&ifr);
|
||||
set_fs(old_fs);
|
||||
|
||||
if (!err) {
|
||||
switch(ecmd.speed) {
|
||||
case SPEED_100:
|
||||
return 19;
|
||||
case SPEED_1000:
|
||||
return 4;
|
||||
case SPEED_10000:
|
||||
return 2;
|
||||
case SPEED_10:
|
||||
return 100;
|
||||
if (dev->ethtool_ops->get_settings) {
|
||||
struct ethtool_cmd ecmd = { ETHTOOL_GSET };
|
||||
int err = dev->ethtool_ops->get_settings(dev, &ecmd);
|
||||
if (!err) {
|
||||
switch(ecmd.speed) {
|
||||
case SPEED_100:
|
||||
return 19;
|
||||
case SPEED_1000:
|
||||
return 4;
|
||||
case SPEED_10000:
|
||||
return 2;
|
||||
case SPEED_10:
|
||||
return 100;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user