X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc_dp_rx.h;h=a7b82784c15e675cb0f553abf6a36ad4109b3c67;hb=b3bbd9e5f2;hp=7e56d1412cd6b6588350cf907fcc4d775876bec4;hpb=df1bfde4ff0dbdb2a0380a1a8b9f2c5bb6e974be;p=dpdk.git diff --git a/drivers/net/sfc/sfc_dp_rx.h b/drivers/net/sfc/sfc_dp_rx.h index 7e56d1412c..a7b82784c1 100644 --- a/drivers/net/sfc/sfc_dp_rx.h +++ b/drivers/net/sfc/sfc_dp_rx.h @@ -83,6 +83,21 @@ struct sfc_dp_rx_qcreate_info { /** Rx queue size */ unsigned int rxq_entries; + /** DMA-mapped Rx descriptors ring */ + void *rxq_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 Rx refill + * doorbell + */ + volatile void *mem_bar; }; /** @@ -122,6 +137,11 @@ typedef int (sfc_dp_rx_qstart_t)(struct sfc_dp_rxq *dp_rxq, typedef void (sfc_dp_rx_qstop_t)(struct sfc_dp_rxq *dp_rxq, unsigned int *evq_read_ptr); +/** + * Receive event handler used during queue flush only. + */ +typedef bool (sfc_dp_rx_qrx_ev_t)(struct sfc_dp_rxq *dp_rxq, unsigned int id); + /** * Receive queue purge function called after queue flush. * @@ -139,10 +159,14 @@ typedef unsigned int (sfc_dp_rx_qdesc_npending_t)(struct sfc_dp_rxq *dp_rxq); struct sfc_dp_rx { struct sfc_dp dp; + unsigned int features; +#define SFC_DP_RX_FEAT_SCATTER 0x1 +#define SFC_DP_RX_FEAT_MULTI_PROCESS 0x2 sfc_dp_rx_qcreate_t *qcreate; sfc_dp_rx_qdestroy_t *qdestroy; sfc_dp_rx_qstart_t *qstart; sfc_dp_rx_qstop_t *qstop; + sfc_dp_rx_qrx_ev_t *qrx_ev; sfc_dp_rx_qpurge_t *qpurge; sfc_dp_rx_supported_ptypes_get_t *supported_ptypes_get; sfc_dp_rx_qdesc_npending_t *qdesc_npending; @@ -166,6 +190,7 @@ sfc_dp_find_rx_by_caps(struct sfc_dp_list *head, unsigned int avail_caps) } extern struct sfc_dp_rx sfc_efx_rx; +extern struct sfc_dp_rx sfc_ef10_rx; #ifdef __cplusplus }