• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/wireless/iwlwifi/

Lines Matching defs:rxq

436 void iwlagn_rx_queue_reset(struct iwl_priv *priv, struct iwl_rx_queue *rxq)
440 spin_lock_irqsave(&rxq->lock, flags);
441 INIT_LIST_HEAD(&rxq->rx_free);
442 INIT_LIST_HEAD(&rxq->rx_used);
447 if (rxq->pool[i].page != NULL) {
448 pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma,
451 __iwl_free_pages(priv, rxq->pool[i].page);
452 rxq->pool[i].page = NULL;
454 list_add_tail(&rxq->pool[i].list, &rxq->rx_used);
458 rxq->queue[i] = NULL;
462 rxq->read = rxq->write = 0;
463 rxq->write_actual = 0;
464 rxq->free_count = 0;
465 spin_unlock_irqrestore(&rxq->lock, flags);
468 int iwlagn_rx_init(struct iwl_priv *priv, struct iwl_rx_queue *rxq)
490 (u32)(rxq->bd_dma >> 8));
494 rxq->rb_stts_dma >> 4);
522 struct iwl_rx_queue *rxq = &priv->rxq;
539 if (!rxq->bd) {
546 iwlagn_rx_queue_reset(priv, rxq);
550 iwlagn_rx_init(priv, rxq);
554 rxq->need_update = 1;
555 iwl_rx_queue_update_write_ptr(priv, rxq);
594 struct iwl_rx_queue *rxq = &priv->rxq;
599 spin_lock_irqsave(&rxq->lock, flags);
600 while ((iwl_rx_queue_space(rxq) > 0) && (rxq->free_count)) {
602 rxb = rxq->queue[rxq->write];
606 element = rxq->rx_free.next;
611 rxq->bd[rxq->write] = iwlagn_dma_addr2rbd_ptr(priv,
613 rxq->queue[rxq->write] = rxb;
614 rxq->write = (rxq->write + 1) & RX_QUEUE_MASK;
615 rxq->free_count--;
617 spin_unlock_irqrestore(&rxq->lock, flags);
620 if (rxq->free_count <= RX_LOW_WATERMARK)
626 if (rxq->write_actual != (rxq->write & ~0x7)) {
627 spin_lock_irqsave(&rxq->lock, flags);
628 rxq->need_update = 1;
629 spin_unlock_irqrestore(&rxq->lock, flags);
630 iwl_rx_queue_update_write_ptr(priv, rxq);
644 struct iwl_rx_queue *rxq = &priv->rxq;
652 spin_lock_irqsave(&rxq->lock, flags);
653 if (list_empty(&rxq->rx_used)) {
654 spin_unlock_irqrestore(&rxq->lock, flags);
657 spin_unlock_irqrestore(&rxq->lock, flags);
659 if (rxq->free_count > RX_LOW_WATERMARK)
673 if ((rxq->free_count <= RX_LOW_WATERMARK) &&
677 rxq->free_count);
684 spin_lock_irqsave(&rxq->lock, flags);
686 if (list_empty(&rxq->rx_used)) {
687 spin_unlock_irqrestore(&rxq->lock, flags);
691 element = rxq->rx_used.next;
695 spin_unlock_irqrestore(&rxq->lock, flags);
708 spin_lock_irqsave(&rxq->lock, flags);
710 list_add_tail(&rxb->list, &rxq->rx_free);
711 rxq->free_count++;
714 spin_unlock_irqrestore(&rxq->lock, flags);
741 void iwlagn_rx_queue_free(struct iwl_priv *priv, struct iwl_rx_queue *rxq)
745 if (rxq->pool[i].page != NULL) {
746 pci_unmap_page(priv->pci_dev, rxq->pool[i].page_dma,
749 __iwl_free_pages(priv, rxq->pool[i].page);
750 rxq->pool[i].page = NULL;
754 dma_free_coherent(&priv->pci_dev->dev, 4 * RX_QUEUE_SIZE, rxq->bd,
755 rxq->bd_dma);
757 rxq->rb_stts, rxq->rb_stts_dma);
758 rxq->bd = NULL;
759 rxq->rb_stts = NULL;