X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc_dp_rx.h;h=246adbd87cdeb228047df2d00fdc17ba9d889f13;hb=1d5e6bb6b964674bed75fcf954ea4cd6c796c8e4;hp=2101fd7547540164d51cf24438b64771cf3f7949;hpb=a0147be54763c09daca94eec7cb075214788ca65;p=dpdk.git diff --git a/drivers/net/sfc/sfc_dp_rx.h b/drivers/net/sfc/sfc_dp_rx.h index 2101fd7547..246adbd87c 100644 --- a/drivers/net/sfc/sfc_dp_rx.h +++ b/drivers/net/sfc/sfc_dp_rx.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * - * Copyright(c) 2019-2020 Xilinx, Inc. + * Copyright(c) 2019-2021 Xilinx, Inc. * Copyright(c) 2017-2019 Solarflare Communications Inc. * * This software was jointly developed between OKTET Labs (under contract @@ -11,9 +11,10 @@ #define _SFC_DP_RX_H #include -#include +#include #include "sfc_dp.h" +#include "sfc_nic_dma_dp.h" #ifdef __cplusplus extern "C" { @@ -88,8 +89,16 @@ struct sfc_dp_rx_qcreate_info { * doorbell */ volatile void *mem_bar; + /** Function control window offset */ + efsys_dma_addr_t fcw_offset; /** VI window size shift */ unsigned int vi_window_shift; + + /** Mask to extract user bits from Rx prefix mark field */ + uint32_t user_mark_mask; + + /** NIC's DMA mapping information */ + const struct sfc_nic_dma_info *nic_dma_info; }; /** @@ -149,7 +158,7 @@ typedef int (sfc_dp_rx_qcreate_t)(uint16_t port_id, uint16_t queue_id, struct sfc_dp_rxq **dp_rxqp); /** - * Free resources allocated for datapath recevie queue. + * Free resources allocated for datapath receive queue. */ typedef void (sfc_dp_rx_qdestroy_t)(struct sfc_dp_rxq *dp_rxq); @@ -159,7 +168,8 @@ typedef void (sfc_dp_rx_qdestroy_t)(struct sfc_dp_rxq *dp_rxq); * It handovers EvQ to the datapath. */ typedef int (sfc_dp_rx_qstart_t)(struct sfc_dp_rxq *dp_rxq, - unsigned int evq_read_ptr); + unsigned int evq_read_ptr, + const efx_rx_prefix_layout_t *pinfo); /** * Receive queue stop function called before flush. @@ -181,7 +191,7 @@ typedef bool (sfc_dp_rx_qrx_ps_ev_t)(struct sfc_dp_rxq *dp_rxq, /** * Receive queue purge function called after queue flush. * - * Should be used to free unused recevie buffers. + * Should be used to free unused receive buffers. */ typedef void (sfc_dp_rx_qpurge_t)(struct sfc_dp_rxq *dp_rxq); @@ -201,6 +211,9 @@ typedef int (sfc_dp_rx_intr_enable_t)(struct sfc_dp_rxq *dp_rxq); /** Disable Rx interrupts */ typedef int (sfc_dp_rx_intr_disable_t)(struct sfc_dp_rxq *dp_rxq); +/** Get number of pushed Rx buffers */ +typedef unsigned int (sfc_dp_rx_get_pushed_t)(struct sfc_dp_rxq *dp_rxq); + /** Receive datapath definition */ struct sfc_dp_rx { struct sfc_dp dp; @@ -210,6 +223,7 @@ struct sfc_dp_rx { #define SFC_DP_RX_FEAT_FLOW_FLAG 0x2 #define SFC_DP_RX_FEAT_FLOW_MARK 0x4 #define SFC_DP_RX_FEAT_INTR 0x8 +#define SFC_DP_RX_FEAT_STATS 0x10 /** * Rx offload capabilities supported by the datapath on device * level only if HW/FW supports it. @@ -235,6 +249,7 @@ struct sfc_dp_rx { sfc_dp_rx_qdesc_status_t *qdesc_status; sfc_dp_rx_intr_enable_t *intr_enable; sfc_dp_rx_intr_disable_t *intr_disable; + sfc_dp_rx_get_pushed_t *get_pushed; eth_rx_burst_t pkt_burst; }; @@ -266,6 +281,7 @@ const struct sfc_dp_rx *sfc_dp_rx_by_dp_rxq(const struct sfc_dp_rxq *dp_rxq); extern struct sfc_dp_rx sfc_efx_rx; extern struct sfc_dp_rx sfc_ef10_rx; extern struct sfc_dp_rx sfc_ef10_essb_rx; +extern struct sfc_dp_rx sfc_ef100_rx; #ifdef __cplusplus }