Lines Matching refs:io_sq

83 int ena_com_prepare_tx(struct ena_com_io_sq *io_sq,
88 struct ena_com_io_sq *io_sq,
91 int ena_com_add_single_rx_desc(struct ena_com_io_sq *io_sq,
103 static inline int ena_com_free_q_entries(struct ena_com_io_sq *io_sq)
107 next_to_comp = io_sq->next_to_comp;
108 tail = io_sq->tail;
111 return io_sq->q_depth - 1 - cnt;
115 static inline bool ena_com_sq_have_enough_space(struct ena_com_io_sq *io_sq,
120 if (io_sq->mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_HOST)
121 return ena_com_free_q_entries(io_sq) >= required_buffers;
128 temp = required_buffers / io_sq->llq_info.descs_per_entry + 2;
130 return ena_com_free_q_entries(io_sq) > temp;
133 static inline bool ena_com_meta_desc_changed(struct ena_com_io_sq *io_sq,
139 return !!memcmp(&io_sq->cached_tx_meta,
144 static inline bool is_llq_max_tx_burst_exists(struct ena_com_io_sq *io_sq)
146 return (io_sq->mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) &&
147 io_sq->llq_info.max_entries_in_tx_burst > 0;
150 static inline bool ena_com_is_doorbell_needed(struct ena_com_io_sq *io_sq,
158 if (!is_llq_max_tx_burst_exists(io_sq))
161 llq_info = &io_sq->llq_info;
165 unlikely(ena_com_meta_desc_changed(io_sq, ena_tx_ctx)))
174 ena_trc_dbg(ena_com_io_sq_to_ena_dev(io_sq),
176 io_sq->qid, num_descs, num_entries_needed);
178 return num_entries_needed > io_sq->entries_in_tx_burst_left;
181 static inline int ena_com_write_sq_doorbell(struct ena_com_io_sq *io_sq)
183 u16 max_entries_in_tx_burst = io_sq->llq_info.max_entries_in_tx_burst;
184 u16 tail = io_sq->tail;
186 ena_trc_dbg(ena_com_io_sq_to_ena_dev(io_sq),
188 io_sq->qid, tail);
190 ENA_REG_WRITE32(io_sq->bus, tail, io_sq->db_addr);
192 if (is_llq_max_tx_burst_exists(io_sq)) {
193 ena_trc_dbg(ena_com_io_sq_to_ena_dev(io_sq),
195 io_sq->qid, max_entries_in_tx_burst);
196 io_sq->entries_in_tx_burst_left = max_entries_in_tx_burst;
238 static inline void ena_com_comp_ack(struct ena_com_io_sq *io_sq, u16 elem)
240 io_sq->next_to_comp += elem;