|
@@ -266,34 +266,6 @@ spider_net_set_promisc(struct spider_net_card *card)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * spider_net_get_mac_address - read mac address from spider card
|
|
|
- * @card: device structure
|
|
|
- *
|
|
|
- * reads MAC address from GMACUNIMACU and GMACUNIMACL registers
|
|
|
- */
|
|
|
-static int
|
|
|
-spider_net_get_mac_address(struct net_device *netdev)
|
|
|
-{
|
|
|
- struct spider_net_card *card = netdev_priv(netdev);
|
|
|
- u32 macl, macu;
|
|
|
-
|
|
|
- macl = spider_net_read_reg(card, SPIDER_NET_GMACUNIMACL);
|
|
|
- macu = spider_net_read_reg(card, SPIDER_NET_GMACUNIMACU);
|
|
|
-
|
|
|
- netdev->dev_addr[0] = (macu >> 24) & 0xff;
|
|
|
- netdev->dev_addr[1] = (macu >> 16) & 0xff;
|
|
|
- netdev->dev_addr[2] = (macu >> 8) & 0xff;
|
|
|
- netdev->dev_addr[3] = macu & 0xff;
|
|
|
- netdev->dev_addr[4] = (macl >> 8) & 0xff;
|
|
|
- netdev->dev_addr[5] = macl & 0xff;
|
|
|
-
|
|
|
- if (!is_valid_ether_addr(&netdev->dev_addr[0]))
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* spider_net_get_descr_status -- returns the status of a descriptor
|
|
|
* @descr: descriptor to look at
|
|
@@ -1345,15 +1317,17 @@ spider_net_set_mac(struct net_device *netdev, void *p)
|
|
|
if (!is_valid_ether_addr(addr->sa_data))
|
|
|
return -EADDRNOTAVAIL;
|
|
|
|
|
|
+ memcpy(netdev->dev_addr, addr->sa_data, ETH_ALEN);
|
|
|
+
|
|
|
/* switch off GMACTPE and GMACRPE */
|
|
|
regvalue = spider_net_read_reg(card, SPIDER_NET_GMACOPEMD);
|
|
|
regvalue &= ~((1 << 5) | (1 << 6));
|
|
|
spider_net_write_reg(card, SPIDER_NET_GMACOPEMD, regvalue);
|
|
|
|
|
|
/* write mac */
|
|
|
- macu = (addr->sa_data[0]<<24) + (addr->sa_data[1]<<16) +
|
|
|
- (addr->sa_data[2]<<8) + (addr->sa_data[3]);
|
|
|
- macl = (addr->sa_data[4]<<8) + (addr->sa_data[5]);
|
|
|
+ macu = (netdev->dev_addr[0]<<24) + (netdev->dev_addr[1]<<16) +
|
|
|
+ (netdev->dev_addr[2]<<8) + (netdev->dev_addr[3]);
|
|
|
+ macl = (netdev->dev_addr[4]<<8) + (netdev->dev_addr[5]);
|
|
|
spider_net_write_reg(card, SPIDER_NET_GMACUNIMACU, macu);
|
|
|
spider_net_write_reg(card, SPIDER_NET_GMACUNIMACL, macl);
|
|
|
|
|
@@ -1364,12 +1338,6 @@ spider_net_set_mac(struct net_device *netdev, void *p)
|
|
|
|
|
|
spider_net_set_promisc(card);
|
|
|
|
|
|
- /* look up, whether we have been successful */
|
|
|
- if (spider_net_get_mac_address(netdev))
|
|
|
- return -EADDRNOTAVAIL;
|
|
|
- if (memcmp(netdev->dev_addr,addr->sa_data,netdev->addr_len))
|
|
|
- return -EADDRNOTAVAIL;
|
|
|
-
|
|
|
return 0;
|
|
|
}
|
|
|
|