Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[firefly-linux-kernel-4.4.55.git] / drivers / net / ixgb / ixgb_main.c
index 593d1a4f217c0fccbf439156825f2556316c624d..d58ca6b578ccc9a9f80fbc3606eb9746341c5d13 100644 (file)
@@ -26,6 +26,8 @@
 
 *******************************************************************************/
 
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
 #include "ixgb.h"
 
 char ixgb_driver_name[] = "ixgb";
@@ -50,7 +52,7 @@ MODULE_PARM_DESC(copybreak,
  * { Vendor ID, Device ID, SubVendor ID, SubDevice ID,
  *   Class, Class Mask, private data (not used) }
  */
-static struct pci_device_id ixgb_pci_tbl[] = {
+static DEFINE_PCI_DEVICE_TABLE(ixgb_pci_tbl) = {
        {INTEL_VENDOR_ID, IXGB_DEVICE_ID_82597EX,
         PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
        {INTEL_VENDOR_ID, IXGB_DEVICE_ID_82597EX_CX4,
@@ -146,10 +148,8 @@ MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
 static int __init
 ixgb_init_module(void)
 {
-       printk(KERN_INFO "%s - version %s\n",
-              ixgb_driver_string, ixgb_driver_version);
-
-       printk(KERN_INFO "%s\n", ixgb_copyright);
+       pr_info("%s - version %s\n", ixgb_driver_string, ixgb_driver_version);
+       pr_info("%s\n", ixgb_copyright);
 
        return pci_register_driver(&ixgb_driver);
 }
@@ -238,8 +238,8 @@ ixgb_up(struct ixgb_adapter *adapter)
        if (err) {
                if (adapter->have_msi)
                        pci_disable_msi(adapter->pdev);
-               DPRINTK(PROBE, ERR,
-                "Unable to allocate interrupt Error: %d\n", err);
+               netif_err(adapter, probe, adapter->netdev,
+                         "Unable to allocate interrupt Error: %d\n", err);
                return err;
        }
 
@@ -310,7 +310,7 @@ ixgb_reset(struct ixgb_adapter *adapter)
 
        ixgb_adapter_stop(hw);
        if (!ixgb_init_hw(hw))
-               DPRINTK(PROBE, ERR, "ixgb_init_hw failed.\n");
+               netif_err(adapter, probe, adapter->netdev, "ixgb_init_hw failed\n");
 
        /* restore frame size information */
        IXGB_WRITE_REG(hw, MFS, hw->max_frame_size << IXGB_MFS_SHIFT);
@@ -368,17 +368,22 @@ ixgb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (err)
                return err;
 
-       if (!(err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) &&
-           !(err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)))) {
-               pci_using_dac = 1;
+       pci_using_dac = 0;
+       err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(64));
+       if (!err) {
+               err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64));
+               if (!err)
+                       pci_using_dac = 1;
        } else {
-               if ((err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) ||
-                   (err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)))) {
-                       printk(KERN_ERR
-                        "ixgb: No usable DMA configuration, aborting\n");
-                       goto err_dma_mask;
+               err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
+               if (err) {
+                       err = dma_set_coherent_mask(&pdev->dev,
+                                                   DMA_BIT_MASK(32));
+                       if (err) {
+                               pr_err("No usable DMA configuration, aborting\n");
+                               goto err_dma_mask;
+                       }
                }
-               pci_using_dac = 0;
        }
 
        err = pci_request_regions(pdev, ixgb_driver_name);
@@ -447,7 +452,8 @@ ixgb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        /* make sure the EEPROM is good */
 
        if (!ixgb_validate_eeprom_checksum(&adapter->hw)) {
-               DPRINTK(PROBE, ERR, "The EEPROM Checksum Is Not Valid\n");
+               netif_err(adapter, probe, adapter->netdev,
+                         "The EEPROM Checksum Is Not Valid\n");
                err = -EIO;
                goto err_eeprom;
        }
