iwlwifi: use list_first_entry
authorJohannes Berg <johannes.berg@intel.com>
Sun, 4 Nov 2012 08:31:25 +0000 (09:31 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 5 Nov 2012 15:12:24 +0000 (16:12 +0100)
Instead of open-coding it with a temporary list_head
pointer, just use list_first_entry.

Reviewed-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/iwlwifi/pcie/rx.c

index 50c9147278b31c82a34328eb4b6fef8c79258d92..25e6f868cfb6445ad29da052e70da5f5ba43e51e 100644 (file)
@@ -199,7 +199,6 @@ static void iwl_rx_queue_restock(struct iwl_trans *trans)
 {
        struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
        struct iwl_rx_queue *rxq = &trans_pcie->rxq;
-       struct list_head *element;
        struct iwl_rx_mem_buffer *rxb;
        unsigned long flags;
 
@@ -221,9 +220,9 @@ static void iwl_rx_queue_restock(struct iwl_trans *trans)
                BUG_ON(rxb && rxb->page);
 
                /* Get next free Rx buffer, remove from free list */
-               element = rxq->rx_free.next;
-               rxb = list_entry(element, struct iwl_rx_mem_buffer, list);
-               list_del(element);
+               rxb = list_first_entry(&rxq->rx_free, struct iwl_rx_mem_buffer,
+                                      list);
+               list_del(&rxb->list);
 
                /* Point to Rx buffer via next RBD in circular buffer */
                rxq->bd[rxq->write] = iwl_dma_addr2rbd_ptr(rxb->page_dma);
@@ -260,7 +259,6 @@ static void iwl_rx_allocate(struct iwl_trans *trans, gfp_t priority)
 {
        struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
        struct iwl_rx_queue *rxq = &trans_pcie->rxq;
-       struct list_head *element;
        struct iwl_rx_mem_buffer *rxb;
        struct page *page;
        unsigned long flags;
@@ -308,10 +306,9 @@ static void iwl_rx_allocate(struct iwl_trans *trans, gfp_t priority)
                        __free_pages(page, trans_pcie->rx_page_order);
                        return;
                }
-               element = rxq->rx_used.next;
-               rxb = list_entry(element, struct iwl_rx_mem_buffer, list);
-               list_del(element);
-
+               rxb = list_first_entry(&rxq->rx_used, struct iwl_rx_mem_buffer,
+                                      list);
+               list_del(&rxb->list);
                spin_unlock_irqrestore(&rxq->lock, flags);
 
                BUG_ON(rxb->page);