Lines Matching refs:rxq

85 il4965_rx_queue_reset(struct il_priv *il, struct il_rx_queue *rxq)  in il4965_rx_queue_reset()  argument
89 spin_lock_irqsave(&rxq->lock, flags); in il4965_rx_queue_reset()
90 INIT_LIST_HEAD(&rxq->rx_free); in il4965_rx_queue_reset()
91 INIT_LIST_HEAD(&rxq->rx_used); in il4965_rx_queue_reset()
96 if (rxq->pool[i].page != NULL) { in il4965_rx_queue_reset()
97 pci_unmap_page(il->pci_dev, rxq->pool[i].page_dma, in il4965_rx_queue_reset()
100 __il_free_pages(il, rxq->pool[i].page); in il4965_rx_queue_reset()
101 rxq->pool[i].page = NULL; in il4965_rx_queue_reset()
103 list_add_tail(&rxq->pool[i].list, &rxq->rx_used); in il4965_rx_queue_reset()
107 rxq->queue[i] = NULL; in il4965_rx_queue_reset()
111 rxq->read = rxq->write = 0; in il4965_rx_queue_reset()
112 rxq->write_actual = 0; in il4965_rx_queue_reset()
113 rxq->free_count = 0; in il4965_rx_queue_reset()
114 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_queue_reset()
118 il4965_rx_init(struct il_priv *il, struct il_rx_queue *rxq) in il4965_rx_init() argument
136 il_wr(il, FH49_RSCSR_CHNL0_RBDCB_BASE_REG, (u32) (rxq->bd_dma >> 8)); in il4965_rx_init()
139 il_wr(il, FH49_RSCSR_CHNL0_STTS_WPTR_REG, rxq->rb_stts_dma >> 4); in il4965_rx_init()
183 struct il_rx_queue *rxq = &il->rxq; in il4965_hw_nic_init() local
196 if (!rxq->bd) { in il4965_hw_nic_init()
203 il4965_rx_queue_reset(il, rxq); in il4965_hw_nic_init()
207 il4965_rx_init(il, rxq); in il4965_hw_nic_init()
211 rxq->need_update = 1; in il4965_hw_nic_init()
212 il_rx_queue_update_write_ptr(il, rxq); in il4965_hw_nic_init()
252 struct il_rx_queue *rxq = &il->rxq; in il4965_rx_queue_restock() local
257 spin_lock_irqsave(&rxq->lock, flags); in il4965_rx_queue_restock()
258 while (il_rx_queue_space(rxq) > 0 && rxq->free_count) { in il4965_rx_queue_restock()
260 rxb = rxq->queue[rxq->write]; in il4965_rx_queue_restock()
264 element = rxq->rx_free.next; in il4965_rx_queue_restock()
269 rxq->bd[rxq->write] = in il4965_rx_queue_restock()
271 rxq->queue[rxq->write] = rxb; in il4965_rx_queue_restock()
272 rxq->write = (rxq->write + 1) & RX_QUEUE_MASK; in il4965_rx_queue_restock()
273 rxq->free_count--; in il4965_rx_queue_restock()
275 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_queue_restock()
278 if (rxq->free_count <= RX_LOW_WATERMARK) in il4965_rx_queue_restock()
283 if (rxq->write_actual != (rxq->write & ~0x7)) { in il4965_rx_queue_restock()
284 spin_lock_irqsave(&rxq->lock, flags); in il4965_rx_queue_restock()
285 rxq->need_update = 1; in il4965_rx_queue_restock()
286 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_queue_restock()
287 il_rx_queue_update_write_ptr(il, rxq); in il4965_rx_queue_restock()
302 struct il_rx_queue *rxq = &il->rxq; in il4965_rx_allocate() local
311 spin_lock_irqsave(&rxq->lock, flags); in il4965_rx_allocate()
312 if (list_empty(&rxq->rx_used)) { in il4965_rx_allocate()
313 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_allocate()
316 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_allocate()
318 if (rxq->free_count > RX_LOW_WATERMARK) in il4965_rx_allocate()
331 if (rxq->free_count <= RX_LOW_WATERMARK && in il4965_rx_allocate()
337 rxq->free_count); in il4965_rx_allocate()
354 spin_lock_irqsave(&rxq->lock, flags); in il4965_rx_allocate()
356 if (list_empty(&rxq->rx_used)) { in il4965_rx_allocate()
357 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_allocate()
365 element = rxq->rx_used.next; in il4965_rx_allocate()
373 list_add_tail(&rxb->list, &rxq->rx_free); in il4965_rx_allocate()
374 rxq->free_count++; in il4965_rx_allocate()
377 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_allocate()
407 il4965_rx_queue_free(struct il_priv *il, struct il_rx_queue *rxq) in il4965_rx_queue_free() argument
411 if (rxq->pool[i].page != NULL) { in il4965_rx_queue_free()
412 pci_unmap_page(il->pci_dev, rxq->pool[i].page_dma, in il4965_rx_queue_free()
415 __il_free_pages(il, rxq->pool[i].page); in il4965_rx_queue_free()
416 rxq->pool[i].page = NULL; in il4965_rx_queue_free()
420 dma_free_coherent(&il->pci_dev->dev, 4 * RX_QUEUE_SIZE, rxq->bd, in il4965_rx_queue_free()
421 rxq->bd_dma); in il4965_rx_queue_free()
423 rxq->rb_stts, rxq->rb_stts_dma); in il4965_rx_queue_free()
424 rxq->bd = NULL; in il4965_rx_queue_free()
425 rxq->rb_stts = NULL; in il4965_rx_queue_free()
4209 struct il_rx_queue *rxq = &il->rxq; in il4965_rx_handle() local
4219 r = le16_to_cpu(rxq->rb_stts->closed_rb_num) & 0x0FFF; in il4965_rx_handle()
4220 i = rxq->read; in il4965_rx_handle()
4227 total_empty = r - rxq->write_actual; in il4965_rx_handle()
4237 rxb = rxq->queue[i]; in il4965_rx_handle()
4244 rxq->queue[i] = NULL; in il4965_rx_handle()
4290 spin_lock_irqsave(&rxq->lock, flags); in il4965_rx_handle()
4301 list_add_tail(&rxb->list, &rxq->rx_used); in il4965_rx_handle()
4303 list_add_tail(&rxb->list, &rxq->rx_free); in il4965_rx_handle()
4304 rxq->free_count++; in il4965_rx_handle()
4307 list_add_tail(&rxb->list, &rxq->rx_used); in il4965_rx_handle()
4309 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_handle()
4317 rxq->read = i; in il4965_rx_handle()
4325 rxq->read = i; in il4965_rx_handle()
4471 il_rx_queue_update_write_ptr(il, &il->rxq); in il4965_irq_tasklet()
6733 if (il->rxq.bd) in il4965_pci_remove()
6734 il4965_rx_queue_free(il, &il->rxq); in il4965_pci_remove()