igb: improve handling of disconnected adapters
authorJarod Wilson <jarod@redhat.com>
Mon, 19 Oct 2015 15:52:04 +0000 (11:52 -0400)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sun, 13 Dec 2015 07:51:26 +0000 (23:51 -0800)
Clean up array_rd32 so that it uses igb_rd32 the same as rd32, per the
suggestion of Alexander Duyck, and use io_addr in more places, so that
we don't have the need to call E1000_REMOVED (which simply looks for a
null hw_addr) nearly as much.

Signed-off-by: Jarod Wilson <jarod@redhat.com>
Acked-by: Alexander Duyck <aduyck@mirantis.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/igb/e1000_regs.h
drivers/net/ethernet/intel/igb/igb_main.c

index 0fdcd4d..21d9d02 100644 (file)
@@ -386,8 +386,7 @@ do { \
 #define array_wr32(reg, offset, value) \
        wr32((reg) + ((offset) << 2), (value))
 
-#define array_rd32(reg, offset) \
-       (readl(hw->hw_addr + reg + ((offset) << 2)))
+#define array_rd32(reg, offset) (igb_rd32(hw, reg + ((offset) << 2)))
 
 /* DMA Coalescing registers */
 #define E1000_PCIEMISC 0x05BB8 /* PCIE misc config register */
index fa3b4cb..7afde45 100644 (file)
@@ -946,7 +946,6 @@ static void igb_configure_msix(struct igb_adapter *adapter)
 static int igb_request_msix(struct igb_adapter *adapter)
 {
        struct net_device *netdev = adapter->netdev;
-       struct e1000_hw *hw = &adapter->hw;
        int i, err = 0, vector = 0, free_vector = 0;
 
        err = request_irq(adapter->msix_entries[vector].vector,
@@ -959,7 +958,7 @@ static int igb_request_msix(struct igb_adapter *adapter)
 
                vector++;
 
-               q_vector->itr_register = hw->hw_addr + E1000_EITR(vector);
+               q_vector->itr_register = adapter->io_addr + E1000_EITR(vector);
 
                if (q_vector->rx.ring && q_vector->tx.ring)
                        sprintf(q_vector->name, "%s-TxRx-%u", netdev->name,
@@ -1230,7 +1229,7 @@ static int igb_alloc_q_vector(struct igb_adapter *adapter,
        q_vector->tx.work_limit = adapter->tx_work_limit;
 
        /* initialize ITR configuration */
-       q_vector->itr_register = adapter->hw.hw_addr + E1000_EITR(0);
+       q_vector->itr_register = adapter->io_addr + E1000_EITR(0);
        q_vector->itr_val = IGB_START_ITR;
 
        /* initialize pointer to rings */