e1000e: cleanup strict checkpatch MEMORY_BARRIER checks
[firefly-linux-kernel-4.4.55.git] / drivers / net / ethernet / intel / e1000e / netdev.c
index 623e30b9964de29e091f77564ccd53ce8ba30876..fb6c813f5f86a4ecbfd073fe09070710524db596 100644 (file)
@@ -178,6 +178,24 @@ static void e1000_regdump(struct e1000_hw *hw, struct e1000_reg_info *reginfo)
        pr_info("%-15s %08x %08x\n", rname, regs[0], regs[1]);
 }
 
+static void e1000e_dump_ps_pages(struct e1000_adapter *adapter,
+                                struct e1000_buffer *bi)
+{
+       int i;
+       struct e1000_ps_page *ps_page;
+
+       for (i = 0; i < adapter->rx_ps_pages; i++) {
+               ps_page = &bi->ps_pages[i];
+
+               if (ps_page->page) {
+                       pr_info("packet dump for ps_page %d:\n", i);
+                       print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS,
+                                      16, 1, page_address(ps_page->page),
+                                      PAGE_SIZE, true);
+               }
+       }
+}
+
 /*
  * e1000e_dump - Print registers, Tx-ring and Rx-ring
  */
@@ -299,10 +317,10 @@ static void e1000e_dump(struct e1000_adapter *adapter)
                        (unsigned long long)buffer_info->time_stamp,
                        buffer_info->skb, next_desc);
 
-               if (netif_msg_pktdata(adapter) && buffer_info->dma != 0)
+               if (netif_msg_pktdata(adapter) && buffer_info->skb)
                        print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS,
-                                      16, 1, phys_to_virt(buffer_info->dma),
-                                      buffer_info->length, true);
+                                      16, 1, buffer_info->skb->data,
+                                      buffer_info->skb->len, true);
        }
 
        /* Print Rx Ring Summary */
@@ -381,10 +399,8 @@ rx_ring_summary:
                                        buffer_info->skb, next_desc);
 
                                if (netif_msg_pktdata(adapter))
-                                       print_hex_dump(KERN_INFO, "",
-                                               DUMP_PREFIX_ADDRESS, 16, 1,
-                                               phys_to_virt(buffer_info->dma),
-                                               adapter->rx_ps_bsize0, true);
+                                       e1000e_dump_ps_pages(adapter,
+                                                            buffer_info);
                        }
                }
                break;
@@ -444,12 +460,12 @@ rx_ring_summary:
                                        (unsigned long long)buffer_info->dma,
                                        buffer_info->skb, next_desc);
 
-                               if (netif_msg_pktdata(adapter))
+                               if (netif_msg_pktdata(adapter) &&
+                                   buffer_info->skb)
                                        print_hex_dump(KERN_INFO, "",
                                                       DUMP_PREFIX_ADDRESS, 16,
                                                       1,
-                                                      phys_to_virt
-                                                      (buffer_info->dma),
+                                                      buffer_info->skb->data,
                                                       adapter->rx_buffer_len,
                                                       true);
                        }
@@ -2159,7 +2175,7 @@ void e1000e_release_hw_control(struct e1000_adapter *adapter)
 }
 
 /**
- * @e1000_alloc_ring - allocate memory for a ring structure
+ * e1000_alloc_ring_dma - allocate memory for a ring structure
  **/
 static int e1000_alloc_ring_dma(struct e1000_adapter *adapter,
                                struct e1000_ring *ring)
@@ -2473,6 +2489,30 @@ set_itr_now:
        }
 }
 
+/**
+ * e1000e_write_itr - write the ITR value to the appropriate registers
+ * @adapter: address of board private structure
+ * @itr: new ITR value to program
+ *
+ * e1000e_write_itr determines if the adapter is in MSI-X mode
+ * and, if so, writes the EITR registers with the ITR value.
+ * Otherwise, it writes the ITR value into the ITR register.
+ **/
+void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr)
+{
+       struct e1000_hw *hw = &adapter->hw;
+       u32 new_itr = itr ? 1000000000 / (itr * 256) : 0;
+
+       if (adapter->msix_entries) {
+               int vector;
+
+               for (vector = 0; vector < adapter->num_vectors; vector++)
+                       writel(new_itr, hw->hw_addr + E1000_EITR_82574(vector));
+       } else {
+               ew32(ITR, new_itr);
+       }
+}
+
 /**
  * e1000_alloc_queues - Allocate memory for all rings
  * @adapter: board private structure to initialize
@@ -3059,7 +3099,7 @@ static void e1000_configure_rx(struct e1000_adapter *adapter)
        /* irq moderation */
        ew32(RADV, adapter->rx_abs_int_delay);
        if ((adapter->itr_setting != 0) && (adapter->itr != 0))
