diff options
Diffstat (limited to 'drivers/net/dl2k.c')
| -rw-r--r-- | drivers/net/dl2k.c | 29 | 
1 files changed, 9 insertions, 20 deletions
diff --git a/drivers/net/dl2k.c b/drivers/net/dl2k.c index c05db604605..c445457b66d 100644 --- a/drivers/net/dl2k.c +++ b/drivers/net/dl2k.c @@ -1189,10 +1189,10 @@ static int rio_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)  		cmd->transceiver = XCVR_INTERNAL;  	}  	if ( np->link_status ) { -		cmd->speed = np->speed; +		ethtool_cmd_speed_set(cmd, np->speed);  		cmd->duplex = np->full_duplex ? DUPLEX_FULL : DUPLEX_HALF;  	} else { -		cmd->speed = -1; +		ethtool_cmd_speed_set(cmd, -1);  		cmd->duplex = -1;  	}  	if ( np->an_enable) @@ -1219,31 +1219,20 @@ static int rio_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)  	} else {  		np->an_enable = 0;  		if (np->speed == 1000) { -			cmd->speed = SPEED_100; +			ethtool_cmd_speed_set(cmd, SPEED_100);  			cmd->duplex = DUPLEX_FULL;  			printk("Warning!! Can't disable Auto negotiation in 1000Mbps, change to Manual 100Mbps, Full duplex.\n");  		} -		switch(cmd->speed + cmd->duplex) { - -		case SPEED_10 + DUPLEX_HALF: -			np->speed = 10; -			np->full_duplex = 0; -			break; - -		case SPEED_10 + DUPLEX_FULL: +		switch (ethtool_cmd_speed(cmd)) { +		case SPEED_10:  			np->speed = 10; -			np->full_duplex = 1; +			np->full_duplex = (cmd->duplex == DUPLEX_FULL);  			break; -		case SPEED_100 + DUPLEX_HALF: +		case SPEED_100:  			np->speed = 100; -			np->full_duplex = 0; -			break; -		case SPEED_100 + DUPLEX_FULL: -			np->speed = 100; -			np->full_duplex = 1; +			np->full_duplex = (cmd->duplex == DUPLEX_FULL);  			break; -		case SPEED_1000 + DUPLEX_HALF:/* not supported */ -		case SPEED_1000 + DUPLEX_FULL:/* not supported */ +		case SPEED_1000: /* not supported */  		default:  			return -EINVAL;  		}  |