1 Star 0 Fork 75

sky/dpdk

forked from src-openEuler/dpdk 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0108-app-test-fix-bonding-RSS-test-when-disable-RSS.patch 4.37 KB
一键复制 编辑 原始数据 按行查看 历史
liudongdong3 提交于 2022-06-16 16:03 . sync patches from 22.07
From 36c97bb881ddd7caaf8d9e3885a747880024c3fd Mon Sep 17 00:00:00 2001
From: Huisong Li <lihuisong@huawei.com>
Date: Wed, 8 Jun 2022 19:45:48 +0800
Subject: [PATCH 108/122] app/test: fix bonding RSS test when disable RSS
The "test_rss_lazy" test is used for testing bonding RSS functions
when bonded port disable RSS. Currently, this test case can update
RSS functions of bonded and slave port if bonded port turns off RSS.
It is unreasonable and has been adjusted to be non-updateable in
following patch:
"93e1ea6dfa99 ethdev: fix RSS update when RSS is disabled"
So this patch fixes this test code.
Fixes: 43b630244e7e ("app/test: add dynamic bonding RSS configuration")
Cc: stable@dpdk.org
Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
---
app/test/test_link_bonding_rssconf.c | 78 ++++++++++++++++++++++++++--
1 file changed, 73 insertions(+), 5 deletions(-)
diff --git a/app/test/test_link_bonding_rssconf.c b/app/test/test_link_bonding_rssconf.c
index f9eae93973..a5aba6b2b9 100644
--- a/app/test/test_link_bonding_rssconf.c
+++ b/app/test/test_link_bonding_rssconf.c
@@ -464,15 +464,85 @@ test_rss(void)
TEST_ASSERT_SUCCESS(test_propagate(), "Propagation test failed");
- TEST_ASSERT(slave_remove_and_add() == 1, "New slave should be synced");
+ TEST_ASSERT(slave_remove_and_add() == 1, "remove and add slaves success.");
remove_slaves_and_stop_bonded_device();
return TEST_SUCCESS;
}
+
+/**
+ * Test RSS configuration over bonded and slaves.
+ */
+static int
+test_rss_config_lazy(void)
+{
+ struct rte_eth_rss_conf bond_rss_conf = {0};
+ struct slave_conf *port;
+ uint8_t rss_key[40];
+ uint64_t rss_hf;
+ int retval;
+ uint16_t i;
+ uint8_t n;
+
+ retval = rte_eth_dev_info_get(test_params.bond_port_id,
+ &test_params.bond_dev_info);
+ TEST_ASSERT((retval == 0), "Error during getting device (port %u) info: %s\n",
+ test_params.bond_port_id, strerror(-retval));
+
+ rss_hf = test_params.bond_dev_info.flow_type_rss_offloads;
+ if (rss_hf != 0) {
+ bond_rss_conf.rss_key = NULL;
+ bond_rss_conf.rss_hf = rss_hf;
+ retval = rte_eth_dev_rss_hash_update(test_params.bond_port_id,
+ &bond_rss_conf);
+ TEST_ASSERT(retval != 0, "Succeeded in setting bonded port hash function");
+ }
+
+ /* Set all keys to zero for all slaves */
+ FOR_EACH_PORT(n, port) {
+ port = &test_params.slave_ports[n];
+ retval = rte_eth_dev_rss_hash_conf_get(port->port_id,
+ &port->rss_conf);
+ TEST_ASSERT_SUCCESS(retval, "Cannot get slaves RSS configuration");
+ memset(port->rss_key, 0, sizeof(port->rss_key));
+ port->rss_conf.rss_key = port->rss_key;
+ port->rss_conf.rss_key_len = sizeof(port->rss_key);
+ retval = rte_eth_dev_rss_hash_update(port->port_id,
+ &port->rss_conf);
+ TEST_ASSERT(retval != 0, "Succeeded in setting slaves RSS keys");
+ }
+
+ /* Set RSS keys for bonded port */
+ memset(rss_key, 1, sizeof(rss_key));
+ bond_rss_conf.rss_hf = rss_hf;
+ bond_rss_conf.rss_key = rss_key;
+ bond_rss_conf.rss_key_len = sizeof(rss_key);
+
+ retval = rte_eth_dev_rss_hash_update(test_params.bond_port_id,
+ &bond_rss_conf);
+ TEST_ASSERT(retval != 0, "Succeeded in setting bonded port RSS keys");
+
+ /* Test RETA propagation */
+ for (i = 0; i < RXTX_QUEUE_COUNT; i++) {
+ FOR_EACH_PORT(n, port) {
+ port = &test_params.slave_ports[n];
+ retval = reta_set(port->port_id, (i + 1) % RXTX_QUEUE_COUNT,
+ port->dev_info.reta_size);
+ TEST_ASSERT(retval != 0, "Succeeded in setting slaves RETA");
+ }
+
+ retval = reta_set(test_params.bond_port_id, i % RXTX_QUEUE_COUNT,
+ test_params.bond_dev_info.reta_size);
+ TEST_ASSERT(retval != 0, "Succeeded in setting bonded port RETA");
+ }
+
+ return TEST_SUCCESS;
+}
+
/**
- * Test propagation logic, when RX_RSS mq_mode is turned off for bonding port
+ * Test RSS function logic, when RX_RSS mq_mode is turned off for bonding port
*/
static int
test_rss_lazy(void)
@@ -493,9 +563,7 @@ test_rss_lazy(void)
TEST_ASSERT_SUCCESS(rte_eth_dev_start(test_params.bond_port_id),
"Failed to start bonding port (%d).", test_params.bond_port_id);
- TEST_ASSERT_SUCCESS(test_propagate(), "Propagation test failed");
-
- TEST_ASSERT(slave_remove_and_add() == 0, "New slave shouldn't be synced");
+ TEST_ASSERT_SUCCESS(test_rss_config_lazy(), "Succeeded in setting RSS hash when RX_RSS mq_mode is turned off");
remove_slaves_and_stop_bonded_device();
--
2.22.0
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/nlgwcy/dpdk.git
git@gitee.com:nlgwcy/dpdk.git
nlgwcy
dpdk
dpdk
master

搜索帮助