/* SPDX-License-Identifier: BSD-3-Clause
*
- * Copyright(c) 2019-2020 Xilinx, Inc.
+ * Copyright(c) 2019-2021 Xilinx, Inc.
* Copyright(c) 2016-2019 Solarflare Communications Inc.
*
* This software was jointly developed between OKTET Labs (under contract
#include <rte_pci.h>
#include <rte_bus_pci.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_kvargs.h>
#include <rte_spinlock.h>
#include <rte_atomic.h>
#include "efx.h"
#include "sfc_efx_mcdi.h"
+#include "sfc_efx.h"
#include "sfc_debug.h"
#include "sfc_log.h"
#include "sfc_filter.h"
#include "sfc_sriov.h"
#include "sfc_mae.h"
+#include "sfc_dp.h"
#ifdef __cplusplus
extern "C" {
unsigned int nb_mcast_addrs;
uint8_t *mcast_addrs;
- rte_spinlock_t mac_stats_lock;
uint64_t *mac_stats_buf;
unsigned int mac_stats_nb_supported;
efsys_mem_t mac_stats_dma_mem;
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;
char *dp_rx_name;
char *dp_tx_name;
+
+ bool counters_rxq_allocated;
};
/* Adapter process private data */
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;
+};
+
/* Adapter private data */
struct sfc_adapter {
/*
bool mgmt_evq_running;
struct sfc_evq *mgmt_evq;
+ struct sfc_counter_rxq counter_rxq;
+
struct sfc_rxq *rxq_ctrl;
struct sfc_txq *txq_ctrl;
/* Just for symmetry of the API */
}
+static inline unsigned int
+sfc_nb_counter_rxq(const struct sfc_adapter_shared *sas)
+{
+ return sas->counters_rxq_allocated ? 1 : 0;
+}
+
/** Get the number of milliseconds since boot from the default timer */
static inline uint64_t
sfc_get_system_msecs(void)