+
+ unsigned int mac_stats_by_id[EFX_MAC_NSTATS];
+
+ uint64_t ipackets;
+};
+
+struct sfc_rss_hf_rte_to_efx {
+ uint64_t rte;
+ efx_rx_hash_type_t efx;
+};
+
+struct sfc_rss {
+ unsigned int channels;
+ efx_rx_scale_context_type_t context_type;
+ efx_rx_hash_support_t hash_support;
+ efx_rx_hash_alg_t hash_alg;
+ unsigned int hf_map_nb_entries;
+ struct sfc_rss_hf_rte_to_efx *hf_map;
+
+ efx_rx_hash_type_t hash_types;
+ unsigned int tbl[EFX_RSS_TBL_SIZE];
+ uint8_t key[EFX_RSS_KEY_SIZE];
+
+ uint32_t dummy_rss_context;
+};
+
+/* Adapter private data shared by primary and secondary processes */
+struct sfc_adapter_shared {
+ unsigned int rxq_count;
+ struct sfc_rxq_info *rxq_info;
+ unsigned int ethdev_rxq_count;
+
+ unsigned int txq_count;
+ struct sfc_txq_info *txq_info;
+ unsigned int ethdev_txq_count;
+
+ struct sfc_rss rss;
+
+ boolean_t isolated;
+ uint32_t tunnel_encaps;
+
+ char log_prefix[SFC_LOG_PREFIX_MAX];
+ struct rte_pci_addr pci_addr;
+ uint16_t port_id;
+
+ char *dp_rx_name;
+ char *dp_tx_name;
+
+ bool counters_rxq_allocated;
+};
+
+/* Adapter process private data */
+struct sfc_adapter_priv {
+ struct sfc_adapter_shared *shared;
+ const struct sfc_dp_rx *dp_rx;
+ const struct sfc_dp_tx *dp_tx;
+ uint32_t logtype_main;
+};
+
+static inline struct sfc_adapter_priv *
+sfc_adapter_priv_by_eth_dev(struct rte_eth_dev *eth_dev)
+{
+ struct sfc_adapter_priv *sap = eth_dev->process_private;
+
+ SFC_ASSERT(sap != NULL);
+ return sap;
+}
+
+/* RxQ dedicated for counters (counter only RxQ) data */
+struct sfc_counter_rxq {
+ unsigned int state;
+#define SFC_COUNTER_RXQ_ATTACHED 0x1
+#define SFC_COUNTER_RXQ_INITIALIZED 0x2
+ sfc_sw_index_t sw_index;
+ struct rte_mempool *mp;
+};
+
+struct sfc_sw_xstats {
+ uint64_t *reset_vals;
+
+ rte_spinlock_t queues_bitmap_lock;
+ void *queues_bitmap_mem;
+ struct rte_bitmap *queues_bitmap;