X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc_dp_tx.h;h=2bb9a2e71e7ea535f920414012ad1080ce9d2145;hb=8e680655e205214d43a544813dd0181e552d6cd6;hp=c93932e97edf51be531b6605866fa794378cbb55;hpb=7a4d44a639c99c8350cf738e40e7ae45e58f5960;p=dpdk.git diff --git a/drivers/net/sfc/sfc_dp_tx.h b/drivers/net/sfc/sfc_dp_tx.h index c93932e97e..2bb9a2e71e 100644 --- a/drivers/net/sfc/sfc_dp_tx.h +++ b/drivers/net/sfc/sfc_dp_tx.h @@ -65,6 +65,16 @@ struct sfc_dp_tx_qcreate_info { unsigned int txq_entries; /** Maximum size of data in the DMA descriptor */ uint16_t dma_desc_size_max; + /** DMA-mapped Tx descriptors ring */ + void *txq_hw_ring; + /** Associated event queue size */ + unsigned int evq_entries; + /** Hardware event ring */ + void *evq_hw_ring; + /** The queue index in hardware (required to push right doorbell) */ + unsigned int hw_index; + /** Virtual address of the memory-mapped BAR to push Tx doorbell */ + volatile void *mem_bar; }; /** @@ -107,6 +117,11 @@ typedef int (sfc_dp_tx_qstart_t)(struct sfc_dp_txq *dp_txq, typedef void (sfc_dp_tx_qstop_t)(struct sfc_dp_txq *dp_txq, unsigned int *evq_read_ptr); +/** + * Transmit event handler used during queue flush only. + */ +typedef bool (sfc_dp_tx_qtx_ev_t)(struct sfc_dp_txq *dp_txq, unsigned int id); + /** * Transmit queue function called after the queue flush. */ @@ -119,10 +134,12 @@ struct sfc_dp_tx { unsigned int features; #define SFC_DP_TX_FEAT_VLAN_INSERT 0x1 #define SFC_DP_TX_FEAT_TSO 0x2 +#define SFC_DP_TX_FEAT_MULTI_SEG 0x4 sfc_dp_tx_qcreate_t *qcreate; sfc_dp_tx_qdestroy_t *qdestroy; sfc_dp_tx_qstart_t *qstart; sfc_dp_tx_qstop_t *qstop; + sfc_dp_tx_qtx_ev_t *qtx_ev; sfc_dp_tx_qreap_t *qreap; eth_tx_burst_t pkt_burst; }; @@ -144,6 +161,8 @@ sfc_dp_find_tx_by_caps(struct sfc_dp_list *head, unsigned int avail_caps) } extern struct sfc_dp_tx sfc_efx_tx; +extern struct sfc_dp_tx sfc_ef10_tx; +extern struct sfc_dp_tx sfc_ef10_simple_tx; #ifdef __cplusplus }