X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Focteontx2%2Fotx2_flow.h;h=30a823c8a75b107fa40b2c55ca25452b192fab68;hb=fad80ab3698e7f7d3e9c2a28c371da6a17fbc477;hp=a27ceeb1a56c231c212bb6b691ff131557d05de7;hpb=520270d5184a9025cf978c4f55307bfe0c3d6e3d;p=dpdk.git diff --git a/drivers/net/octeontx2/otx2_flow.h b/drivers/net/octeontx2/otx2_flow.h index a27ceeb1a5..30a823c8a7 100644 --- a/drivers/net/octeontx2/otx2_flow.h +++ b/drivers/net/octeontx2/otx2_flow.h @@ -29,6 +29,7 @@ enum { #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) @@ -54,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 | \ @@ -89,6 +94,7 @@ struct npc_xtract_info { 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} */ @@ -152,6 +158,7 @@ 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; TAILQ_ENTRY(rte_flow) next; }; @@ -160,6 +167,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 */ @@ -189,6 +197,7 @@ struct otx2_npc_flow_info { uint16_t channel; /*rx channel */ uint16_t flow_prealloc_size; uint16_t flow_max_priority; + uint16_t switch_header_type; }; struct otx2_parse_state { @@ -204,6 +213,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 { @@ -380,6 +390,8 @@ int otx2_flow_parse_lb(struct otx2_parse_state *pst); 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[],