]> Pileus Git - ~andy/linux/blobdiff - drivers/net/e1000/e1000_ethtool.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw
[~andy/linux] / drivers / net / e1000 / e1000_ethtool.c
index c67e93117271bb7478aac4d0c7d82cbbc19e64f6..d5ff029aa7b226f6ab60c4d96e46c231f19b9c16 100644 (file)
@@ -346,7 +346,7 @@ static int e1000_set_tso(struct net_device *netdev, u32 data)
 
        netdev->features &= ~NETIF_F_TSO6;
 
-       DPRINTK(PROBE, INFO, "TSO is %s\n", data ? "Enabled" : "Disabled");
+       e_info("TSO is %s\n", data ? "Enabled" : "Disabled");
        adapter->tso_force = true;
        return 0;
 }
@@ -714,9 +714,9 @@ static bool reg_pattern_test(struct e1000_adapter *adapter, u64 *data, int reg,
                writel(write & test[i], address);
                read = readl(address);
                if (read != (write & test[i] & mask)) {
-                       DPRINTK(DRV, ERR, "pattern test reg %04X failed: "
-                               "got 0x%08X expected 0x%08X\n",
-                               reg, read, (write & test[i] & mask));
+                       e_info("pattern test reg %04X failed: "
+                              "got 0x%08X expected 0x%08X\n",
+                              reg, read, (write & test[i] & mask));
                        *data = reg;
                        return true;
                }
@@ -734,9 +734,9 @@ static bool reg_set_and_check(struct e1000_adapter *adapter, u64 *data, int reg,
        writel(write & mask, address);
        read = readl(address);
        if ((read & mask) != (write & mask)) {
-               DPRINTK(DRV, ERR, "set/check reg %04X test failed: "
-                       "got 0x%08X expected 0x%08X\n",
-                       reg, (read & mask), (write & mask));
+               e_err("set/check reg %04X test failed: "
+                     "got 0x%08X expected 0x%08X\n",
+                     reg, (read & mask), (write & mask));
                *data = reg;
                return true;
        }
@@ -779,8 +779,8 @@ static int e1000_reg_test(struct e1000_adapter *adapter, u64 *data)
        ew32(STATUS, toggle);
        after = er32(STATUS) & toggle;
        if (value != after) {
-               DPRINTK(DRV, ERR, "failed STATUS register test got: "
-                       "0x%08X expected: 0x%08X\n", after, value);
+               e_err("failed STATUS register test got: "
+                     "0x%08X expected: 0x%08X\n", after, value);
                *data = 1;
                return 1;
        }
@@ -894,8 +894,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
                *data = 1;
                return -1;
        }
-       DPRINTK(HW, INFO, "testing %s interrupt\n",
-               (shared_int ? "shared" : "unshared"));
+       e_info("testing %s interrupt\n", (shared_int ? "shared" : "unshared"));
 
        /* Disable all the interrupts */
        ew32(IMC, 0xFFFFFFFF);
@@ -980,9 +979,10 @@ static void e1000_free_desc_rings(struct e1000_adapter *adapter)
        if (txdr->desc && txdr->buffer_info) {
                for (i = 0; i < txdr->count; i++) {
                        if (txdr->buffer_info[i].dma)
-                               pci_unmap_single(pdev, txdr->buffer_info[i].dma,
+                               dma_unmap_single(&pdev->dev,
+                                                txdr->buffer_info[i].dma,
                                                 txdr->buffer_info[i].length,
-                                                PCI_DMA_TODEVICE);
+                                                DMA_TO_DEVICE);
                        if (txdr->buffer_info[i].skb)
                                dev_kfree_skb(txdr->buffer_info[i].skb);
                }
@@ -991,20 +991,23 @@ static void e1000_free_desc_rings(struct e1000_adapter *adapter)
        if (rxdr->desc && rxdr->buffer_info) {
                for (i = 0; i < rxdr->count; i++) {
                        if (rxdr->buffer_info[i].dma)
-                               pci_unmap_single(pdev, rxdr->buffer_info[i].dma,
+                               dma_unmap_single(&pdev->dev,
+                                                rxdr->buffer_info[i].dma,
                                                 rxdr->buffer_info[i].length,
-                                                PCI_DMA_FROMDEVICE);
+                                                DMA_FROM_DEVICE);
                        if (rxdr->buffer_info[i].skb)
                                dev_kfree_skb(rxdr->buffer_info[i].skb);
                }
        }
 
        if (txdr->desc) {
-               pci_free_consistent(pdev, txdr->size, txdr->desc, txdr->dma);
+               dma_free_coherent(&pdev->dev, txdr->size, txdr->desc,
+                                 txdr->dma);
                txdr->desc = NULL;
        }
        if (rxdr->desc) {
-               pci_free_consistent(pdev, rxdr->size, rxdr->desc, rxdr->dma);
+               dma_free_coherent(&pdev->dev, rxdr->size, rxdr->desc,
+                                 rxdr->dma);
                rxdr->desc = NULL;
        }
 
@@ -1012,8 +1015,6 @@ static void e1000_free_desc_rings(struct e1000_adapter *adapter)
        txdr->buffer_info = NULL;
        kfree(rxdr->buffer_info);
        rxdr->buffer_info = NULL;
-
-       return;
 }
 
 static int e1000_setup_desc_rings(struct e1000_adapter *adapter)
@@ -1039,7 +1040,8 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)
 
        txdr->size = txdr->count * sizeof(struct e1000_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) {
                ret_val = 2;
                goto err_nomem;
@@ -1070,8 +1072,8 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)
                txdr->buffer_info[i].skb = skb;
                txdr->buffer_info[i].length = skb->len;
                txdr->buffer_info[i].dma =
