app/testpmd: add fdir ipv6 support
Signed-off-by: Intel
This commit is contained in:
parent
a47aa8b97a
commit
d59b178f12
@ -219,6 +219,10 @@ static void cmd_help_parsed(__attribute__((unused)) void *parsed_result,
|
||||
"- set_masks_filter port_id only_ip_flow 0|1 src_mask\n"
|
||||
" ip_src_mask port_src_mask dst_mask ip_dst_mask\n"
|
||||
" port_dst_mask flexbytes 0|1 vlan_id 0|1 vlan_prio 0|1\n"
|
||||
"- set_ipv6_masks_filter port_id only_ip_flow 0|1 src_mask\n"
|
||||
" ip_src_mask port_src_mask dst_mask ip_dst_mask\n"
|
||||
" port_dst_mask flexbytes 0|1 vlan_id 0|1\n"
|
||||
" vlan_prio 0|1 compare_dst 0|1\n"
|
||||
"\n");
|
||||
cmdline_printf(cl,
|
||||
"Misc:\n"
|
||||
@ -1414,9 +1418,11 @@ struct cmd_pkt_filter_masks_result {
|
||||
uint8_t port_id;
|
||||
cmdline_fixed_string_t src_mask;
|
||||
uint32_t ip_src_mask;
|
||||
uint16_t ipv6_src_mask;
|
||||
uint16_t port_src_mask;
|
||||
cmdline_fixed_string_t dst_mask;
|
||||
uint32_t ip_dst_mask;
|
||||
uint16_t ipv6_dst_mask;
|
||||
uint16_t port_dst_mask;
|
||||
cmdline_fixed_string_t flexbytes;
|
||||
uint8_t flexbytes_value;
|
||||
@ -1426,6 +1432,8 @@ struct cmd_pkt_filter_masks_result {
|
||||
uint8_t vlan_prio_value;
|
||||
cmdline_fixed_string_t only_ip_flow;
|
||||
uint8_t only_ip_flow_value;
|
||||
cmdline_fixed_string_t comp_ipv6_dst;
|
||||
uint8_t comp_ipv6_dst_value;
|
||||
};
|
||||
|
||||
static void
|
||||
@ -1524,6 +1532,74 @@ cmdline_parse_inst_t cmd_set_masks_filter = {
|
||||
},
|
||||
};
|
||||
|
||||
static void
|
||||
cmd_pkt_filter_masks_ipv6_parsed(void *parsed_result,
|
||||
__attribute__((unused)) struct cmdline *cl,
|
||||
__attribute__((unused)) void *data)
|
||||
{
|
||||
struct rte_fdir_masks fdir_masks;
|
||||
struct cmd_pkt_filter_masks_result *res = parsed_result;
|
||||
|
||||
memset(&fdir_masks, 0, sizeof(struct rte_fdir_masks));
|
||||
|
||||
fdir_masks.set_ipv6_mask = 1;
|
||||
fdir_masks.only_ip_flow = res->only_ip_flow_value;
|
||||
fdir_masks.vlan_id = res->vlan_id_value;
|
||||
fdir_masks.vlan_prio = res->vlan_prio_value;
|
||||
fdir_masks.dst_ipv6_mask = res->ipv6_dst_mask;
|
||||
fdir_masks.src_ipv6_mask = res->ipv6_src_mask;
|
||||
fdir_masks.src_port_mask = res->port_src_mask;
|
||||
fdir_masks.dst_port_mask = res->port_dst_mask;
|
||||
fdir_masks.flexbytes = res->flexbytes_value;
|
||||
fdir_masks.comp_ipv6_dst = res->comp_ipv6_dst_value;
|
||||
|
||||
fdir_set_masks(res->port_id, &fdir_masks);
|
||||
}
|
||||
|
||||
cmdline_parse_token_string_t cmd_pkt_filter_masks_filter_mask_ipv6 =
|
||||
TOKEN_STRING_INITIALIZER(struct cmd_pkt_filter_masks_result,
|
||||
filter_mask, "set_ipv6_masks_filter");
|
||||
cmdline_parse_token_num_t cmd_pkt_filter_masks_src_mask_ipv6_value =
|
||||
TOKEN_NUM_INITIALIZER(struct cmd_pkt_filter_masks_result,
|
||||
ipv6_src_mask, UINT16);
|
||||
cmdline_parse_token_num_t cmd_pkt_filter_masks_dst_mask_ipv6_value =
|
||||
TOKEN_NUM_INITIALIZER(struct cmd_pkt_filter_masks_result,
|
||||
ipv6_dst_mask, UINT16);
|
||||
|
||||
cmdline_parse_token_string_t cmd_pkt_filter_masks_comp_ipv6_dst =
|
||||
TOKEN_STRING_INITIALIZER(struct cmd_pkt_filter_masks_result,
|
||||
comp_ipv6_dst, "compare_dst");
|
||||
cmdline_parse_token_num_t cmd_pkt_filter_masks_comp_ipv6_dst_value =
|
||||
TOKEN_NUM_INITIALIZER(struct cmd_pkt_filter_masks_result,
|
||||
comp_ipv6_dst_value, UINT8);
|
||||
|
||||
cmdline_parse_inst_t cmd_set_ipv6_masks_filter = {
|
||||
.f = cmd_pkt_filter_masks_ipv6_parsed,
|
||||
.data = NULL,
|
||||
.help_str = "setup ipv6 masks filter",
|
||||
.tokens = {
|
||||
(void *)&cmd_pkt_filter_masks_filter_mask_ipv6,
|
||||
(void *)&cmd_pkt_filter_masks_port_id,
|
||||
(void *)&cmd_pkt_filter_masks_only_ip_flow,
|
||||
(void *)&cmd_pkt_filter_masks_only_ip_flow_value,
|
||||
(void *)&cmd_pkt_filter_masks_src_mask,
|
||||
(void *)&cmd_pkt_filter_masks_src_mask_ipv6_value,
|
||||
(void *)&cmd_pkt_filter_masks_port_src_mask,
|
||||
(void *)&cmd_pkt_filter_masks_dst_mask,
|
||||
(void *)&cmd_pkt_filter_masks_dst_mask_ipv6_value,
|
||||
(void *)&cmd_pkt_filter_masks_port_dst_mask,
|
||||
(void *)&cmd_pkt_filter_masks_flexbytes,
|
||||
(void *)&cmd_pkt_filter_masks_flexbytes_value,
|
||||
(void *)&cmd_pkt_filter_masks_vlan_id,
|
||||
(void *)&cmd_pkt_filter_masks_vlan_id_value,
|
||||
(void *)&cmd_pkt_filter_masks_vlan_prio,
|
||||
(void *)&cmd_pkt_filter_masks_vlan_prio_value,
|
||||
(void *)&cmd_pkt_filter_masks_comp_ipv6_dst,
|
||||
(void *)&cmd_pkt_filter_masks_comp_ipv6_dst_value,
|
||||
NULL,
|
||||
},
|
||||
};
|
||||
|
||||
/* *** SETUP ETHERNET LINK FLOW CONTROL *** */
|
||||
struct cmd_link_flow_ctrl_set_result {
|
||||
cmdline_fixed_string_t set;
|
||||
@ -2375,6 +2451,7 @@ cmdline_parse_ctx_t main_ctx[] = {
|
||||
(cmdline_parse_inst_t *)&cmd_upd_perfect_filter,
|
||||
(cmdline_parse_inst_t *)&cmd_rm_perfect_filter,
|
||||
(cmdline_parse_inst_t *)&cmd_set_masks_filter,
|
||||
(cmdline_parse_inst_t *)&cmd_set_ipv6_masks_filter,
|
||||
(cmdline_parse_inst_t *)&cmd_stop,
|
||||
(cmdline_parse_inst_t *)&cmd_mac_addr,
|
||||
(cmdline_parse_inst_t *)&cmd_set_qmap,
|
||||
|
Loading…
Reference in New Issue
Block a user