@@ -456,7 +462,7 @@ ixgb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        memcpy(netdev->perm_addr, netdev->dev_addr, netdev->addr_len);
 
        if (!is_valid_ether_addr(netdev->perm_addr)) {
-               DPRINTK(PROBE, ERR, "Invalid MAC Address\n");
+               netif_err(adapter, probe, adapter->netdev, "Invalid MAC Address\n");
                err = -EIO;
                goto err_eeprom;
        }
@@ -477,7 +483,8 @@ ixgb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        /* carrier off reporting is important to ethtool even BEFORE open */
        netif_carrier_off(netdev);
 
-       DPRINTK(PROBE, INFO, "Intel(R) PRO/10GbE Network Connection\n");
+       netif_info(adapter, probe, adapter->netdev,
+                  "Intel(R) PRO/10GbE Network Connection\n");
        ixgb_check_options(adapter);
        /* reset the hardware with the new settings */
 
@@ -552,14 +559,14 @@ ixgb_sw_init(struct ixgb_adapter *adapter)
        hw->max_frame_size = netdev->mtu + ENET_HEADER_SIZE + ENET_FCS_LENGTH;
        adapter->rx_buffer_len = hw->max_frame_size + 8; /* + 8 for errata */
 
-       if ((hw->device_id == IXGB_DEVICE_ID_82597EX)
-          || (hw->device_id == IXGB_DEVICE_ID_82597EX_CX4)
-          || (hw->device_id == IXGB_DEVICE_ID_82597EX_LR)
-          || (hw->device_id == IXGB_DEVICE_ID_82597EX_SR))
+       if ((hw->device_id == IXGB_DEVICE_ID_82597EX) ||
+           (hw->device_id == IXGB_DEVICE_ID_82597EX_CX4) ||
+           (hw->device_id == IXGB_DEVICE_ID_82597EX_LR) ||
+           (hw->device_id == IXGB_DEVICE_ID_82597EX_SR))
                hw->mac_type = ixgb_82597;
        else {
                /* should never have loaded on this device */
-               DPRINTK(PROBE, ERR, "unsupported device id\n");
+               netif_err(adapter, probe, adapter->netdev, "unsupported device id\n");
        }
 
        /* enable flow control to be programmed */
@@ -661,8 +668,8 @@ ixgb_setup_tx_resources(struct ixgb_adapter *adapter)
        size = sizeof(struct ixgb_buffer) * txdr->count;
        txdr->buffer_info = vmalloc(size);
        if (!txdr->buffer_info) {
-               DPRINTK(PROBE, ERR,
-                "Unable to allocate transmit descriptor ring memory\n");
+               netif_err(adapter, probe, adapter->netdev,
+                         "Unable to allocate transmit descriptor ring memory\n");
                return -ENOMEM;
        }
        memset(txdr->buffer_info, 0, size);
@@ -672,11 +679,12 @@ ixgb_setup_tx_resources(struct ixgb_adapter *adapter)
        txdr->size = txdr->count * sizeof(struct ixgb_tx_desc);
        txdr->size = ALIGN(txdr->size, 4096);
 
-       txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma);
+       txdr->desc = dma_alloc_coherent(&pdev->dev, txdr->size, &txdr->dma,
+                                       GFP_KERNEL);
        if (!txdr->desc) {
                vfree(txdr->buffer_info);
-               DPRINTK(PROBE, ERR,
-                "Unable to allocate transmit descriptor memory\n");
+               netif_err(adapter, probe, adapter->netdev,
+                         "Unable to allocate transmit descriptor memory\n");
                return -ENOMEM;
        }
        memset(txdr->desc, 0, txdr->size);