-                       pci_map_single(pdev, skb->data, skb->len,
-                                      PCI_DMA_TODEVICE);
+                       dma_map_single(&pdev->dev, skb->data, skb->len,
+                                      DMA_TO_DEVICE);
                tx_desc->buffer_addr = cpu_to_le64(txdr->buffer_info[i].dma);
                tx_desc->lower.data = cpu_to_le32(skb->len);
                tx_desc->lower.data |= cpu_to_le32(E1000_TXD_CMD_EOP |
@@ -1093,7 +1095,8 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)
        }
 
        rxdr->size = rxdr->count * sizeof(struct e1000_rx_desc);
-       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) {
                ret_val = 5;
                goto err_nomem;
@@ -1126,8 +1129,8 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)
                rxdr->buffer_info[i].skb = skb;
                rxdr->buffer_info[i].length = E1000_RXBUFFER_2048;
                rxdr->buffer_info[i].dma =
-                       pci_map_single(pdev, skb->data, E1000_RXBUFFER_2048,
-                                      PCI_DMA_FROMDEVICE);
+                       dma_map_single(&pdev->dev, skb->data,
+                                      E1000_RXBUFFER_2048, DMA_FROM_DEVICE);
                rx_desc->buffer_addr = cpu_to_le64(rxdr->buffer_info[i].dma);
                memset(skb->data, 0x00, skb->len);
        }
@@ -1444,10 +1447,10 @@ static int e1000_run_loopback_test(struct e1000_adapter *adapter)
                for (i = 0; i < 64; i++) { /* send the packets */
                        e1000_create_lbtest_frame(txdr->buffer_info[i].skb,
                                        1024);
-                       pci_dma_sync_single_for_device(pdev,
-                                       txdr->buffer_info[k].dma,
-                                       txdr->buffer_info[k].length,
-                                       PCI_DMA_TODEVICE);
+                       dma_sync_single_for_device(&pdev->dev,
+                                                  txdr->buffer_info[k].dma,
+                                                  txdr->buffer_info[k].length,
+                                                  DMA_TO_DEVICE);
                        if (unlikely(++k == txdr->count)) k = 0;
                }
                ew32(TDT, k);
