X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc_rx.h;h=d6ee9cf802bbef2521083598402632972b83ad17;hb=1be514fbcea9e8964296b46c91dbb56715503ae7;hp=9c946d7cb435a16bd69a3ce6f063fe27abf0e041;hpb=bfea01bc1e0ec561891b551c863b7999100377b0;p=dpdk.git diff --git a/drivers/net/sfc/sfc_rx.h b/drivers/net/sfc/sfc_rx.h index 9c946d7cb4..d6ee9cf802 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-2020 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. @@ -50,8 +50,7 @@ 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; @@ -61,18 +60,6 @@ struct sfc_rxq { 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); /** @@ -86,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; @@ -122,12 +110,12 @@ struct sfc_rxq_info { 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; + unsigned int rxq_flags; }; struct sfc_rxq_info *sfc_rxq_info_by_dp_rxq(const struct sfc_dp_rxq *dp_rxq); @@ -155,8 +143,12 @@ 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 }