Lines Matching refs:q

68 static int iwl_queue_space(const struct iwl_queue *q)  in iwl_queue_space()  argument
79 if (q->n_window < TFD_QUEUE_SIZE_MAX) in iwl_queue_space()
80 max = q->n_window; in iwl_queue_space()
88 used = (q->write_ptr - q->read_ptr) & (TFD_QUEUE_SIZE_MAX - 1); in iwl_queue_space()
99 static int iwl_queue_init(struct iwl_queue *q, int slots_num, u32 id) in iwl_queue_init() argument
101 q->n_window = slots_num; in iwl_queue_init()
102 q->id = id; in iwl_queue_init()
109 q->low_mark = q->n_window / 4; in iwl_queue_init()
110 if (q->low_mark < 4) in iwl_queue_init()
111 q->low_mark = 4; in iwl_queue_init()
113 q->high_mark = q->n_window / 8; in iwl_queue_init()
114 if (q->high_mark < 2) in iwl_queue_init()
115 q->high_mark = 2; in iwl_queue_init()
117 q->write_ptr = 0; in iwl_queue_init()
118 q->read_ptr = 0; in iwl_queue_init()
153 SCD_TX_STTS_QUEUE_OFFSET(txq->q.id); in iwl_pcie_txq_stuck_timer()
159 if (txq->q.read_ptr == txq->q.write_ptr) { in iwl_pcie_txq_stuck_timer()
165 IWL_ERR(trans, "Queue %d stuck for %u ms.\n", txq->q.id, in iwl_pcie_txq_stuck_timer()
168 txq->q.read_ptr, txq->q.write_ptr); in iwl_pcie_txq_stuck_timer()
211 int write_ptr = txq->q.write_ptr; in iwl_pcie_txq_update_byte_cnt_tbl()
212 int txq_id = txq->q.id; in iwl_pcie_txq_update_byte_cnt_tbl()
218 (void *) txq->entries[txq->q.write_ptr].cmd->payload; in iwl_pcie_txq_update_byte_cnt_tbl()
257 int txq_id = txq->q.id; in iwl_pcie_txq_inval_byte_cnt_tbl()
258 int read_ptr = txq->q.read_ptr; in iwl_pcie_txq_inval_byte_cnt_tbl()
262 (void *)txq->entries[txq->q.read_ptr].cmd->payload; in iwl_pcie_txq_inval_byte_cnt_tbl()
285 int txq_id = txq->q.id; in iwl_pcie_txq_inc_wr_ptr()
319 IWL_DEBUG_TX(trans, "Q:%d WR: 0x%x\n", txq_id, txq->q.write_ptr); in iwl_pcie_txq_inc_wr_ptr()
320 iwl_write32(trans, HBUS_TARG_WRPTR, txq->q.write_ptr | (txq_id << 8)); in iwl_pcie_txq_inc_wr_ptr()
414 int rd_ptr = txq->q.read_ptr; in iwl_pcie_txq_free_tfd()
415 int idx = get_cmd_index(&txq->q, rd_ptr); in iwl_pcie_txq_free_tfd()
444 struct iwl_queue *q; in iwl_pcie_txq_build_tfd() local
448 q = &txq->q; in iwl_pcie_txq_build_tfd()
450 tfd = &tfd_tmp[q->write_ptr]; in iwl_pcie_txq_build_tfd()
489 txq->q.n_window = slots_num; in iwl_pcie_txq_alloc()
510 &txq->q.dma_addr, GFP_KERNEL); in iwl_pcie_txq_alloc()
527 txq->q.id = txq_id; in iwl_pcie_txq_alloc()
531 dma_free_coherent(trans->dev, tfd_sz, txq->tfds, txq->q.dma_addr); in iwl_pcie_txq_alloc()
555 ret = iwl_queue_init(&txq->q, slots_num, txq_id); in iwl_pcie_txq_init()
566 txq->q.dma_addr >> 8); in iwl_pcie_txq_init()
578 struct iwl_queue *q = &txq->q; in iwl_pcie_txq_unmap() local
581 while (q->write_ptr != q->read_ptr) { in iwl_pcie_txq_unmap()
583 txq_id, q->read_ptr); in iwl_pcie_txq_unmap()
585 q->read_ptr = iwl_queue_inc_wrap(q->read_ptr); in iwl_pcie_txq_unmap()
616 for (i = 0; i < txq->q.n_window; i++) { in iwl_pcie_txq_free()
625 txq->tfds, txq->q.dma_addr); in iwl_pcie_txq_free()
626 txq->q.dma_addr = 0; in iwl_pcie_txq_free()
630 sizeof(*txq->scratchbufs) * txq->q.n_window, in iwl_pcie_txq_free()
710 txq->q.dma_addr >> 8); in iwl_trans_pcie_tx_reset()
712 txq->q.read_ptr = 0; in iwl_trans_pcie_tx_reset()
713 txq->q.write_ptr = 0; in iwl_trans_pcie_tx_reset()
948 if (txq->q.read_ptr == txq->q.write_ptr) in iwl_pcie_txq_progress()
961 struct iwl_queue *q = &txq->q; in iwl_trans_pcie_reclaim() local
976 if (txq->q.read_ptr == tfd_num) in iwl_trans_pcie_reclaim()
980 txq_id, txq->q.read_ptr, tfd_num, ssn); in iwl_trans_pcie_reclaim()
986 if (!iwl_queue_used(q, last_to_free)) { in iwl_trans_pcie_reclaim()
990 q->write_ptr, q->read_ptr); in iwl_trans_pcie_reclaim()
998 q->read_ptr != tfd_num; in iwl_trans_pcie_reclaim()
999 q->read_ptr = iwl_queue_inc_wrap(q->read_ptr)) { in iwl_trans_pcie_reclaim()
1001 if (WARN_ON_ONCE(txq->entries[txq->q.read_ptr].skb == NULL)) in iwl_trans_pcie_reclaim()
1004 __skb_queue_tail(skbs, txq->entries[txq->q.read_ptr].skb); in iwl_trans_pcie_reclaim()
1006 txq->entries[txq->q.read_ptr].skb = NULL; in iwl_trans_pcie_reclaim()
1015 if (iwl_queue_space(&txq->q) > txq->q.low_mark) in iwl_trans_pcie_reclaim()
1018 if (q->read_ptr == q->write_ptr) { in iwl_trans_pcie_reclaim()
1019 IWL_DEBUG_RPM(trans, "Q %d - last tx reclaimed\n", q->id); in iwl_trans_pcie_reclaim()
1106 struct iwl_queue *q = &txq->q; in iwl_pcie_cmdq_reclaim() local
1112 if ((idx >= TFD_QUEUE_SIZE_MAX) || (!iwl_queue_used(q, idx))) { in iwl_pcie_cmdq_reclaim()
1116 q->write_ptr, q->read_ptr); in iwl_pcie_cmdq_reclaim()
1120 for (idx = iwl_queue_inc_wrap(idx); q->read_ptr != idx; in iwl_pcie_cmdq_reclaim()
1121 q->read_ptr = iwl_queue_inc_wrap(q->read_ptr)) { in iwl_pcie_cmdq_reclaim()
1125 idx, q->write_ptr, q->read_ptr); in iwl_pcie_cmdq_reclaim()
1130 if (q->read_ptr == q->write_ptr) { in iwl_pcie_cmdq_reclaim()
1213 ssn = txq->q.read_ptr; in iwl_trans_pcie_txq_enable()
1219 txq->q.read_ptr = (ssn & 0xff); in iwl_trans_pcie_txq_enable()
1220 txq->q.write_ptr = (ssn & 0xff); in iwl_trans_pcie_txq_enable()
1316 struct iwl_queue *q = &txq->q; in iwl_pcie_enqueue_hcmd() local
1403 if (iwl_queue_space(q) < ((cmd->flags & CMD_ASYNC) ? 2 : 1)) { in iwl_pcie_enqueue_hcmd()
1412 idx = get_cmd_index(q, q->write_ptr); in iwl_pcie_enqueue_hcmd()
1426 INDEX_TO_SEQ(q->write_ptr)); in iwl_pcie_enqueue_hcmd()
1472 cmd_size, q->write_ptr, idx, trans_pcie->cmd_queue); in iwl_pcie_enqueue_hcmd()
1476 memcpy(&txq->scratchbufs[q->write_ptr], &out_cmd->hdr, scratch_size); in iwl_pcie_enqueue_hcmd()
1478 iwl_pcie_get_scratchbuf_dma(txq, q->write_ptr), in iwl_pcie_enqueue_hcmd()
1489 &txq->tfds[q->write_ptr]); in iwl_pcie_enqueue_hcmd()
1513 &txq->tfds[q->write_ptr]); in iwl_pcie_enqueue_hcmd()
1529 if (q->read_ptr == q->write_ptr && txq->wd_timeout) in iwl_pcie_enqueue_hcmd()
1541 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr); in iwl_pcie_enqueue_hcmd()
1583 trans_pcie->txq[trans_pcie->cmd_queue].q.read_ptr, in iwl_pcie_hcmd_complete()
1584 trans_pcie->txq[trans_pcie->cmd_queue].q.write_ptr)) { in iwl_pcie_hcmd_complete()
1591 cmd_index = get_cmd_index(&txq->q, index); in iwl_pcie_hcmd_complete()
1683 struct iwl_queue *q = &txq->q; in iwl_pcie_send_hcmd_sync() local
1690 q->read_ptr, q->write_ptr); in iwl_pcie_send_hcmd_sync()
1771 struct iwl_queue *q; in iwl_trans_pcie_tx() local
1781 q = &txq->q; in iwl_trans_pcie_tx()
1796 (wifi_seq & 0xff) != q->write_ptr, in iwl_trans_pcie_tx()
1798 txq_id, wifi_seq, q->write_ptr); in iwl_trans_pcie_tx()
1801 txq->entries[q->write_ptr].skb = skb; in iwl_trans_pcie_tx()
1802 txq->entries[q->write_ptr].cmd = dev_cmd; in iwl_trans_pcie_tx()
1806 INDEX_TO_SEQ(q->write_ptr))); in iwl_trans_pcie_tx()
1808 tb0_phys = iwl_pcie_get_scratchbuf_dma(txq, q->write_ptr); in iwl_trans_pcie_tx()
1816 out_meta = &txq->entries[q->write_ptr].meta; in iwl_trans_pcie_tx()
1833 memcpy(&txq->scratchbufs[q->write_ptr], &dev_cmd->hdr, in iwl_trans_pcie_tx()
1859 &txq->tfds[q->write_ptr]); in iwl_trans_pcie_tx()
1869 &txq->tfds[txq->q.write_ptr], in iwl_trans_pcie_tx()
1879 if (q->read_ptr == q->write_ptr) { in iwl_trans_pcie_tx()
1882 IWL_DEBUG_RPM(trans, "Q: %d first tx - take ref\n", q->id); in iwl_trans_pcie_tx()
1887 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr); in iwl_trans_pcie_tx()
1895 if (iwl_queue_space(q) < q->high_mark) { in iwl_trans_pcie_tx()