cq->base_pa = base_pa;
}
-void
-ionic_cq_bind(struct ionic_cq *cq, struct ionic_queue *q)
-{
- q->bound_cq = cq;
-}
-
uint32_t
ionic_cq_service(struct ionic_cq *cq, uint32_t work_to_do,
ionic_cq_cb cb, void *cb_arg)
struct ionic_queue {
struct ionic_dev *idev;
struct ionic_lif *lif;
- struct ionic_cq *bound_cq;
uint32_t index;
uint32_t type;
uint32_t hw_index;
int ionic_cq_init(struct ionic_cq *cq, uint16_t num_descs);
void ionic_cq_map(struct ionic_cq *cq, void *base, rte_iova_t base_pa);
-void ionic_cq_bind(struct ionic_cq *cq, struct ionic_queue *q);
typedef bool (*ionic_cq_cb)(struct ionic_cq *cq, uint32_t cq_desc_index,
void *cb_arg);
uint32_t ionic_cq_service(struct ionic_cq *cq, uint32_t work_to_do,
ionic_q_map(&new->q, q_base, q_base_pa);
ionic_cq_map(&new->cq, cq_base, cq_base_pa);
- ionic_cq_bind(&new->cq, &new->q);
*qcq = new;
}
static __rte_always_inline void
-ionic_rx_clean(struct ionic_queue *q,
+ionic_rx_clean(struct ionic_qcq *rxq,
uint32_t q_desc_index, uint32_t cq_desc_index,
void *service_cb_arg)
{
- struct ionic_rxq_comp *cq_desc_base = q->bound_cq->base;
+ struct ionic_queue *q = &rxq->q;
+ struct ionic_cq *cq = &rxq->cq;
+ struct ionic_rxq_comp *cq_desc_base = cq->base;
struct ionic_rxq_comp *cq_desc = &cq_desc_base[cq_desc_index];
struct rte_mbuf *rxm, *rxm_seg;
- struct ionic_qcq *rxq = IONIC_Q_TO_QCQ(q);
uint32_t max_frame_size =
rxq->lif->eth_dev->data->dev_conf.rxmode.max_rx_pkt_len;
uint64_t pkt_flags = 0;
/* q desc info */
rte_prefetch0(&q->info[q->tail_idx]);
- ionic_rx_clean(q, curr_q_tail_idx, curr_cq_tail_idx,
+ ionic_rx_clean(rxq, curr_q_tail_idx, curr_cq_tail_idx,
service_cb_arg);
} while (more);