diff options
Diffstat (limited to 'drivers/net/sis900.c')
| -rw-r--r-- | drivers/net/sis900.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/sis900.c b/drivers/net/sis900.c index 4acd41a093ad..be4465bc0a69 100644 --- a/drivers/net/sis900.c +++ b/drivers/net/sis900.c | |||
| @@ -389,6 +389,7 @@ static const struct net_device_ops sis900_netdev_ops = { | |||
| 389 | .ndo_set_multicast_list = set_rx_mode, | 389 | .ndo_set_multicast_list = set_rx_mode, |
| 390 | .ndo_change_mtu = eth_change_mtu, | 390 | .ndo_change_mtu = eth_change_mtu, |
| 391 | .ndo_validate_addr = eth_validate_addr, | 391 | .ndo_validate_addr = eth_validate_addr, |
| 392 | .ndo_set_mac_address = eth_mac_addr, | ||
| 392 | .ndo_do_ioctl = mii_ioctl, | 393 | .ndo_do_ioctl = mii_ioctl, |
| 393 | .ndo_tx_timeout = sis900_tx_timeout, | 394 | .ndo_tx_timeout = sis900_tx_timeout, |
| 394 | #ifdef CONFIG_NET_POLL_CONTROLLER | 395 | #ifdef CONFIG_NET_POLL_CONTROLLER |
| @@ -508,10 +509,10 @@ static int __devinit sis900_probe(struct pci_dev *pci_dev, | |||
| 508 | else | 509 | else |
| 509 | ret = sis900_get_mac_addr(pci_dev, net_dev); | 510 | ret = sis900_get_mac_addr(pci_dev, net_dev); |
| 510 | 511 | ||
| 511 | if (ret == 0) { | 512 | if (!ret || !is_valid_ether_addr(net_dev->dev_addr)) { |
| 512 | printk(KERN_WARNING "%s: Cannot read MAC address.\n", dev_name); | 513 | random_ether_addr(net_dev->dev_addr); |
| 513 | ret = -ENODEV; | 514 | printk(KERN_WARNING "%s: Unreadable or invalid MAC address," |
| 514 | goto err_unmap_rx; | 515 | "using random generated one\n", dev_name); |
| 515 | } | 516 | } |
| 516 | 517 | ||
| 517 | /* 630ET : set the mii access mode as software-mode */ | 518 | /* 630ET : set the mii access mode as software-mode */ |