-               ew32(ITR, 1000000000 / (adapter->itr * 256));
+               e1000e_write_itr(adapter, adapter->itr);
 
        ctrl_ext = er32(CTRL_EXT);
        /* Auto-Mask interrupts upon ICR access */
@@ -3486,14 +3526,14 @@ void e1000e_reset(struct e1000_adapter *adapter)
                                dev_info(&adapter->pdev->dev,
                                        "Interrupt Throttle Rate turned off\n");
                                adapter->flags2 |= FLAG2_DISABLE_AIM;
-                               ew32(ITR, 0);
+                               e1000e_write_itr(adapter, 0);
                        }
                } else if (adapter->flags2 & FLAG2_DISABLE_AIM) {
                        dev_info(&adapter->pdev->dev,
                                 "Interrupt Throttle Rate turned on\n");
                        adapter->flags2 &= ~FLAG2_DISABLE_AIM;
                        adapter->itr = 20000;
-                       ew32(ITR, 1000000000 / (adapter->itr * 256));
+                       e1000e_write_itr(adapter, adapter->itr);
                }
        }
 
@@ -3706,6 +3746,10 @@ static irqreturn_t e1000_intr_msi_test(int irq, void *data)
        e_dbg("icr is %08X\n", icr);
        if (icr & E1000_ICR_RXSEQ) {
                adapter->flags &= ~FLAG_MSI_TEST_FAILED;
+               /*
+                * Force memory writes to complete before acknowledging the
+                * interrupt is handled.
+                */
                wmb();
        }
 
@@ -3747,6 +3791,10 @@ static int e1000_test_msi_interrupt(struct e1000_adapter *adapter)
                goto msi_test_failed;
        }
 
+       /*
+        * Force memory writes to complete before enabling and firing an
+        * interrupt.
+        */
        wmb();
 
        e1000_irq_enable(adapter);
@@ -3758,7 +3806,7 @@ static int e1000_test_msi_interrupt(struct e1000_adapter *adapter)
 
        e1000_irq_disable(adapter);
 
-       rmb();
+       rmb();                  /* read flags after interrupt has been fired */
 
        if (adapter->flags & FLAG_MSI_TEST_FAILED) {
                adapter->int_mode = E1000E_INT_MODE_LEGACY;
@@ -4576,7 +4624,7 @@ link_up:
                            adapter->gorc - adapter->gotc) / 10000;
                u32 itr = goc > 0 ? (dif * 6000 / goc + 2000) : 8000;
 
-               ew32(ITR, 1000000000 / (itr * 256));
+               e1000e_write_itr(adapter, itr);
        }
 
        /* Cause software interrupt to ensure Rx ring is cleaned */
@@ -6191,7 +6239,8 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
        }
 
        if (hw->phy.ops.check_reset_block && hw->phy.ops.check_reset_block(hw))
-               e_info("PHY reset is blocked due to SOL/IDER session.\n");
+               dev_info(&pdev->dev,
+                        "PHY reset is blocked due to SOL/IDER session.\n");
 
        /* Set initial default active device features */
        netdev->features = (NETIF_F_SG |
@@ -6241,7 +6290,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
                if (e1000_validate_nvm_checksum(&adapter->hw) >= 0)
                        break;
                if (i == 2) {
-                       e_err("The NVM Checksum Is Not Valid\n");
+                       dev_err(&pdev->dev, "The NVM Checksum Is Not Valid\n");
                        err = -EIO;
                        goto err_eeprom;
                }
@@ -6251,13 +6300,15 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
 
        /* copy the MAC address */
        if (e1000e_read_mac_addr(&adapter->hw))
-               e_err("NVM Read Error while reading MAC address\n");
+               dev_err(&pdev->dev,
+                       "NVM Read Error while reading MAC address\n");
 
        memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
        memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);
 
        if (!is_valid_ether_addr(netdev->perm_addr)) {
-               e_err("Invalid MAC Address: %pM\n", netdev->perm_addr);
+               dev_err(&pdev->dev, "Invalid MAC Address: %pM\n",
+                       netdev->perm_addr);
                err = -EIO;
                goto err_eeprom;
        }