diff options
Diffstat (limited to 'drivers/net/natsemi.c')
| -rw-r--r-- | drivers/net/natsemi.c | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c index aa2813e06d0..b78be088c4a 100644 --- a/drivers/net/natsemi.c +++ b/drivers/net/natsemi.c @@ -860,6 +860,9 @@ static int __devinit natsemi_probe1 (struct pci_dev *pdev,  		prev_eedata = eedata;  	} +	/* Store MAC Address in perm_addr */ +	memcpy(dev->perm_addr, dev->dev_addr, ETH_ALEN); +  	dev->base_addr = (unsigned long __force) ioaddr;  	dev->irq = irq; @@ -2817,7 +2820,7 @@ static int netdev_get_ecmd(struct net_device *dev, struct ethtool_cmd *ecmd)  	u32 tmp;  	ecmd->port        = dev->if_port; -	ecmd->speed       = np->speed; +	ethtool_cmd_speed_set(ecmd, np->speed);  	ecmd->duplex      = np->duplex;  	ecmd->autoneg     = np->autoneg;  	ecmd->advertising = 0; @@ -2875,9 +2878,9 @@ static int netdev_get_ecmd(struct net_device *dev, struct ethtool_cmd *ecmd)  		tmp = mii_nway_result(  			np->advertising & mdio_read(dev, MII_LPA));  		if (tmp == LPA_100FULL || tmp == LPA_100HALF) -			ecmd->speed  = SPEED_100; +			ethtool_cmd_speed_set(ecmd, SPEED_100);  		else -			ecmd->speed  = SPEED_10; +			ethtool_cmd_speed_set(ecmd, SPEED_10);  		if (tmp == LPA_100FULL || tmp == LPA_10FULL)  			ecmd->duplex = DUPLEX_FULL;  		else @@ -2905,7 +2908,8 @@ static int netdev_set_ecmd(struct net_device *dev, struct ethtool_cmd *ecmd)  			return -EINVAL;  		}  	} else if (ecmd->autoneg == AUTONEG_DISABLE) { -		if (ecmd->speed != SPEED_10 && ecmd->speed != SPEED_100) +		u32 speed = ethtool_cmd_speed(ecmd); +		if (speed != SPEED_10 && speed != SPEED_100)  			return -EINVAL;  		if (ecmd->duplex != DUPLEX_HALF && ecmd->duplex != DUPLEX_FULL)  			return -EINVAL; @@ -2953,7 +2957,7 @@ static int netdev_set_ecmd(struct net_device *dev, struct ethtool_cmd *ecmd)  		if (ecmd->advertising & ADVERTISED_100baseT_Full)  			np->advertising |= ADVERTISE_100FULL;  	} else { -		np->speed  = ecmd->speed; +		np->speed  = ethtool_cmd_speed(ecmd);  		np->duplex = ecmd->duplex;  		/* user overriding the initial full duplex parm? */  		if (np->duplex == DUPLEX_HALF)  |