/* Special Filter id for non-specific packet flagging. Don't change value */
#define ENIC_MAGIC_FILTER_ID 0xffff
-#define ENICPMD_FDIR_MAX 64
-
/*
* Interrupt 0: LSC and errors
* Interrupt 1: rx queue 0
#define ENICPMD_LSC_INTR_OFFSET 0
#define ENICPMD_RXQ_INTR_OFFSET 1
-struct enic_fdir_node {
- struct rte_eth_fdir_filter filter;
- uint16_t fltr_id;
- uint16_t rq_index;
-};
-
-struct enic_fdir {
- struct rte_eth_fdir_stats stats;
- struct rte_hash *hash;
- struct enic_fdir_node *nodes[ENICPMD_FDIR_MAX];
- uint32_t modes;
- uint32_t types_mask;
- void (*copy_fltr_fn)(struct filter_v2 *filt,
- const struct rte_eth_fdir_input *input,
- const struct rte_eth_fdir_masks *masks);
-};
-
struct enic_soft_stats {
rte_atomic64_t rx_nombuf;
rte_atomic64_t rx_packet_errors;
/* Per-instance private data structure */
struct enic {
- struct enic *next;
struct rte_pci_device *pdev;
struct vnic_enet_config config;
struct vnic_dev_bar bar0;
bool overlay_offload;
struct rte_eth_dev *rte_dev;
struct rte_eth_dev_data *dev_data;
- struct enic_fdir fdir;
char bdf_name[ENICPMD_BDF_LENGTH];
int dev_fd;
int iommu_group_fd;
static inline unsigned int enic_cq_rq(__rte_unused struct enic *enic, unsigned int rq)
{
- /* Scatter rx uses two receive queues together with one
- * completion queue, so the completion queue number is no
- * longer the same as the rq number.
- */
return rq;
}
}
int dev_is_enic(struct rte_eth_dev *dev);
-void enic_fdir_stats_get(struct enic *enic,
- struct rte_eth_fdir_stats *stats);
-int enic_fdir_add_fltr(struct enic *enic,
- struct rte_eth_fdir_filter *params);
-int enic_fdir_del_fltr(struct enic *enic,
- struct rte_eth_fdir_filter *params);
void enic_free_wq(void *txq);
int enic_alloc_intr_resources(struct enic *enic);
int enic_setup_finish(struct enic *enic);
void enic_post_wq_index(struct vnic_wq *wq);
int enic_probe(struct enic *enic);
-int enic_clsf_init(struct enic *enic);
-void enic_clsf_destroy(struct enic *enic);
int enic_fm_init(struct enic *enic);
void enic_fm_destroy(struct enic *enic);
void *enic_alloc_consistent(void *priv, size_t size, dma_addr_t *dma_handle,
bool enic_use_vector_rx_handler(struct rte_eth_dev *eth_dev);
void enic_pick_rx_handler(struct rte_eth_dev *eth_dev);
void enic_pick_tx_handler(struct rte_eth_dev *eth_dev);
-void enic_fdir_info(struct enic *enic);
-void enic_fdir_info_get(struct enic *enic, struct rte_eth_fdir_info *stats);
int enic_vf_representor_init(struct rte_eth_dev *eth_dev, void *init_params);
int enic_vf_representor_uninit(struct rte_eth_dev *ethdev);
int enic_fm_allocate_switch_domain(struct enic *pf);