Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[linux-flexiantxendom0-3.2.10.git] / drivers / net / ethernet / atheros / atl1c / atl1c_main.c
index 47a9bb2..1ef0c92 100644 (file)
@@ -468,6 +468,7 @@ static int atl1c_set_mac_addr(struct net_device *netdev, void *p)
 
        memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
        memcpy(adapter->hw.mac_addr, addr->sa_data, netdev->addr_len);
+       netdev->addr_assign_type &= ~NET_ADDR_RANDOM;
 
        atl1c_hw_set_mac_addr(&adapter->hw);
 
@@ -1765,7 +1766,7 @@ static int atl1c_alloc_rx_buffer(struct atl1c_adapter *adapter, const int ringid
        while (next_info->flags & ATL1C_BUFFER_FREE) {
                rfd_desc = ATL1C_RFD_DESC(rfd_ring, rfd_next_to_use);
 
-               skb = dev_alloc_skb(adapter->rx_buffer_len);
+               skb = netdev_alloc_skb(adapter->netdev, adapter->rx_buffer_len);
                if (unlikely(!skb)) {
                        if (netif_msg_rx_err(adapter))
                                dev_warn(&pdev->dev, "alloc rx buffer failed\n");
@@ -2685,7 +2686,6 @@ static int __devinit atl1c_probe(struct pci_dev *pdev,
        netdev = alloc_etherdev(sizeof(struct atl1c_adapter));
        if (netdev == NULL) {
                err = -ENOMEM;
-               dev_err(&pdev->dev, "etherdev alloc failed\n");
                goto err_alloc_etherdev;
        }
 
@@ -2742,10 +2742,9 @@ static int __devinit atl1c_probe(struct pci_dev *pdev,
                err = -EIO;
                goto err_reset;
        }
-       if (atl1c_read_mac_addr(&adapter->hw) != 0) {
-               err = -EIO;
-               dev_err(&pdev->dev, "get mac address failed\n");
-               goto err_eeprom;
+       if (atl1c_read_mac_addr(&adapter->hw)) {
+               /* got a random MAC address, set NET_ADDR_RANDOM to netdev */
+               netdev->addr_assign_type |= NET_ADDR_RANDOM;
        }
        memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
        memcpy(netdev->perm_addr, adapter->hw.mac_addr, netdev->addr_len);
@@ -2770,7 +2769,6 @@ static int __devinit atl1c_probe(struct pci_dev *pdev,
 err_reset:
 err_register:
 err_sw_init:
-err_eeprom:
        iounmap(adapter->hw.hw_addr);
 err_init_netdev:
 err_ioremap: