Lines Matching refs:rba
432 struct iwl_rb_allocator *rba = &trans_pcie->rba; in iwl_pcie_rx_allocator() local
434 int pending = atomic_xchg(&rba->req_pending, 0); in iwl_pcie_rx_allocator()
439 spin_lock(&rba->lock); in iwl_pcie_rx_allocator()
441 list_replace_init(&rba->rbd_empty, &local_empty); in iwl_pcie_rx_allocator()
442 spin_unlock(&rba->lock); in iwl_pcie_rx_allocator()
492 pending = atomic_xchg(&rba->req_pending, 0); in iwl_pcie_rx_allocator()
498 spin_lock(&rba->lock); in iwl_pcie_rx_allocator()
500 list_splice_tail(&local_allocated, &rba->rbd_allocated); in iwl_pcie_rx_allocator()
502 list_splice_tail_init(&rba->rbd_empty, &local_empty); in iwl_pcie_rx_allocator()
503 spin_unlock(&rba->lock); in iwl_pcie_rx_allocator()
505 atomic_inc(&rba->req_ready); in iwl_pcie_rx_allocator()
508 spin_lock(&rba->lock); in iwl_pcie_rx_allocator()
510 list_splice_tail(&local_empty, &rba->rbd_empty); in iwl_pcie_rx_allocator()
511 spin_unlock(&rba->lock); in iwl_pcie_rx_allocator()
525 struct iwl_rb_allocator *rba = &trans_pcie->rba; in iwl_pcie_rx_allocator_get() local
536 if (atomic_dec_if_positive(&rba->req_ready) < 0) in iwl_pcie_rx_allocator_get()
539 spin_lock(&rba->lock); in iwl_pcie_rx_allocator_get()
542 out[i] = list_first_entry(&rba->rbd_allocated, in iwl_pcie_rx_allocator_get()
546 spin_unlock(&rba->lock); in iwl_pcie_rx_allocator_get()
556 container_of(rba_p, struct iwl_trans_pcie, rba); in iwl_pcie_rx_allocator_work()
565 struct iwl_rb_allocator *rba = &trans_pcie->rba; in iwl_pcie_rx_alloc() local
571 spin_lock_init(&rba->lock); in iwl_pcie_rx_alloc()
667 static void iwl_pcie_rx_init_rba(struct iwl_rb_allocator *rba) in iwl_pcie_rx_init_rba() argument
671 lockdep_assert_held(&rba->lock); in iwl_pcie_rx_init_rba()
673 INIT_LIST_HEAD(&rba->rbd_allocated); in iwl_pcie_rx_init_rba()
674 INIT_LIST_HEAD(&rba->rbd_empty); in iwl_pcie_rx_init_rba()
677 list_add(&rba->pool[i].list, &rba->rbd_empty); in iwl_pcie_rx_init_rba()
683 struct iwl_rb_allocator *rba = &trans_pcie->rba; in iwl_pcie_rx_free_rba() local
686 lockdep_assert_held(&rba->lock); in iwl_pcie_rx_free_rba()
689 if (!rba->pool[i].page) in iwl_pcie_rx_free_rba()
691 dma_unmap_page(trans->dev, rba->pool[i].page_dma, in iwl_pcie_rx_free_rba()
694 __free_pages(rba->pool[i].page, trans_pcie->rx_page_order); in iwl_pcie_rx_free_rba()
695 rba->pool[i].page = NULL; in iwl_pcie_rx_free_rba()
703 struct iwl_rb_allocator *rba = &trans_pcie->rba; in iwl_pcie_rx_init() local
711 if (!rba->alloc_wq) in iwl_pcie_rx_init()
712 rba->alloc_wq = alloc_workqueue("rb_allocator", in iwl_pcie_rx_init()
714 INIT_WORK(&rba->rx_alloc, iwl_pcie_rx_allocator_work); in iwl_pcie_rx_init()
716 spin_lock(&rba->lock); in iwl_pcie_rx_init()
717 atomic_set(&rba->req_pending, 0); in iwl_pcie_rx_init()
718 atomic_set(&rba->req_ready, 0); in iwl_pcie_rx_init()
721 iwl_pcie_rx_init_rba(rba); in iwl_pcie_rx_init()
722 spin_unlock(&rba->lock); in iwl_pcie_rx_init()
755 struct iwl_rb_allocator *rba = &trans_pcie->rba; in iwl_pcie_rx_free() local
764 cancel_work_sync(&rba->rx_alloc); in iwl_pcie_rx_free()
765 if (rba->alloc_wq) { in iwl_pcie_rx_free()
766 destroy_workqueue(rba->alloc_wq); in iwl_pcie_rx_free()
767 rba->alloc_wq = NULL; in iwl_pcie_rx_free()
770 spin_lock(&rba->lock); in iwl_pcie_rx_free()
772 spin_unlock(&rba->lock); in iwl_pcie_rx_free()
804 struct iwl_rb_allocator *rba = &trans_pcie->rba; in iwl_pcie_rx_reuse_rbd() local
824 spin_lock(&rba->lock); in iwl_pcie_rx_reuse_rbd()
825 list_splice_tail_init(&rxq->rx_used, &rba->rbd_empty); in iwl_pcie_rx_reuse_rbd()
826 spin_unlock(&rba->lock); in iwl_pcie_rx_reuse_rbd()
828 atomic_inc(&rba->req_pending); in iwl_pcie_rx_reuse_rbd()
829 queue_work(rba->alloc_wq, &rba->rx_alloc); in iwl_pcie_rx_reuse_rbd()
998 struct iwl_rb_allocator *rba = &trans_pcie->rba; in iwl_pcie_rx_handle() local
1006 spin_lock(&rba->lock); in iwl_pcie_rx_handle()
1008 &rba->rbd_empty); in iwl_pcie_rx_handle()
1009 spin_unlock(&rba->lock); in iwl_pcie_rx_handle()