-#define IONIC_Q_TO_QCQ(q) container_of(q, struct ionic_qcq, q)
-#define IONIC_Q_TO_TX_STATS(q) (&IONIC_Q_TO_QCQ(q)->stats.tx)
-#define IONIC_Q_TO_RX_STATS(q) (&IONIC_Q_TO_QCQ(q)->stats.rx)
+struct ionic_rx_qcq {
+ /* cacheline0, cacheline1 */
+ struct ionic_qcq qcq;
+
+ /* cacheline2 */
+ struct rte_mempool *mb_pool;
+ uint16_t flags;
+
+ /* cacheline3 (inside stats) */
+ struct ionic_rx_stats stats;
+};
+
+struct ionic_tx_qcq {
+ /* cacheline0, cacheline1 */
+ struct ionic_qcq qcq;
+
+ /* cacheline2 */
+ uint16_t num_segs_fw; /* # segs supported by current FW */
+ uint16_t flags;
+
+ struct ionic_tx_stats stats;
+};
+
+#define IONIC_Q_TO_QCQ(_q) container_of(_q, struct ionic_qcq, q)
+#define IONIC_CQ_TO_QCQ(_cq) container_of(_cq, struct ionic_qcq, cq)
+
+struct ionic_qtype_info {
+ uint8_t version;
+ uint8_t supported;
+ uint64_t features;
+ uint16_t desc_sz;
+ uint16_t comp_sz;
+ uint16_t sg_desc_sz;
+ uint16_t max_sg_elems;
+ uint16_t sg_desc_stride;
+};