Lines Matching refs:rxq
100 il4965_rx_queue_reset(struct il_priv *il, struct il_rx_queue *rxq) in il4965_rx_queue_reset() argument
104 spin_lock_irqsave(&rxq->lock, flags); in il4965_rx_queue_reset()
105 INIT_LIST_HEAD(&rxq->rx_free); in il4965_rx_queue_reset()
106 INIT_LIST_HEAD(&rxq->rx_used); in il4965_rx_queue_reset()
111 if (rxq->pool[i].page != NULL) { in il4965_rx_queue_reset()
112 pci_unmap_page(il->pci_dev, rxq->pool[i].page_dma, in il4965_rx_queue_reset()
115 __il_free_pages(il, rxq->pool[i].page); in il4965_rx_queue_reset()
116 rxq->pool[i].page = NULL; in il4965_rx_queue_reset()
118 list_add_tail(&rxq->pool[i].list, &rxq->rx_used); in il4965_rx_queue_reset()
122 rxq->queue[i] = NULL; in il4965_rx_queue_reset()
126 rxq->read = rxq->write = 0; in il4965_rx_queue_reset()
127 rxq->write_actual = 0; in il4965_rx_queue_reset()
128 rxq->free_count = 0; in il4965_rx_queue_reset()
129 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_queue_reset()
133 il4965_rx_init(struct il_priv *il, struct il_rx_queue *rxq) in il4965_rx_init() argument
151 il_wr(il, FH49_RSCSR_CHNL0_RBDCB_BASE_REG, (u32) (rxq->bd_dma >> 8)); in il4965_rx_init()
154 il_wr(il, FH49_RSCSR_CHNL0_STTS_WPTR_REG, rxq->rb_stts_dma >> 4); in il4965_rx_init()
198 struct il_rx_queue *rxq = &il->rxq; in il4965_hw_nic_init() local
211 if (!rxq->bd) { in il4965_hw_nic_init()
218 il4965_rx_queue_reset(il, rxq); in il4965_hw_nic_init()
222 il4965_rx_init(il, rxq); in il4965_hw_nic_init()
226 rxq->need_update = 1; in il4965_hw_nic_init()
227 il_rx_queue_update_write_ptr(il, rxq); in il4965_hw_nic_init()
267 struct il_rx_queue *rxq = &il->rxq; in il4965_rx_queue_restock() local
272 spin_lock_irqsave(&rxq->lock, flags); in il4965_rx_queue_restock()
273 while (il_rx_queue_space(rxq) > 0 && rxq->free_count) { in il4965_rx_queue_restock()
275 rxb = rxq->queue[rxq->write]; in il4965_rx_queue_restock()
279 element = rxq->rx_free.next; in il4965_rx_queue_restock()
284 rxq->bd[rxq->write] = in il4965_rx_queue_restock()
286 rxq->queue[rxq->write] = rxb; in il4965_rx_queue_restock()
287 rxq->write = (rxq->write + 1) & RX_QUEUE_MASK; in il4965_rx_queue_restock()
288 rxq->free_count--; in il4965_rx_queue_restock()
290 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_queue_restock()
293 if (rxq->free_count <= RX_LOW_WATERMARK) in il4965_rx_queue_restock()
298 if (rxq->write_actual != (rxq->write & ~0x7)) { in il4965_rx_queue_restock()
299 spin_lock_irqsave(&rxq->lock, flags); in il4965_rx_queue_restock()
300 rxq->need_update = 1; in il4965_rx_queue_restock()
301 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_queue_restock()
302 il_rx_queue_update_write_ptr(il, rxq); in il4965_rx_queue_restock()
317 struct il_rx_queue *rxq = &il->rxq; in il4965_rx_allocate() local
326 spin_lock_irqsave(&rxq->lock, flags); in il4965_rx_allocate()
327 if (list_empty(&rxq->rx_used)) { in il4965_rx_allocate()
328 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_allocate()
331 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_allocate()
333 if (rxq->free_count > RX_LOW_WATERMARK) in il4965_rx_allocate()
346 if (rxq->free_count <= RX_LOW_WATERMARK && in il4965_rx_allocate()
352 rxq->free_count); in il4965_rx_allocate()
369 spin_lock_irqsave(&rxq->lock, flags); in il4965_rx_allocate()
371 if (list_empty(&rxq->rx_used)) { in il4965_rx_allocate()
372 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_allocate()
380 element = rxq->rx_used.next; in il4965_rx_allocate()
388 list_add_tail(&rxb->list, &rxq->rx_free); in il4965_rx_allocate()
389 rxq->free_count++; in il4965_rx_allocate()
392 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_allocate()
422 il4965_rx_queue_free(struct il_priv *il, struct il_rx_queue *rxq) in il4965_rx_queue_free() argument
426 if (rxq->pool[i].page != NULL) { in il4965_rx_queue_free()
427 pci_unmap_page(il->pci_dev, rxq->pool[i].page_dma, in il4965_rx_queue_free()
430 __il_free_pages(il, rxq->pool[i].page); in il4965_rx_queue_free()
431 rxq->pool[i].page = NULL; in il4965_rx_queue_free()
435 dma_free_coherent(&il->pci_dev->dev, 4 * RX_QUEUE_SIZE, rxq->bd, in il4965_rx_queue_free()
436 rxq->bd_dma); in il4965_rx_queue_free()
438 rxq->rb_stts, rxq->rb_stts_dma); in il4965_rx_queue_free()
439 rxq->bd = NULL; in il4965_rx_queue_free()
440 rxq->rb_stts = NULL; in il4965_rx_queue_free()
4231 struct il_rx_queue *rxq = &il->rxq; in il4965_rx_handle() local
4241 r = le16_to_cpu(rxq->rb_stts->closed_rb_num) & 0x0FFF; in il4965_rx_handle()
4242 i = rxq->read; in il4965_rx_handle()
4249 total_empty = r - rxq->write_actual; in il4965_rx_handle()
4259 rxb = rxq->queue[i]; in il4965_rx_handle()
4266 rxq->queue[i] = NULL; in il4965_rx_handle()
4312 spin_lock_irqsave(&rxq->lock, flags); in il4965_rx_handle()
4323 list_add_tail(&rxb->list, &rxq->rx_used); in il4965_rx_handle()
4325 list_add_tail(&rxb->list, &rxq->rx_free); in il4965_rx_handle()
4326 rxq->free_count++; in il4965_rx_handle()
4329 list_add_tail(&rxb->list, &rxq->rx_used); in il4965_rx_handle()
4331 spin_unlock_irqrestore(&rxq->lock, flags); in il4965_rx_handle()
4339 rxq->read = i; in il4965_rx_handle()
4347 rxq->read = i; in il4965_rx_handle()
4492 il_rx_queue_update_write_ptr(il, &il->rxq); in il4965_irq_tasklet()
6754 if (il->rxq.bd) in il4965_pci_remove()
6755 il4965_rx_queue_free(il, &il->rxq); in il4965_pci_remove()