#define NPC_IH_LENGTH 8
#define NPC_TPID_LENGTH 2
+#define NPC_HIGIG2_LENGTH 16
#define NPC_COUNTER_NONE (-1)
/* 32 bytes from LDATA_CFG & 32 bytes from FLAGS_CFG */
#define NPC_MAX_EXTRACT_DATA_LEN (64)
#define OTX2_FLOW_ACT_DUP (1 << 5)
#define OTX2_FLOW_ACT_SEC (1 << 6)
#define OTX2_FLOW_ACT_COUNT (1 << 7)
+#define OTX2_FLOW_ACT_PF (1 << 8)
+#define OTX2_FLOW_ACT_VF (1 << 9)
+#define OTX2_FLOW_ACT_VLAN_STRIP (1 << 10)
+#define OTX2_FLOW_ACT_VLAN_INSERT (1 << 11)
+#define OTX2_FLOW_ACT_VLAN_ETHTYPE_INSERT (1 << 12)
+#define OTX2_FLOW_ACT_VLAN_PCP_INSERT (1 << 13)
/* terminating actions */
#define OTX2_FLOW_ACT_TERM (OTX2_FLOW_ACT_DROP | \
uint8_t hdr_off; /* Byte offset of proto hdr: extract_src */
uint8_t key_off; /* Byte offset in MCAM key where data is placed */
uint8_t enable; /* Extraction enabled or disabled */
+ uint8_t flags_enable; /* Flags extraction enabled */
};
/* Information for a given {LAYER, LTYPE} */
uint64_t mcam_data[OTX2_MAX_MCAM_WIDTH_DWORDS];
uint64_t mcam_mask[OTX2_MAX_MCAM_WIDTH_DWORDS];
uint64_t npc_action;
+ uint64_t vtag_action;
TAILQ_ENTRY(rte_flow) next;
};
/* Accessed from ethdev private - otx2_eth_dev */
struct otx2_npc_flow_info {
rte_atomic32_t mark_actions;
+ uint32_t vtag_actions;
uint32_t keyx_supp_nmask[NPC_MAX_INTF];/* nibble mask */
uint32_t keyx_len[NPC_MAX_INTF]; /* per intf key len in bits */
uint32_t datax_len[NPC_MAX_INTF]; /* per intf data len in bits */
uint16_t channel; /*rx channel */
uint16_t flow_prealloc_size;
uint16_t flow_max_priority;
+ uint16_t switch_header_type;
};
struct otx2_parse_state {
uint8_t flags[NPC_MAX_LID];
uint8_t *mcam_data; /* point to flow->mcam_data + key_len */
uint8_t *mcam_mask; /* point to flow->mcam_mask + key_len */
+ bool is_vf;
};
struct otx2_flow_item_info {
int otx2_flow_parse_la(struct otx2_parse_state *pst);
+int otx2_flow_parse_higig2_hdr(struct otx2_parse_state *pst);
+
int otx2_flow_parse_actions(struct rte_eth_dev *dev,
const struct rte_flow_attr *attr,
const struct rte_flow_action actions[],
int otx2_flow_free_all_resources(struct otx2_eth_dev *hw);
int otx2_flow_parse_mpls(struct otx2_parse_state *pst, int lid);
-
-int
-flow_validate_and_shift_prio_ent(struct otx2_mbox *mbox, struct rte_flow *flow,
- struct otx2_npc_flow_info *flow_info,
- struct npc_mcam_alloc_entry_rsp *rsp,
- int req_prio);
#endif /* __OTX2_FLOW_H__ */