X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Focteontx2%2Fotx2_flow.h;h=790e6ef1e8b0b50605cf73be553fd7c1066d7d62;hb=768d1e44dfa50a5c26d04e362d46773dde5932be;hp=df78f41d3bd264f545b832247a95ae7ee4364ee3;hpb=602009ee2dfb57e561cde8aebc1b9a70dad86877;p=dpdk.git diff --git a/drivers/net/octeontx2/otx2_flow.h b/drivers/net/octeontx2/otx2_flow.h index df78f41d3b..790e6ef1e8 100644 --- a/drivers/net/octeontx2/otx2_flow.h +++ b/drivers/net/octeontx2/otx2_flow.h @@ -30,11 +30,11 @@ enum { #define NPC_IH_LENGTH 8 #define NPC_TPID_LENGTH 2 #define NPC_HIGIG2_LENGTH 16 +#define NPC_MAX_RAW_ITEM_LEN 16 #define NPC_COUNTER_NONE (-1) /* 32 bytes from LDATA_CFG & 32 bytes from FLAGS_CFG */ #define NPC_MAX_EXTRACT_DATA_LEN (64) #define NPC_LDATA_LFLAG_LEN (16) -#define NPC_MCAM_TOT_ENTRIES (4096) #define NPC_MAX_KEY_NIBBLES (31) /* Nibble offsets */ #define NPC_LAYER_KEYX_SZ (3) @@ -55,6 +55,10 @@ enum { #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 | \ @@ -145,6 +149,11 @@ struct otx2_mcam_ents_info { uint32_t live_ent; }; +struct otx2_flow_dump_data { + uint8_t lid; + uint16_t ltype; +}; + struct rte_flow { uint8_t nix_intf; uint32_t mcam_id; @@ -154,6 +163,9 @@ struct rte_flow { 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; + struct otx2_flow_dump_data dump_data[32]; + uint16_t num_patterns; TAILQ_ENTRY(rte_flow) next; }; @@ -162,6 +174,7 @@ TAILQ_HEAD(otx2_flow_list, rte_flow); /* 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 */ @@ -207,6 +220,7 @@ 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 { @@ -394,4 +408,7 @@ int otx2_flow_parse_actions(struct rte_eth_dev *dev, int otx2_flow_free_all_resources(struct otx2_eth_dev *hw); int otx2_flow_parse_mpls(struct otx2_parse_state *pst, int lid); + +void otx2_flow_dump(FILE *file, struct otx2_eth_dev *hw, + struct rte_flow *flow); #endif /* __OTX2_FLOW_H__ */