@@ -1455,10 +1458,10 @@ static int e1000_run_loopback_test(struct e1000_adapter *adapter)
                time = jiffies; /* set the start time for the receive */
                good_cnt = 0;
                do { /* receive the sent packets */
-                       pci_dma_sync_single_for_cpu(pdev,
-                                       rxdr->buffer_info[l].dma,
-                                       rxdr->buffer_info[l].length,
-                                       PCI_DMA_FROMDEVICE);
+                       dma_sync_single_for_cpu(&pdev->dev,
+                                               rxdr->buffer_info[l].dma,
+                                               rxdr->buffer_info[l].length,
+                                               DMA_FROM_DEVICE);
 
                        ret_val = e1000_check_lbtest_frame(
                                        rxdr->buffer_info[l].skb,
@@ -1558,7 +1561,7 @@ static void e1000_diag_test(struct net_device *netdev,
                u8 forced_speed_duplex = hw->forced_speed_duplex;
                u8 autoneg = hw->autoneg;
 
-               DPRINTK(HW, INFO, "offline testing starting\n");
+               e_info("offline testing starting\n");
 
                /* Link test performed before hardware reset so autoneg doesn't
                 * interfere with test result */
@@ -1598,7 +1601,7 @@ static void e1000_diag_test(struct net_device *netdev,
                if (if_running)
                        dev_open(netdev);
        } else {
-               DPRINTK(HW, INFO, "online testing starting\n");
+               e_info("online testing starting\n");
                /* Online tests */
                if (e1000_link_test(adapter, &data[4]))
                        eth_test->flags |= ETH_TEST_FL_FAILED;
@@ -1691,7 +1694,7 @@ static void e1000_get_wol(struct net_device *netdev,
                wol->supported &= ~WAKE_UCAST;
 
                if (adapter->wol & E1000_WUFC_EX)
-                       DPRINTK(DRV, ERR, "Interface does not support "
+                       e_err("Interface does not support "
                        "directed (unicast) frame wake-up packets\n");
                break;
        default:
@@ -1706,8 +1709,6 @@ static void e1000_get_wol(struct net_device *netdev,
                wol->wolopts |= WAKE_BCAST;
        if (adapter->wol & E1000_WUFC_MAG)
                wol->wolopts |= WAKE_MAGIC;
-
-       return;
 }
 
 static int e1000_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
@@ -1725,8 +1726,8 @@ static int e1000_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
        switch (hw->device_id) {
        case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
                if (wol->wolopts & WAKE_UCAST) {
-                       DPRINTK(DRV, ERR, "Interface does not support "
-                       "directed (unicast) frame wake-up packets\n");
+                       e_err("Interface does not support "
+                             "directed (unicast) frame wake-up packets\n");
                        return -EOPNOTSUPP;
                }
                break;
@@ -1803,7 +1804,7 @@ static int e1000_get_coalesce(struct net_device *netdev,
        if (adapter->hw.mac_type < e1000_82545)
                return -EOPNOTSUPP;
 
-       if (adapter->itr_setting <= 3)
+       if (adapter->itr_setting <= 4)
                ec->rx_coalesce_usecs = adapter->itr_setting;
        else
                ec->rx_coalesce_usecs = 1000000 / adapter->itr_setting;
@@ -1821,12 +1822,14 @@ static int e1000_set_coalesce(struct net_device *netdev,
                return -EOPNOTSUPP;
 
        if ((ec->rx_coalesce_usecs > E1000_MAX_ITR_USECS) ||
-           ((ec->rx_coalesce_usecs > 3) &&
+           ((ec->rx_coalesce_usecs > 4) &&
             (ec->rx_coalesce_usecs < E1000_MIN_ITR_USECS)) ||
            (ec->rx_coalesce_usecs == 2))
                return -EINVAL;
 
-       if (ec->rx_coalesce_usecs <= 3) {
+       if (ec->rx_coalesce_usecs == 4) {
+               adapter->itr = adapter->itr_setting = 4;
+       } else if (ec->rx_coalesce_usecs <= 3) {
                adapter->itr = 20000;
                adapter->itr_setting = ec->rx_coalesce_usecs;
        } else {