Re: [dpdk-dev] [PATCH v2 5/5] app/testpmd: support query RSS config in flow query
From: Yang, Qiming <hidden>
Date: 2020-06-30 10:40:43
quoted hunk ↗ jump to hunk
-----Original Message----- From: Di, ChenxuX <redacted> Sent: Monday, June 15, 2020 10:19 To: dev@dpdk.org Cc: Xing, Beilei <redacted>; Yang, Qiming [off-list ref]; Di, ChenxuX [off-list ref] Subject: [PATCH v2 5/5] app/testpmd: support query RSS config in flow query This patch support RSS action in flow query. It can display the RSS configuration of the specified rule. Signed-off-by: Chenxu Di <redacted> --- app/test-pmd/config.c | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+)diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c indexf519246c7..7e3cccf9a 100644--- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c@@ -1378,6 +1378,56 @@ port_flow_complain(struct rte_flow_error *error) return -err; } +static void +rss_config_display(struct rte_flow_action_rss *rss_conf) { + uint8_t i; + + if (rss_conf == NULL) { + printf("Invalid rule\n"); + return; + } + + printf("RSS:\n" + " queues:");
Two lines needed? And why don't you add the space in the end of this printf?
+ if (rss_conf->queue_num == 0)
If(!rss_conf->queue_num)
+ printf(" none");
+ for (i = 0; i < rss_conf->queue_num; i++)
+ printf(" %d", rss_conf->queue[i]);
+
+ printf("\n function:");
+ switch (rss_conf->func) {
+ case RTE_ETH_HASH_FUNCTION_DEFAULT:
+ printf(" default\n");No needed space
+ break;
+ case RTE_ETH_HASH_FUNCTION_TOEPLITZ:
+ printf(" toeplitz\n");Same
+ break;
+ case RTE_ETH_HASH_FUNCTION_SIMPLE_XOR:
+ printf(" simple_xor\n");...
+ break;
+ case RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ:
+ printf(" symmetric_toeplitz\n");..
+ break;
+ default:
+ printf(" Unknown function\n");...
+ return;
+ }
+
+ printf(" types:\n");Same...
+ if (rss_conf->types == 0) {
+ printf(" none\n");Same...
+ return;
+ }
+ for (i = 0; rss_type_table[i].str; i++) {
+ if ((rss_conf->types &
+ rss_type_table[i].rss_type) ==
+ rss_type_table[i].rss_type &&
+ rss_type_table[i].rss_type != 0)
+ printf(" %s\n", rss_type_table[i].str);All the same..
quoted hunk ↗ jump to hunk
+ } +} + /** Validate flow rule. */ int port_flow_validate(portid_t port_id,@@ -1564,6 +1614,7 @@ port_flow_query(portid_t port_id, uint32_t rule, const char *name; union { struct rte_flow_query_count count; + struct rte_flow_action_rss rss_conf; } query; int ret;@@ -1585,6 +1636,7 @@ port_flow_query(portid_t port_id, uint32_t rule, return port_flow_complain(&error); switch (action->type) { case RTE_FLOW_ACTION_TYPE_COUNT: + case RTE_FLOW_ACTION_TYPE_RSS: break; default: printf("Cannot query action type %d (%s)\n", @@ -1609,6 +1661,9 @@ port_flow_query(portid_t port_id, uint32_t rule, query.count.hits, query.count.bytes); break; + case RTE_FLOW_ACTION_TYPE_RSS: + rss_config_display(&query.rss_conf); + break; default: printf("Cannot display result for action type %d (%s)\n", action->type, name); --2.17.1