@@ -750,8 +758,8 @@ ixgb_setup_rx_resources(struct ixgb_adapter *adapter)
        size = sizeof(struct ixgb_buffer) * rxdr->count;
        rxdr->buffer_info = vmalloc(size);
        if (!rxdr->buffer_info) {
-               DPRINTK(PROBE, ERR,
-                "Unable to allocate receive descriptor ring\n");
+               netif_err(adapter, probe, adapter->netdev,
+                         "Unable to allocate receive descriptor ring\n");
                return -ENOMEM;
        }
        memset(rxdr->buffer_info, 0, size);
@@ -761,12 +769,13 @@ ixgb_setup_rx_resources(struct ixgb_adapter *adapter)
        rxdr->size = rxdr->count * sizeof(struct ixgb_rx_desc);
        rxdr->size = ALIGN(rxdr->size, 4096);
 
-       rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma);
+       rxdr->desc = dma_alloc_coherent(&pdev->dev, rxdr->size, &rxdr->dma,
+                                       GFP_KERNEL);
 
        if (!rxdr->desc) {
                vfree(rxdr->buffer_info);
-               DPRINTK(PROBE, ERR,
-                "Unable to allocate receive descriptors\n");
+               netif_err(adapter, probe, adapter->netdev,
+                         "Unable to allocate receive descriptors\n");
                return -ENOMEM;
        }
        memset(rxdr->desc, 0, rxdr->size);
@@ -882,8 +891,8 @@ ixgb_free_tx_resources(struct ixgb_adapter *adapter)
        vfree(adapter->tx_ring.buffer_info);
        adapter->tx_ring.buffer_info = NULL;
 
-       pci_free_consistent(pdev, adapter->tx_ring.size,
-                           adapter->tx_ring.desc, adapter->tx_ring.dma);
+       dma_free_coherent(&pdev->dev, adapter->tx_ring.size,
+                         adapter->tx_ring.desc, adapter->tx_ring.dma);
 
        adapter->tx_ring.desc = NULL;
 }
