]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ixgbe: Add iterator for cycling through rings on a q_vector
authorAlexander Duyck <alexander.h.duyck@intel.com>
Wed, 8 Feb 2012 07:50:04 +0000 (07:50 +0000)
committerJoe Jin <joe.jin@oracle.com>
Thu, 17 May 2012 15:04:55 +0000 (23:04 +0800)
Since there are multiple spots where we have to cycle through all of the
rings on a q_vector it makes sense to just add a function for iterating
through all of them.

(cherry picked from commit a557928e26b08496c8f4b6c04e3838ad8048ad85)
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/net/ixgbe/ixgbe.h
drivers/net/ixgbe/ixgbe_main.c

index 1023e2b998c35d58c48d77f7e30bf5666d3c817c..6c9875f01bc86c67fc85aef9457a1d858899ffea 100644 (file)
@@ -294,6 +294,10 @@ struct ixgbe_ring_container {
        u8 itr;                         /* current ITR setting for ring */
 };
 
+/* iterator for handling rings in ring container */
+#define ixgbe_for_each_ring(pos, head) \
+       for (pos = (head).ring; pos != NULL; pos = pos->next)
+
 #define MAX_RX_PACKET_BUFFERS ((adapter->flags & IXGBE_FLAG_DCB_ENABLED) \
                               ? 8 : 1)
 #define MAX_TX_PACKET_BUFFERS MAX_RX_PACKET_BUFFERS
index 4d26db5ba705713350d474d86a8fcec73dcbbf27..e981a657f151a8e837de76bc4f65becf791ebfc0 100644 (file)
@@ -922,10 +922,10 @@ static void ixgbe_update_dca(struct ixgbe_q_vector *q_vector)
        if (q_vector->cpu == cpu)
                goto out_no_update;
 
-       for (ring = q_vector->tx.ring; ring != NULL; ring = ring->next)
+       ixgbe_for_each_ring(ring, q_vector->tx)
                ixgbe_update_tx_dca(adapter, ring, cpu);
 
-       for (ring = q_vector->rx.ring; ring != NULL; ring = ring->next)
+       ixgbe_for_each_ring(ring, q_vector->rx)
                ixgbe_update_rx_dca(adapter, ring, cpu);
 
        q_vector->cpu = cpu;
@@ -1701,10 +1701,10 @@ static void ixgbe_configure_msix(struct ixgbe_adapter *adapter)
                struct ixgbe_ring *ring;
                q_vector = adapter->q_vector[v_idx];
 
-               for (ring = q_vector->rx.ring; ring != NULL; ring = ring->next)
+               ixgbe_for_each_ring(ring, q_vector->rx)
                        ixgbe_set_ivar(adapter, 0, ring->reg_idx, v_idx);
 
-               for (ring = q_vector->tx.ring; ring != NULL; ring = ring->next)
+               ixgbe_for_each_ring(ring, q_vector->tx)
                        ixgbe_set_ivar(adapter, 1, ring->reg_idx, v_idx);
 
                if (q_vector->tx.ring && !q_vector->rx.ring) {
@@ -4179,7 +4179,7 @@ static int ixgbe_poll(struct napi_struct *napi, int budget)
                ixgbe_update_dca(q_vector);
 #endif
 
-       for (ring = q_vector->tx.ring; ring != NULL; ring = ring->next)
+       ixgbe_for_each_ring(ring, q_vector->tx)
                clean_complete &= !!ixgbe_clean_tx_irq(q_vector, ring);
 
        /* attempt to distribute budget to each queue fairly, but don't allow
@@ -4189,7 +4189,7 @@ static int ixgbe_poll(struct napi_struct *napi, int budget)
        else
                per_ring_budget = budget;
 
-       for (ring = q_vector->rx.ring; ring != NULL; ring = ring->next)
+       ixgbe_for_each_ring(ring, q_vector->rx)
                clean_complete &= ixgbe_clean_rx_irq(q_vector, ring,
                                                     per_ring_budget);
 
@@ -4924,10 +4924,10 @@ static void ixgbe_free_q_vector(struct ixgbe_adapter *adapter, int v_idx)
        struct ixgbe_q_vector *q_vector = adapter->q_vector[v_idx];
        struct ixgbe_ring *ring;
 
-       for (ring = q_vector->tx.ring; ring != NULL; ring = ring->next)
+       ixgbe_for_each_ring(ring, q_vector->tx)
                adapter->tx_ring[ring->queue_index] = NULL;
 
-       for (ring = q_vector->rx.ring; ring != NULL; ring = ring->next)
+       ixgbe_for_each_ring(ring, q_vector->rx)
                adapter->rx_ring[ring->queue_index] = NULL;
 
        adapter->q_vector[v_idx] = NULL;