X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc_rx.h;h=4ab513915e217edf42d322d869dde2b39b6b5264;hb=d0f981a3efd8b3204f3d86d6ef55dabf7412298c;hp=73b70249c5ee6b5b43b1f2def096beeb30dfe758;hpb=4e8938dd1fdd481ed20c20a7ee1e900f1cced282;p=dpdk.git diff --git a/drivers/net/sfc/sfc_rx.h b/drivers/net/sfc/sfc_rx.h index 73b70249c5..4ab513915e 100644 --- a/drivers/net/sfc/sfc_rx.h +++ b/drivers/net/sfc/sfc_rx.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause * - * Copyright (c) 2016-2018 Solarflare Communications Inc. - * All rights reserved. + * Copyright(c) 2019-2021 Xilinx, Inc. + * Copyright(c) 2016-2019 Solarflare Communications Inc. * * This software was jointly developed between OKTET Labs (under contract * for Solarflare) and Solarflare Communications, Inc. @@ -12,7 +12,7 @@ #include #include -#include +#include #include "efx.h" @@ -73,6 +73,7 @@ struct sfc_efx_rxq { #define SFC_EFX_RXQ_FLAG_STARTED 0x1 #define SFC_EFX_RXQ_FLAG_RUNNING 0x2 #define SFC_EFX_RXQ_FLAG_RSS_HASH 0x4 +#define SFC_EFX_RXQ_FLAG_INTR_EN 0x8 unsigned int ptr_mask; unsigned int pending; unsigned int completed; @@ -114,22 +115,29 @@ struct sfc_rxq_info { boolean_t deferred_started; unsigned int refill_threshold; struct rte_mempool *refill_mb_pool; + unsigned int rxq_flags; }; struct sfc_rxq_info *sfc_rxq_info_by_dp_rxq(const struct sfc_dp_rxq *dp_rxq); +struct sfc_rxq_info *sfc_rxq_info_by_ethdev_qid(struct sfc_adapter_shared *sas, + sfc_ethdev_qid_t ethdev_qid); +struct sfc_rxq *sfc_rxq_ctrl_by_ethdev_qid(struct sfc_adapter *sa, + sfc_ethdev_qid_t ethdev_qid); int sfc_rx_configure(struct sfc_adapter *sa); void sfc_rx_close(struct sfc_adapter *sa); int sfc_rx_start(struct sfc_adapter *sa); void sfc_rx_stop(struct sfc_adapter *sa); +int sfc_rx_qinit_info(struct sfc_adapter *sa, sfc_sw_index_t sw_index, + unsigned int extra_efx_type_flags); int sfc_rx_qinit(struct sfc_adapter *sa, unsigned int rx_queue_id, uint16_t nb_rx_desc, unsigned int socket_id, const struct rte_eth_rxconf *rx_conf, struct rte_mempool *mb_pool); -void sfc_rx_qfini(struct sfc_adapter *sa, unsigned int sw_index); -int sfc_rx_qstart(struct sfc_adapter *sa, unsigned int sw_index); -void sfc_rx_qstop(struct sfc_adapter *sa, unsigned int sw_index); +void sfc_rx_qfini(struct sfc_adapter *sa, sfc_sw_index_t sw_index); +int sfc_rx_qstart(struct sfc_adapter *sa, sfc_sw_index_t sw_index); +void sfc_rx_qstop(struct sfc_adapter *sa, sfc_sw_index_t 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); @@ -137,12 +145,19 @@ uint64_t sfc_rx_get_queue_offload_caps(struct sfc_adapter *sa); void sfc_rx_qflush_done(struct sfc_rxq_info *rxq_info); void sfc_rx_qflush_failed(struct sfc_rxq_info *rxq_info); +unsigned int sfc_rx_get_pushed(struct sfc_adapter *sa, + struct sfc_dp_rxq *dp_rxq); + 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_adapter *sa, - 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, + uint32_t rx_scatter_max, + const char **error); #ifdef __cplusplus }