@@ -894,12 +903,11 @@ ixgb_unmap_and_free_tx_resource(struct ixgb_adapter *adapter,
 {
        if (buffer_info->dma) {
                if (buffer_info->mapped_as_page)
-                       pci_unmap_page(adapter->pdev, buffer_info->dma,
-                                      buffer_info->length, PCI_DMA_TODEVICE);
+                       dma_unmap_page(&adapter->pdev->dev, buffer_info->dma,
+                                      buffer_info->length, DMA_TO_DEVICE);
                else
-                       pci_unmap_single(adapter->pdev, buffer_info->dma,
-                                        buffer_info->length,
-                                        PCI_DMA_TODEVICE);
+                       dma_unmap_single(&adapter->pdev->dev, buffer_info->dma,
+                                        buffer_info->length, DMA_TO_DEVICE);
                buffer_info->dma = 0;
        }
 
@@ -965,7 +973,8 @@ ixgb_free_rx_resources(struct ixgb_adapter *adapter)
        vfree(rx_ring->buffer_info);
        rx_ring->buffer_info = NULL;
 
-       pci_free_consistent(pdev, rx_ring->size, rx_ring->desc, rx_ring->dma);
+       dma_free_coherent(&pdev->dev, rx_ring->size, rx_ring->desc,
+                         rx_ring->dma);
 
        rx_ring->desc = NULL;
 }
@@ -989,10 +998,10 @@ ixgb_clean_rx_ring(struct ixgb_adapter *adapter)
        for (i = 0; i < rx_ring->count; i++) {
                buffer_info = &rx_ring->buffer_info[i];
                if (buffer_info->dma) {
-                       pci_unmap_single(pdev,
+                       dma_unmap_single(&pdev->dev,
                                         buffer_info->dma,
                                         buffer_info->length,
-                                        PCI_DMA_FROMDEVICE);
+                                        DMA_FROM_DEVICE);
                        buffer_info->dma = 0;
                        buffer_info->length = 0;
                }
@@ -1056,7 +1065,7 @@ ixgb_set_multi(struct net_device *netdev)
 {
        struct ixgb_adapter *adapter = netdev_priv(netdev);
        struct ixgb_hw *hw = &adapter->hw;
-       struct dev_mc_list *mc_ptr;
+       struct netdev_hw_addr *ha;
        u32 rctl;
        int i;
 
@@ -1077,7 +1086,7 @@ ixgb_set_multi(struct net_device *netdev)
                rctl |= IXGB_RCTL_VFE;
        }
 
-       if (netdev->mc_count > IXGB_MAX_NUM_MULTICAST_ADDRESSES) {
+       if (netdev_mc_count(netdev) > IXGB_MAX_NUM_MULTICAST_ADDRESSES) {
                rctl |= IXGB_RCTL_MPE;
                IXGB_WRITE_REG(hw, RCTL, rctl);
        } else {
@@ -1086,13 +1095,12 @@ ixgb_set_multi(struct net_device *netdev)
 
                IXGB_WRITE_REG(hw, RCTL, rctl);
 
-               for (i = 0, mc_ptr = netdev->mc_list;
-                    mc_ptr;
-                    i++, mc_ptr = mc_ptr->next)
-                       memcpy(&mta[i * IXGB_ETH_LENGTH_OF_ADDRESS],
-                              mc_ptr->dmi_addr, IXGB_ETH_LENGTH_OF_ADDRESS);
+               i = 0;
+               netdev_for_each_mc_addr(ha, netdev)
+                       memcpy(&mta[i++ * IXGB_ETH_LENGTH_OF_ADDRESS],
+                              ha->addr, IXGB_ETH_LENGTH_OF_ADDRESS);
 
-               ixgb_mc_addr_list_update(hw, mta, netdev->mc_count, 0);
+               ixgb_mc_addr_list_update(hw, mta, netdev_mc_count(netdev), 0);
        }
 }
 
@@ -1117,15 +1125,14 @@ ixgb_watchdog(unsigned long data)
 
        if (adapter->hw.link_up) {
                if (!netif_carrier_ok(netdev)) {
-                       printk(KERN_INFO "ixgb: %s NIC Link is Up 10 Gbps "
-                              "Full Duplex, Flow Control: %s\n",
-                              netdev->name,
-                              (adapter->hw.fc.type == ixgb_fc_full) ?
-                               "RX/TX" :
-                               ((adapter->hw.fc.type == ixgb_fc_rx_pause) ?
-                                "RX" :
-                                ((adapter->hw.fc.type == ixgb_fc_tx_pause) ?
-                                 "TX" : "None")));
+                       netdev_info(netdev,
+                                   "NIC Link is Up 10 Gbps Full Duplex, Flow Control: %s\n",
+                                   (adapter->hw.fc.type == ixgb_fc_full) ?
+                                   "RX/TX" :
+                                   (adapter->hw.fc.type == ixgb_fc_rx_pause) ?
+                                    "RX" :
+                                   (adapter->hw.fc.type == ixgb_fc_tx_pause) ?
+                                   "TX" : "None");
                        adapter->link_speed = 10000;
                        adapter->link_duplex = FULL_DUPLEX;
                        netif_carrier_on(netdev);
@@ -1134,8 +1141,7 @@ ixgb_watchdog(unsigned long data)
                if (netif_carrier_ok(netdev)) {
                        adapter->link_speed = 0;
                        adapter->link_duplex = 0;
-                       printk(KERN_INFO "ixgb: %s NIC Link is Down\n",
-                              netdev->name);
+                       netdev_info(netdev, "NIC Link is Down\n");
                        netif_carrier_off(netdev);
                }
        }
@@ -1302,9 +1308,10 @@ ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb,
                WARN_ON(buffer_info->dma != 0);
                buffer_info->time_stamp = jiffies;
                buffer_info->mapped_as_page = false;
-               buffer_info->dma = pci_map_single(pdev, skb->data + offset,
-                                                 size, PCI_DMA_TODEVICE);
-               if (pci_dma_mapping_error(pdev, buffer_info->dma))
+               buffer_info->dma = dma_map_single(&pdev->dev,
+                                                 skb->data + offset,
+                                                 size, DMA_TO_DEVICE);
+               if (dma_mapping_error(&pdev->dev, buffer_info->dma))
                        goto dma_error;
                buffer_info->next_to_watch = 0;
 
@@ -1343,10 +1350,9 @@ ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb,
                        buffer_info->time_stamp = jiffies;
                        buffer_info->mapped_as_page = true;
                        buffer_info->dma =
-                               pci_map_page(pdev, frag->page,
-                                            offset, size,
-                                            PCI_DMA_TODEVICE);
-                       if (pci_dma_mapping_error(pdev, buffer_info->dma))
+                               dma_map_page(&pdev->dev, frag->page,
+                                            offset, size, DMA_TO_DEVICE);
+                       if (dma_mapping_error(&pdev->dev, buffer_info->dma))
                                goto dma_error;
                        buffer_info->next_to_watch = 0;
 
@@ -1580,7 +1586,8 @@ ixgb_change_mtu(struct net_device *netdev, int new_mtu)
        /* MTU < 68 is an error for IPv4 traffic, just don't allow it */
        if ((new_mtu < 68) ||
            (max_frame > IXGB_MAX_JUMBO_FRAME_SIZE + ENET_FCS_LENGTH)) {
-               DPRINTK(PROBE, ERR, "Invalid MTU setting %d\n", new_mtu);
+               netif_err(adapter, probe, adapter->netdev,
+                         "Invalid MTU setting %d\n", new_mtu);
                return -EINVAL;
        }
 
@@ -1616,7 +1623,7 @@ ixgb_update_stats(struct ixgb_adapter *adapter)
                return;
 
        if ((netdev->flags & IFF_PROMISC) || (netdev->flags & IFF_ALLMULTI) ||
-          (netdev->mc_count > IXGB_MAX_NUM_MULTICAST_ADDRESSES)) {
+          (netdev_mc_count(netdev) > IXGB_MAX_NUM_MULTICAST_ADDRESSES)) {
                u64 multi = IXGB_READ_REG(&adapter->hw, MPRCL);
                u32 bcast_l = IXGB_READ_REG(&adapter->hw, BPRCL);
                u32 bcast_h = IXGB_READ_REG(&adapter->hw, BPRCH);
@@ -1854,24 +1861,25 @@ ixgb_clean_tx_irq(struct ixgb_adapter *adapter)
                   && !(IXGB_READ_REG(&adapter->hw, STATUS) &
                        IXGB_STATUS_TXOFF)) {
                        /* detected Tx unit hang */
-                       DPRINTK(DRV, ERR, "Detected Tx Unit Hang\n"
-                                       "  TDH                  <%x>\n"
-                                       "  TDT                  <%x>\n"
-                                       "  next_to_use          <%x>\n"
-                                       "  next_to_clean        <%x>\n"
-                                       "buffer_info[next_to_clean]\n"
-                                       "  time_stamp           <%lx>\n"
-                                       "  next_to_watch        <%x>\n"
-                                       "  jiffies              <%lx>\n"
-                                       "  next_to_watch.status <%x>\n",
-                               IXGB_READ_REG(&adapter->hw, TDH),
-                               IXGB_READ_REG(&adapter->hw, TDT),
-                               tx_ring->next_to_use,
-                               tx_ring->next_to_clean,
-                               tx_ring->buffer_info[eop].time_stamp,
-                               eop,
-                               jiffies,
-                               eop_desc->status);
+                       netif_err(adapter, drv, adapter->netdev,
+                                 "Detected Tx Unit Hang\n"
+                                 "  TDH                  <%x>\n"
+                                 "  TDT                  <%x>\n"
+                                 "  next_to_use          <%x>\n"
+                                 "  next_to_clean        <%x>\n"
+                                 "buffer_info[next_to_clean]\n"
+                                 "  time_stamp           <%lx>\n"
+                                 "  next_to_watch        <%x>\n"
+                                 "  jiffies              <%lx>\n"
+                                 "  next_to_watch.status <%x>\n",
+                                 IXGB_READ_REG(&adapter->hw, TDH),
+                                 IXGB_READ_REG(&adapter->hw, TDT),
+                                 tx_ring->next_to_use,
+                                 tx_ring->next_to_clean,
+                                 tx_ring->buffer_info[eop].time_stamp,
+                                 eop,
+                                 jiffies,
+                                 eop_desc->status);
                        netif_stop_queue(netdev);
                }
        }
@@ -1962,10 +1970,10 @@ ixgb_clean_rx_irq(struct ixgb_adapter *adapter, int *work_done, int work_to_do)
                cleaned = true;
                cleaned_count++;
 
-               pci_unmap_single(pdev,
+               dma_unmap_single(&pdev->dev,
                                 buffer_info->dma,
                                 buffer_info->length,
-                                PCI_DMA_FROMDEVICE);
+                                DMA_FROM_DEVICE);
                buffer_info->dma = 0;
 
                length = le16_to_cpu(rx_desc->length);
@@ -2088,10 +2096,10 @@ ixgb_alloc_rx_buffers(struct ixgb_adapter *adapter, int cleaned_count)
                buffer_info->skb = skb;
                buffer_info->length = adapter->rx_buffer_len;
 map_skb:
-               buffer_info->dma = pci_map_single(pdev,
+               buffer_info->dma = dma_map_single(&pdev->dev,
                                                  skb->data,
                                                  adapter->rx_buffer_len,
-                                                 PCI_DMA_FROMDEVICE);
+                                                 DMA_FROM_DEVICE);
 
                rx_desc = IXGB_RX_DESC(*rx_ring, i);
                rx_desc->buff_addr = cpu_to_le64(buffer_info->dma);
@@ -2269,7 +2277,8 @@ static pci_ers_result_t ixgb_io_slot_reset(struct pci_dev *pdev)
        struct ixgb_adapter *adapter = netdev_priv(netdev);
 
        if (pci_enable_device(pdev)) {
-               DPRINTK(PROBE, ERR, "Cannot re-enable PCI device after reset.\n");
+               netif_err(adapter, probe, adapter->netdev,
+                         "Cannot re-enable PCI device after reset\n");
                return PCI_ERS_RESULT_DISCONNECT;
        }
 
@@ -2285,14 +2294,16 @@ static pci_ers_result_t ixgb_io_slot_reset(struct pci_dev *pdev)
 
        /* Make sure the EEPROM is good */
        if (!ixgb_validate_eeprom_checksum(&adapter->hw)) {
-               DPRINTK(PROBE, ERR, "After reset, the EEPROM checksum is not valid.\n");
+               netif_err(adapter, probe, adapter->netdev,
+                         "After reset, the EEPROM checksum is not valid\n");
                return PCI_ERS_RESULT_DISCONNECT;
        }
        ixgb_get_ee_mac_addr(&adapter->hw, netdev->dev_addr);
        memcpy(netdev->perm_addr, netdev->dev_addr, netdev->addr_len);
 
        if (!is_valid_ether_addr(netdev->perm_addr)) {
-               DPRINTK(PROBE, ERR, "After reset, invalid MAC address.\n");
+               netif_err(adapter, probe, adapter->netdev,
+                         "After reset, invalid MAC address\n");
                return PCI_ERS_RESULT_DISCONNECT;
        }
 
@@ -2316,7 +2327,7 @@ static void ixgb_io_resume(struct pci_dev *pdev)
 
        if (netif_running(netdev)) {
                if (ixgb_up(adapter)) {
-                       printk ("ixgb: can't bring device back up after reset\n");
+                       pr_err("can't bring device back up after reset\n");
                        return;
                }
        }