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()
258 int txq_id = txq->q.id; in iwl_pcie_txq_inval_byte_cnt_tbl()
259 int read_ptr = txq->q.read_ptr; in iwl_pcie_txq_inval_byte_cnt_tbl()
263 (void *)txq->entries[txq->q.read_ptr].cmd->payload; in iwl_pcie_txq_inval_byte_cnt_tbl()
286 int txq_id = txq->q.id; in iwl_pcie_txq_inc_wr_ptr()
320 IWL_DEBUG_TX(trans, "Q:%d WR: 0x%x\n", txq_id, txq->q.write_ptr); in iwl_pcie_txq_inc_wr_ptr()
321 iwl_write32(trans, HBUS_TARG_WRPTR, txq->q.write_ptr | (txq_id << 8)); in iwl_pcie_txq_inc_wr_ptr()
422 int rd_ptr = txq->q.read_ptr; in iwl_pcie_txq_free_tfd()
423 int idx = get_cmd_index(&txq->q, rd_ptr); in iwl_pcie_txq_free_tfd()
452 struct iwl_queue *q; in iwl_pcie_txq_build_tfd() local
456 q = &txq->q; in iwl_pcie_txq_build_tfd()
458 tfd = &tfd_tmp[q->write_ptr]; in iwl_pcie_txq_build_tfd()
497 txq->q.n_window = slots_num; in iwl_pcie_txq_alloc()
518 &txq->q.dma_addr, GFP_KERNEL); in iwl_pcie_txq_alloc()
535 txq->q.id = txq_id; in iwl_pcie_txq_alloc()
539 dma_free_coherent(trans->dev, tfd_sz, txq->tfds, txq->q.dma_addr); in iwl_pcie_txq_alloc()
563 ret = iwl_queue_init(&txq->q, slots_num, txq_id); in iwl_pcie_txq_init()
574 txq->q.dma_addr >> 8); in iwl_pcie_txq_init()
586 struct iwl_queue *q = &txq->q; in iwl_pcie_txq_unmap() local
589 while (q->write_ptr != q->read_ptr) { in iwl_pcie_txq_unmap()
591 txq_id, q->read_ptr); in iwl_pcie_txq_unmap()
593 q->read_ptr = iwl_queue_inc_wrap(q->read_ptr); in iwl_pcie_txq_unmap()
624 for (i = 0; i < txq->q.n_window; i++) { in iwl_pcie_txq_free()
633 txq->tfds, txq->q.dma_addr); in iwl_pcie_txq_free()
634 txq->q.dma_addr = 0; in iwl_pcie_txq_free()
638 sizeof(*txq->scratchbufs) * txq->q.n_window, in iwl_pcie_txq_free()
718 txq->q.dma_addr >> 8); in iwl_trans_pcie_tx_reset()
720 txq->q.read_ptr = 0; in iwl_trans_pcie_tx_reset()
721 txq->q.write_ptr = 0; in iwl_trans_pcie_tx_reset()
957 if (txq->q.read_ptr == txq->q.write_ptr) in iwl_pcie_txq_progress()
970 struct iwl_queue *q = &txq->q; in iwl_trans_pcie_reclaim() local
985 if (txq->q.read_ptr == tfd_num) in iwl_trans_pcie_reclaim()
989 txq_id, txq->q.read_ptr, tfd_num, ssn); in iwl_trans_pcie_reclaim()
995 if (!iwl_queue_used(q, last_to_free)) { in iwl_trans_pcie_reclaim()
999 q->write_ptr, q->read_ptr); in iwl_trans_pcie_reclaim()
1007 q->read_ptr != tfd_num; in iwl_trans_pcie_reclaim()
1008 q->read_ptr = iwl_queue_inc_wrap(q->read_ptr)) { in iwl_trans_pcie_reclaim()
1010 if (WARN_ON_ONCE(txq->entries[txq->q.read_ptr].skb == NULL)) in iwl_trans_pcie_reclaim()
1013 __skb_queue_tail(skbs, txq->entries[txq->q.read_ptr].skb); in iwl_trans_pcie_reclaim()
1015 txq->entries[txq->q.read_ptr].skb = NULL; in iwl_trans_pcie_reclaim()
1024 if (iwl_queue_space(&txq->q) > txq->q.low_mark) in iwl_trans_pcie_reclaim()
1027 if (q->read_ptr == q->write_ptr) { in iwl_trans_pcie_reclaim()
1028 IWL_DEBUG_RPM(trans, "Q %d - last tx reclaimed\n", q->id); in iwl_trans_pcie_reclaim()
1113 struct iwl_queue *q = &txq->q; in iwl_pcie_cmdq_reclaim() local
1119 if ((idx >= TFD_QUEUE_SIZE_MAX) || (!iwl_queue_used(q, idx))) { in iwl_pcie_cmdq_reclaim()
1123 q->write_ptr, q->read_ptr); in iwl_pcie_cmdq_reclaim()
1127 for (idx = iwl_queue_inc_wrap(idx); q->read_ptr != idx; in iwl_pcie_cmdq_reclaim()
1128 q->read_ptr = iwl_queue_inc_wrap(q->read_ptr)) { in iwl_pcie_cmdq_reclaim()
1132 idx, q->write_ptr, q->read_ptr); in iwl_pcie_cmdq_reclaim()
1137 if (q->read_ptr == q->write_ptr) { in iwl_pcie_cmdq_reclaim()
1220 ssn = txq->q.read_ptr; in iwl_trans_pcie_txq_enable()
1226 txq->q.read_ptr = (ssn & 0xff); in iwl_trans_pcie_txq_enable()
1227 txq->q.write_ptr = (ssn & 0xff); in iwl_trans_pcie_txq_enable()
1323 struct iwl_queue *q = &txq->q; in iwl_pcie_enqueue_hcmd() local
1421 if (iwl_queue_space(q) < ((cmd->flags & CMD_ASYNC) ? 2 : 1)) { in iwl_pcie_enqueue_hcmd()
1430 idx = get_cmd_index(q, q->write_ptr); in iwl_pcie_enqueue_hcmd()
1449 INDEX_TO_SEQ(q->write_ptr)); in iwl_pcie_enqueue_hcmd()
1457 INDEX_TO_SEQ(q->write_ptr)); in iwl_pcie_enqueue_hcmd()
1507 cmd_size, q->write_ptr, idx, trans_pcie->cmd_queue); in iwl_pcie_enqueue_hcmd()
1511 memcpy(&txq->scratchbufs[q->write_ptr], &out_cmd->hdr, scratch_size); in iwl_pcie_enqueue_hcmd()
1513 iwl_pcie_get_scratchbuf_dma(txq, q->write_ptr), in iwl_pcie_enqueue_hcmd()
1524 &txq->tfds[q->write_ptr]); in iwl_pcie_enqueue_hcmd()
1548 &txq->tfds[q->write_ptr]); in iwl_pcie_enqueue_hcmd()
1566 if (q->read_ptr == q->write_ptr && txq->wd_timeout) in iwl_pcie_enqueue_hcmd()
1578 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr); in iwl_pcie_enqueue_hcmd()
1618 trans_pcie->txq[trans_pcie->cmd_queue].q.read_ptr, in iwl_pcie_hcmd_complete()
1619 trans_pcie->txq[trans_pcie->cmd_queue].q.write_ptr)) { in iwl_pcie_hcmd_complete()
1626 cmd_index = get_cmd_index(&txq->q, index); in iwl_pcie_hcmd_complete()
1717 struct iwl_queue *q = &txq->q; in iwl_pcie_send_hcmd_sync() local
1724 q->read_ptr, q->write_ptr); in iwl_pcie_send_hcmd_sync()
1805 struct iwl_queue *q; in iwl_trans_pcie_tx() local
1816 q = &txq->q; in iwl_trans_pcie_tx()
1843 (wifi_seq & 0xff) != q->write_ptr, in iwl_trans_pcie_tx()
1845 txq_id, wifi_seq, q->write_ptr); in iwl_trans_pcie_tx()
1848 txq->entries[q->write_ptr].skb = skb; in iwl_trans_pcie_tx()
1849 txq->entries[q->write_ptr].cmd = dev_cmd; in iwl_trans_pcie_tx()
1853 INDEX_TO_SEQ(q->write_ptr))); in iwl_trans_pcie_tx()
1855 tb0_phys = iwl_pcie_get_scratchbuf_dma(txq, q->write_ptr); in iwl_trans_pcie_tx()
1863 out_meta = &txq->entries[q->write_ptr].meta; in iwl_trans_pcie_tx()
1881 memcpy(&txq->scratchbufs[q->write_ptr], &dev_cmd->hdr, in iwl_trans_pcie_tx()
1907 &txq->tfds[q->write_ptr]); in iwl_trans_pcie_tx()
1927 &txq->tfds[q->write_ptr]); in iwl_trans_pcie_tx()
1940 &txq->tfds[txq->q.write_ptr], in iwl_trans_pcie_tx()
1950 if (q->read_ptr == q->write_ptr) { in iwl_trans_pcie_tx()
1964 IWL_DEBUG_RPM(trans, "Q: %d first tx - take ref\n", q->id); in iwl_trans_pcie_tx()
1969 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr); in iwl_trans_pcie_tx()
1977 if (iwl_queue_space(q) < q->high_mark) { in iwl_trans_pcie_tx()