X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc_rx.h;h=aca0925b5a1cd212f02c43891cb8aed5e7d76e3d;hb=3be9c6db296825021bc4e85c6f0bde7df5543cc8;hp=6706ee6fcaba2211fc3f2fcbda8f238dfc7bb184;hpb=ffc905f3b856b96c6d8d864dba4052104fae4064;p=dpdk.git diff --git a/drivers/net/sfc/sfc_rx.h b/drivers/net/sfc/sfc_rx.h index 6706ee6fca..aca0925b5a 100644 --- a/drivers/net/sfc/sfc_rx.h +++ b/drivers/net/sfc/sfc_rx.h @@ -50,32 +50,16 @@ enum sfc_rxq_state_bit { }; /** - * Receive queue control information. - * Allocated on the socket specified on the queue setup. + * Receive queue control primary process-only information. */ struct sfc_rxq { struct sfc_evq *evq; efx_rxq_t *common; efsys_mem_t mem; unsigned int hw_index; - unsigned int refill_threshold; - struct rte_mempool *refill_mb_pool; - struct sfc_dp_rxq *dp; - unsigned int state; + uint16_t buf_size; }; -static inline unsigned int -sfc_rxq_sw_index_by_hw_index(unsigned int hw_index) -{ - return hw_index; -} - -static inline unsigned int -sfc_rxq_sw_index(const struct sfc_rxq *rxq) -{ - return sfc_rxq_sw_index_by_hw_index(rxq->hw_index); -} - struct sfc_rxq *sfc_rxq_by_dp_rxq(const struct sfc_dp_rxq *dp_rxq); /** @@ -120,15 +104,20 @@ sfc_efx_rxq_by_dp_rxq(struct sfc_dp_rxq *dp_rxq) * Allocated on the same socket as adapter data. */ struct sfc_rxq_info { + unsigned int state; unsigned int max_entries; unsigned int entries; efx_rxq_type_t type; unsigned int type_flags; - struct sfc_rxq *rxq; + struct sfc_dp_rxq *dp; boolean_t deferred_start; boolean_t deferred_started; + unsigned int refill_threshold; + struct rte_mempool *refill_mb_pool; }; +struct sfc_rxq_info *sfc_rxq_info_by_dp_rxq(const struct sfc_dp_rxq *dp_rxq); + int sfc_rx_configure(struct sfc_adapter *sa); void sfc_rx_close(struct sfc_adapter *sa); int sfc_rx_start(struct sfc_adapter *sa); @@ -145,17 +134,18 @@ void sfc_rx_qstop(struct sfc_adapter *sa, unsigned int sw_index); uint64_t sfc_rx_get_dev_offload_caps(struct sfc_adapter *sa); uint64_t sfc_rx_get_queue_offload_caps(struct sfc_adapter *sa); -void sfc_rx_qflush_done(struct sfc_rxq *rxq); -void sfc_rx_qflush_failed(struct sfc_rxq *rxq); - -unsigned int sfc_rx_qdesc_npending(struct sfc_adapter *sa, - unsigned int sw_index); -int sfc_rx_qdesc_done(struct sfc_dp_rxq *dp_rxq, unsigned int offset); - -#if EFSYS_OPT_RX_SCALE -efx_rx_hash_type_t sfc_rte_to_efx_hash_type(uint64_t rss_hf); -uint64_t sfc_efx_to_rte_hash_type(efx_rx_hash_type_t efx_hash_types); -#endif +void sfc_rx_qflush_done(struct sfc_rxq_info *rxq_info); +void sfc_rx_qflush_failed(struct sfc_rxq_info *rxq_info); + +int sfc_rx_hash_init(struct sfc_adapter *sa); +void sfc_rx_hash_fini(struct sfc_adapter *sa); +int sfc_rx_hf_rte_to_efx(struct sfc_adapter *sa, uint64_t rte, + efx_rx_hash_type_t *efx); +uint64_t sfc_rx_hf_efx_to_rte(struct sfc_rss *rss, efx_rx_hash_type_t efx); +boolean_t sfc_rx_check_scatter(size_t pdu, size_t rx_buf_size, + uint32_t rx_prefix_size, + boolean_t rx_scatter_enabled, + const char **error); #ifdef __cplusplus }