X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fice%2Fice_generic_flow.h;h=ede6ec8242a9b7e15e62d8a00c2a7c1c569472d8;hb=ec8ddd4fb1be01eefa0a8b5a234a7aff3e101a8d;hp=b6e4ed0e175e6979f8eb806a263a6dbba6bdd171;hpb=3e4eab9c21926613797d822dccd63cde32bc7122;p=dpdk.git diff --git a/drivers/net/ice/ice_generic_flow.h b/drivers/net/ice/ice_generic_flow.h index b6e4ed0e17..ede6ec8242 100644 --- a/drivers/net/ice/ice_generic_flow.h +++ b/drivers/net/ice/ice_generic_flow.h @@ -336,10 +336,13 @@ extern enum rte_flow_item_type pattern_eth_ipv6_nvgre_eth_ipv6_sctp[]; extern enum rte_flow_item_type pattern_eth_ipv6_nvgre_eth_ipv6_icmp6[]; /* GTPU */ +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu[]; extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4[]; -extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4_udp[]; -extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4_tcp[]; -extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4_icmp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_udp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_tcp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_icmp[]; /* PPPoE */ extern enum rte_flow_item_type pattern_eth_pppoed[]; @@ -414,6 +417,20 @@ struct ice_pattern_match_item { void *meta; }; +enum ice_flow_redirect_type { + ICE_FLOW_REDIRECT_VSI, +}; + +struct ice_flow_redirect { + enum ice_flow_redirect_type type; + union { + struct { + uint16_t vsi_handle; + uint16_t new_vsi_num; + }; + }; +}; + typedef int (*engine_init_t)(struct ice_adapter *ad); typedef void (*engine_uninit_t)(struct ice_adapter *ad); typedef int (*engine_create_t)(struct ice_adapter *ad, @@ -427,6 +444,9 @@ typedef int (*engine_query_t)(struct ice_adapter *ad, struct rte_flow *flow, struct rte_flow_query_count *count, struct rte_flow_error *error); +typedef int(*engine_redirect_t)(struct ice_adapter *ad, + struct rte_flow *flow, + struct ice_flow_redirect *redirect); typedef void (*engine_free_t) (struct rte_flow *flow); typedef int (*parse_pattern_action_t)(struct ice_adapter *ad, struct ice_pattern_match_item *array, @@ -444,6 +464,7 @@ struct ice_flow_engine { engine_create_t create; engine_destroy_t destroy; engine_query_t query_count; + engine_redirect_t redirect; engine_free_t free; enum ice_flow_engine_type type; }; @@ -482,4 +503,7 @@ ice_search_pattern_match_item(const struct rte_flow_item pattern[], struct ice_pattern_match_item *array, uint32_t array_len, struct rte_flow_error *error); +int +ice_flow_redirect(struct ice_adapter *ad, + struct ice_flow_redirect *rd); #endif