aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-11-04 03:31:25 -0500
committerJohannes Berg <johannes.berg@intel.com>2012-11-05 10:12:24 -0500
commite2b1930e6fd9aaa72cc44519b257ae71a1c2e29f (patch)
treef9b7b3f50bf8d932ceb42829f19efbbbc1fd6b97 /drivers
parenta4dece9abce75332a082340bcc9b176f10484a62 (diff)
iwlwifi: use list_first_entry
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/rx.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/rx.c b/drivers/net/wireless/iwlwifi/pcie/rx.c
index 50c9147278b3..25e6f868cfb6 100644
--- a/drivers/net/wireless/iwlwifi/pcie/rx.c
+++ b/drivers/net/wireless/iwlwifi/pcie/rx.c
@@ -199,7 +199,6 @@ static void iwl_rx_queue_restock(struct iwl_trans *trans)
199{ 199{
200 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); 200 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
201 struct iwl_rx_queue *rxq = &trans_pcie->rxq; 201 struct iwl_rx_queue *rxq = &trans_pcie->rxq;
202 struct list_head *element;
203 struct iwl_rx_mem_buffer *rxb; 202 struct iwl_rx_mem_buffer *rxb;
204 unsigned long flags; 203 unsigned long flags;
205 204
@@ -221,9 +220,9 @@ static void iwl_rx_queue_restock(struct iwl_trans *trans)
221 BUG_ON(rxb && rxb->page); 220 BUG_ON(rxb && rxb->page);
222 221
223 /* Get next free Rx buffer, remove from free list */ 222 /* Get next free Rx buffer, remove from free list */
224 element = rxq->rx_free.next; 223 rxb = list_first_entry(&rxq->rx_free, struct iwl_rx_mem_buffer,
225 rxb = list_entry(element, struct iwl_rx_mem_buffer, list); 224 list);
226 list_del(element); 225 list_del(&rxb->list);
227 226
228 /* Point to Rx buffer via next RBD in circular buffer */ 227 /* Point to Rx buffer via next RBD in circular buffer */
229 rxq->bd[rxq->write] = iwl_dma_addr2rbd_ptr(rxb->page_dma); 228 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)
260{ 259{
261 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); 260 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
262 struct iwl_rx_queue *rxq = &trans_pcie->rxq; 261 struct iwl_rx_queue *rxq = &trans_pcie->rxq;
263 struct list_head *element;
264 struct iwl_rx_mem_buffer *rxb; 262 struct iwl_rx_mem_buffer *rxb;
265 struct page *page; 263 struct page *page;
266 unsigned long flags; 264 unsigned long flags;
@@ -308,10 +306,9 @@ static void iwl_rx_allocate(struct iwl_trans *trans, gfp_t priority)
308 __free_pages(page, trans_pcie->rx_page_order); 306 __free_pages(page, trans_pcie->rx_page_order);
309 return; 307 return;
310 } 308 }
311 element = rxq->rx_used.next; 309 rxb = list_first_entry(&rxq->rx_used, struct iwl_rx_mem_buffer,
312 rxb = list_entry(element, struct iwl_rx_mem_buffer, list); 310 list);
313 list_del(element); 311 list_del(&rxb->list);
314
315 spin_unlock_irqrestore(&rxq->lock, flags); 312 spin_unlock_irqrestore(&rxq->lock, flags);
316 313
317 BUG_ON(rxb->page); 314 BUG_ON(rxb->page);