app/testpmd: remove duplicated flow type name table
Flow type table has two instance, one is used for flow type to string conversion, and other is used for string to flow type conversion. And tables are diverged by time. Unifying tables to prevent maintaining two different tables. Note: made 'flowtype_to_str()' and 'str_to_flowtype()' non-static to prevent build error for the case PMDs using it disables. Making the two functions generic, not for some PMDs. Signed-off-by: Ferruh Yigit <ferruh.yigit@xilinx.com> Signed-off-by: Huisong Li <lihuisong@huawei.com>
This commit is contained in:
parent
d7bfa4df99
commit
119786aa6e
@ -170,6 +170,35 @@ static const struct {
|
||||
},
|
||||
};
|
||||
|
||||
static const struct {
|
||||
char str[32];
|
||||
uint16_t ftype;
|
||||
} flowtype_str_table[] = {
|
||||
{"raw", RTE_ETH_FLOW_RAW},
|
||||
{"ipv4", RTE_ETH_FLOW_IPV4},
|
||||
{"ipv4-frag", RTE_ETH_FLOW_FRAG_IPV4},
|
||||
{"ipv4-tcp", RTE_ETH_FLOW_NONFRAG_IPV4_TCP},
|
||||
{"ipv4-udp", RTE_ETH_FLOW_NONFRAG_IPV4_UDP},
|
||||
{"ipv4-sctp", RTE_ETH_FLOW_NONFRAG_IPV4_SCTP},
|
||||
{"ipv4-other", RTE_ETH_FLOW_NONFRAG_IPV4_OTHER},
|
||||
{"ipv6", RTE_ETH_FLOW_IPV6},
|
||||
{"ipv6-frag", RTE_ETH_FLOW_FRAG_IPV6},
|
||||
{"ipv6-tcp", RTE_ETH_FLOW_NONFRAG_IPV6_TCP},
|
||||
{"ipv6-udp", RTE_ETH_FLOW_NONFRAG_IPV6_UDP},
|
||||
{"ipv6-sctp", RTE_ETH_FLOW_NONFRAG_IPV6_SCTP},
|
||||
{"ipv6-other", RTE_ETH_FLOW_NONFRAG_IPV6_OTHER},
|
||||
{"l2_payload", RTE_ETH_FLOW_L2_PAYLOAD},
|
||||
{"ipv6-ex", RTE_ETH_FLOW_IPV6_EX},
|
||||
{"ipv6-tcp-ex", RTE_ETH_FLOW_IPV6_TCP_EX},
|
||||
{"ipv6-udp-ex", RTE_ETH_FLOW_IPV6_UDP_EX},
|
||||
{"port", RTE_ETH_FLOW_PORT},
|
||||
{"vxlan", RTE_ETH_FLOW_VXLAN},
|
||||
{"geneve", RTE_ETH_FLOW_GENEVE},
|
||||
{"nvgre", RTE_ETH_FLOW_NVGRE},
|
||||
{"vxlan-gpe", RTE_ETH_FLOW_VXLAN_GPE},
|
||||
{"gtpu", RTE_ETH_FLOW_GTPU},
|
||||
};
|
||||
|
||||
static void
|
||||
print_ethaddr(const char *name, struct rte_ether_addr *eth_addr)
|
||||
{
|
||||
@ -5665,42 +5694,29 @@ set_record_burst_stats(uint8_t on_off)
|
||||
record_burst_stats = on_off;
|
||||
}
|
||||
|
||||
#if defined(RTE_NET_I40E) || defined(RTE_NET_IXGBE)
|
||||
uint16_t
|
||||
str_to_flowtype(const char *string)
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
static char*
|
||||
for (i = 0; i < RTE_DIM(flowtype_str_table); i++) {
|
||||
if (!strcmp(flowtype_str_table[i].str, string))
|
||||
return flowtype_str_table[i].ftype;
|
||||
}
|
||||
|
||||
if (isdigit(string[0])) {
|
||||
int val = atoi(string);
|
||||
if (val > 0 && val < 64)
|
||||
return (uint16_t)val;
|
||||
}
|
||||
|
||||
return RTE_ETH_FLOW_UNKNOWN;
|
||||
}
|
||||
|
||||
const char*
|
||||
flowtype_to_str(uint16_t flow_type)
|
||||
{
|
||||
struct flow_type_info {
|
||||
char str[32];
|
||||
uint16_t ftype;
|
||||
};
|
||||
|
||||
uint8_t i;
|
||||
static struct flow_type_info flowtype_str_table[] = {
|
||||
{"raw", RTE_ETH_FLOW_RAW},
|
||||
{"ipv4", RTE_ETH_FLOW_IPV4},
|
||||
{"ipv4-frag", RTE_ETH_FLOW_FRAG_IPV4},
|
||||
{"ipv4-tcp", RTE_ETH_FLOW_NONFRAG_IPV4_TCP},
|
||||
{"ipv4-udp", RTE_ETH_FLOW_NONFRAG_IPV4_UDP},
|
||||
{"ipv4-sctp", RTE_ETH_FLOW_NONFRAG_IPV4_SCTP},
|
||||
{"ipv4-other", RTE_ETH_FLOW_NONFRAG_IPV4_OTHER},
|
||||
{"ipv6", RTE_ETH_FLOW_IPV6},
|
||||
{"ipv6-frag", RTE_ETH_FLOW_FRAG_IPV6},
|
||||
{"ipv6-tcp", RTE_ETH_FLOW_NONFRAG_IPV6_TCP},
|
||||
{"ipv6-udp", RTE_ETH_FLOW_NONFRAG_IPV6_UDP},
|
||||
{"ipv6-sctp", RTE_ETH_FLOW_NONFRAG_IPV6_SCTP},
|
||||
{"ipv6-other", RTE_ETH_FLOW_NONFRAG_IPV6_OTHER},
|
||||
{"l2_payload", RTE_ETH_FLOW_L2_PAYLOAD},
|
||||
{"ipv6-ex", RTE_ETH_FLOW_IPV6_EX},
|
||||
{"ipv6-tcp-ex", RTE_ETH_FLOW_IPV6_TCP_EX},
|
||||
{"ipv6-udp-ex", RTE_ETH_FLOW_IPV6_UDP_EX},
|
||||
{"port", RTE_ETH_FLOW_PORT},
|
||||
{"vxlan", RTE_ETH_FLOW_VXLAN},
|
||||
{"geneve", RTE_ETH_FLOW_GENEVE},
|
||||
{"nvgre", RTE_ETH_FLOW_NVGRE},
|
||||
{"vxlan-gpe", RTE_ETH_FLOW_VXLAN_GPE},
|
||||
{"gtpu", RTE_ETH_FLOW_GTPU},
|
||||
};
|
||||
|
||||
for (i = 0; i < RTE_DIM(flowtype_str_table); i++) {
|
||||
if (flowtype_str_table[i].ftype == flow_type)
|
||||
@ -5710,6 +5726,8 @@ flowtype_to_str(uint16_t flow_type)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if defined(RTE_NET_I40E) || defined(RTE_NET_IXGBE)
|
||||
|
||||
static inline void
|
||||
print_fdir_mask(struct rte_eth_fdir_masks *mask)
|
||||
{
|
||||
@ -5774,7 +5792,7 @@ print_fdir_flex_mask(struct rte_eth_fdir_flex_conf *flex_conf, uint32_t num)
|
||||
{
|
||||
struct rte_eth_fdir_flex_mask *mask;
|
||||
uint32_t i, j;
|
||||
char *p;
|
||||
const char *p;
|
||||
|
||||
for (i = 0; i < flex_conf->nb_flexmasks; i++) {
|
||||
mask = &flex_conf->flex_mask[i];
|
||||
@ -5790,7 +5808,7 @@ static inline void
|
||||
print_fdir_flow_type(uint32_t flow_types_mask)
|
||||
{
|
||||
int i;
|
||||
char *p;
|
||||
const char *p;
|
||||
|
||||
for (i = RTE_ETH_FLOW_UNKNOWN; i < RTE_ETH_FLOW_MAX; i++) {
|
||||
if (!(flow_types_mask & (1 << i)))
|
||||
|
@ -1204,6 +1204,9 @@ extern int flow_parse(const char *src, void *result, unsigned int size,
|
||||
uint64_t str_to_rsstypes(const char *str);
|
||||
const char *rsstypes_to_str(uint64_t rss_type);
|
||||
|
||||
uint16_t str_to_flowtype(const char *string);
|
||||
const char *flowtype_to_str(uint16_t flow_type);
|
||||
|
||||
/* For registering driver specific testpmd commands. */
|
||||
struct testpmd_driver_commands {
|
||||
TAILQ_ENTRY(testpmd_driver_commands) next;
|
||||
|
@ -461,45 +461,6 @@ static cmdline_parse_inst_t cmd_show_queue_region_info_all = {
|
||||
},
|
||||
};
|
||||
|
||||
static uint16_t
|
||||
str2flowtype(char *string)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
static const struct {
|
||||
char str[32];
|
||||
uint16_t type;
|
||||
} flowtype_str[] = {
|
||||
{"raw", RTE_ETH_FLOW_RAW},
|
||||
{"ipv4", RTE_ETH_FLOW_IPV4},
|
||||
{"ipv4-frag", RTE_ETH_FLOW_FRAG_IPV4},
|
||||
{"ipv4-tcp", RTE_ETH_FLOW_NONFRAG_IPV4_TCP},
|
||||
{"ipv4-udp", RTE_ETH_FLOW_NONFRAG_IPV4_UDP},
|
||||
{"ipv4-sctp", RTE_ETH_FLOW_NONFRAG_IPV4_SCTP},
|
||||
{"ipv4-other", RTE_ETH_FLOW_NONFRAG_IPV4_OTHER},
|
||||
{"ipv6", RTE_ETH_FLOW_IPV6},
|
||||
{"ipv6-frag", RTE_ETH_FLOW_FRAG_IPV6},
|
||||
{"ipv6-tcp", RTE_ETH_FLOW_NONFRAG_IPV6_TCP},
|
||||
{"ipv6-udp", RTE_ETH_FLOW_NONFRAG_IPV6_UDP},
|
||||
{"ipv6-sctp", RTE_ETH_FLOW_NONFRAG_IPV6_SCTP},
|
||||
{"ipv6-other", RTE_ETH_FLOW_NONFRAG_IPV6_OTHER},
|
||||
{"l2_payload", RTE_ETH_FLOW_L2_PAYLOAD},
|
||||
{"ipv6-ex", RTE_ETH_FLOW_IPV6_EX},
|
||||
{"ipv6-tcp-ex", RTE_ETH_FLOW_IPV6_TCP_EX},
|
||||
{"ipv6-udp-ex", RTE_ETH_FLOW_IPV6_UDP_EX},
|
||||
{"gtpu", RTE_ETH_FLOW_GTPU},
|
||||
};
|
||||
|
||||
for (i = 0; i < RTE_DIM(flowtype_str); i++) {
|
||||
if (!strcmp(flowtype_str[i].str, string))
|
||||
return flowtype_str[i].type;
|
||||
}
|
||||
|
||||
if (isdigit(string[0]) && atoi(string) > 0 && atoi(string) < 64)
|
||||
return (uint16_t)atoi(string);
|
||||
|
||||
return RTE_ETH_FLOW_UNKNOWN;
|
||||
}
|
||||
|
||||
/* *** deal with flow director filter *** */
|
||||
struct cmd_flow_director_result {
|
||||
cmdline_fixed_string_t flow_director_filter;
|
||||
@ -527,7 +488,7 @@ cmd_flow_director_filter_parsed(void *parsed_result,
|
||||
struct rte_pmd_i40e_flow_type_mapping
|
||||
mapping[RTE_PMD_I40E_FLOW_TYPE_MAX];
|
||||
struct rte_pmd_i40e_pkt_template_conf conf;
|
||||
uint16_t flow_type = str2flowtype(res->flow_type);
|
||||
uint16_t flow_type = str_to_flowtype(res->flow_type);
|
||||
uint16_t i, port = res->port_id;
|
||||
uint8_t add;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user