+ struct bnxt_dmabuf_info dmabuf;
+ struct bnxt_ulp_context *ulp_ctx;
+ struct bnxt_flow_stat_info *flow_stat;
+ uint8_t flow_xstat;
+ uint16_t max_num_kflows;
+ uint16_t tx_cfa_action;
+};
+
+#define BNXT_FC_TIMER 1 /* Timer freq in Sec Flow Counters */
+
+/**
+ * Structure to store private data for each VF representor instance
+ */
+struct bnxt_representor {
+ uint16_t switch_domain_id;
+ uint16_t vf_id;
+#define BNXT_REP_IS_PF BIT(0)
+#define BNXT_REP_Q_R2F_VALID BIT(1)
+#define BNXT_REP_Q_F2R_VALID BIT(2)
+#define BNXT_REP_FC_R2F_VALID BIT(3)
+#define BNXT_REP_FC_F2R_VALID BIT(4)
+ uint32_t flags;
+ uint16_t fw_fid;
+#define BNXT_DFLT_VNIC_ID_INVALID 0xFFFF
+ uint16_t dflt_vnic_id;
+ uint16_t svif;
+ uint16_t vfr_tx_cfa_action;
+ uint32_t dpdk_port_id;
+ uint32_t rep_based_pf;
+ uint8_t rep_q_r2f;
+ uint8_t rep_q_f2r;
+ uint8_t rep_fc_r2f;
+ uint8_t rep_fc_f2r;
+ /* Private data store of associated PF/Trusted VF */
+ struct rte_eth_dev *parent_dev;
+ uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
+ uint8_t dflt_mac_addr[RTE_ETHER_ADDR_LEN];
+ struct bnxt_rx_queue **rx_queues;
+ unsigned int rx_nr_rings;
+ unsigned int tx_nr_rings;
+ uint64_t tx_pkts[BNXT_MAX_VF_REP_RINGS];
+ uint64_t tx_bytes[BNXT_MAX_VF_REP_RINGS];
+ uint64_t rx_pkts[BNXT_MAX_VF_REP_RINGS];
+ uint64_t rx_bytes[BNXT_MAX_VF_REP_RINGS];
+ uint64_t rx_drop_pkts[BNXT_MAX_VF_REP_RINGS];
+ uint64_t rx_drop_bytes[BNXT_MAX_VF_REP_RINGS];
+};
+
+#define BNXT_REP_PF(vfr_bp) ((vfr_bp)->flags & BNXT_REP_IS_PF)
+
+struct bnxt_vf_rep_tx_queue {
+ struct bnxt_tx_queue *txq;
+ struct bnxt_representor *bp;