net/sfc: set up and release Tx queues
[dpdk.git] / drivers / net / sfc / sfc_tx.h
index 549abc4..e8dd578 100644 (file)
@@ -40,13 +40,49 @@ extern "C" {
 #endif
 
 struct sfc_adapter;
+struct sfc_evq;
+
+struct sfc_tx_sw_desc {
+       struct rte_mbuf         *mbuf;
+};
+
+enum sfc_txq_state_bit {
+       SFC_TXQ_INITIALIZED_BIT = 0,
+#define SFC_TXQ_INITIALIZED    (1 << SFC_TXQ_INITIALIZED_BIT)
+};
+
+struct sfc_txq {
+       struct sfc_evq          *evq;
+       struct sfc_tx_sw_desc   *sw_ring;
+       unsigned int            state;
+       unsigned int            ptr_mask;
+       efx_desc_t              *pend_desc;
+       efx_txq_t               *common;
+       efsys_mem_t             mem;
+
+       unsigned int            hw_index;
+       unsigned int            flags;
+};
+
+static inline unsigned int
+sfc_txq_sw_index(const struct sfc_txq *txq)
+{
+       return txq->hw_index;
+}
 
 struct sfc_txq_info {
+       unsigned int            entries;
+       struct sfc_txq          *txq;
 };
 
 int sfc_tx_init(struct sfc_adapter *sa);
 void sfc_tx_fini(struct sfc_adapter *sa);
 
+int sfc_tx_qinit(struct sfc_adapter *sa, unsigned int sw_index,
+                uint16_t nb_tx_desc, unsigned int socket_id,
+                const struct rte_eth_txconf *tx_conf);
+void sfc_tx_qfini(struct sfc_adapter *sa, unsigned int sw_index);
+
 #ifdef __cplusplus
 }
 #endif