From patchwork Wed May 9 12:34:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 39572 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 35FDC1B3DE; Wed, 9 May 2018 14:35:06 +0200 (CEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30079.outbound.protection.outlook.com [40.107.3.79]) by dpdk.org (Postfix) with ESMTP id 92C161B3DC for ; Wed, 9 May 2018 14:35:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=EbkH2hNweEGTzsS8XT3lu6gA39Z/3K4d9BbtxEj8Mtw=; b=IUKJOGRj98yDeqV7NNhFk8T1x5JxSdVztUZbI5ia1Pck87wRG9kOm/TcV76TfEJFr1tAj7E7yV2t2zqfMWKyM4wTLdnb4Mg4Hlfg3Mz+RHwgB5+OplVNqVjvmuMZMNjIGAwYz0ZMXyTanDfirATtZ7odL2sxOceY/fGmA53oiIE= Received: from mellanox.com (37.142.13.130) by HE1PR05MB3433.eurprd05.prod.outlook.com (2603:10a6:7:33::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Wed, 9 May 2018 12:35:01 +0000 From: Wisam Jaddo To: jingjing.wu@intel.com, wenzhuo.lu@intel.com, thomas@monjalon.net Cc: rasland@mellanox.com, dev@dpdk.org, shahafs@mellanox.com, wisamm@mellanox.com Date: Wed, 9 May 2018 15:34:39 +0300 Message-Id: <1525869279-10035-3-git-send-email-wisamm@mellanox.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1525869279-10035-1-git-send-email-wisamm@mellanox.com> References: <1525869279-10035-1-git-send-email-wisamm@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1PR08CA0109.eurprd08.prod.outlook.com (2603:10a6:800:d4::11) To HE1PR05MB3433.eurprd05.prod.outlook.com (2603:10a6:7:33::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:HE1PR05MB3433; X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB3433; 3:/GvusubEp5dfvy6TEAkZp+Bi9lEiELwSOGuL7jo32iDv8w9W44GqwXyw6jhKIGks/RL847egxI1uQUdprssXMlUWr/Gh3jUNfjAH1aJ8pPRIdz7xmmMyaSnh2IldQCjFReuEi8gqZLvQccCet31+zYX7sClmAucVhBG14Y2mOC+afB0RJJiWrilNz0goTJDHK52NAsGd1LjEJVniOBXkXlZkgnh4lJqGwjXdGFea6AqKlnJm+mD+5hD3+X4MJ/cf; 25:VvO3LoDGMXVyXp4Is1qIcI8YZZPQ6fMCCPcNfY3h6G+IVRBsbVHSrUwOvF0PvX2+p/f0jIQHyCNa5emhjDCKhR5YdGcaDsJeksW10sYhRjFkcU4y2PwN9f/jZC3UD6biixrKQbV8vc47dWwKXJp8U10f4YMkJxQYYPu+ckj+rBTsEVki688Bn1jd9MeB/BI3YWKoNRcM/U2yxDMgZ7sOFEjbDT7eb0lXvq9ILTtky4IMgHp7XLadd007MxIF24PjU7IurfWZPKkSF7WCMK170kRTAoY4zFhTYhPTlgCmx/C+YczNglk0ns/9wuXNdd/8HXfs9ftloHpxxwI8IMHn1Q==; 31:Iu6ofryfiq5DB75qU9J5N6oDd7WpmXH8Mx9pMK2vV8JzxChKWwUZT2gCv604Az1mFkBBDLaeNey3cn9Vslubpb+Zanncs73+1aHqedGEuLub/EG+5YEJ0RC/hVhHCMXV7QjSX/Z3Y0siOtiGFopLwGk5TlGP7pILfoApAJ16ZpQjcpEYlRjEf5jXRrbQh8dYZQweNgjCcaG9nn11YHlyXTaKyERJIYxSo5INMLU6E/Y= X-MS-TrafficTypeDiagnostic: HE1PR05MB3433: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=wisamm@mellanox.com; X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB3433; 20:umegg7W33yj/cgiNnRbqRJa5RTvkG4PRzFGwPsKVSe7Ei98luob9PvZH3BqlCFeGeIXwQEh2FLlWsAMQV6emIA2uq+QgvvuosTx4rPzqM0lcZZisBgC6Q1/e7fS1lIn9O277pjqwympCBOzGXwN5FCcPJNorxnfDZTjN1Vd0EVh4QodemgiGXv8k5+lasvRh48NUwmZvg+c0svUorZTEXVwyc+Tj80OJOJq10YcScpLB+0HDXIMtgOLAuaZi3Kj/nSoxJPMGqdoJ78xS3rLyk+FZEWW/kM4JxGoflklUtCIG6IbNulepF43gDFwWEl8veVzL9O1Im9GupJjSn7qH2ssHyAf9JuEijVxr2RQxFfTNeYhGMNMT1CgPcF9I32BV5z1bGNw1/yPLUdof6ze/HWH7k6xvcl8yzqCyFyZhQFS8h8OcdKNSzhGf2M9CMbyPIOvAJGkBlEIyeAYLUMQb+V8NPsvr11Ip3VydIMK4mQiA5JhFinkBadCg+Zx18Jxy; 4:7opwBDiFvwKPDKT8QAt6f7n5R4nBpFXD0aTwUyWsvrzOpP++Bj5ixaL2mWmVjI90lJhZZKIT7Bq2QU4bYTY2zuSN0M93UKza4wY6vLWRIg12SoJlOHAWWmPvbRCEFmUpKlBv/Kc2bGgeexci2LQkciiTfjXIXXi2GfFRBiSVS617lvZ+h5YqRZx8KH87s7XnVwtEK+qUxz5FxMrDjk4DctXk0jnh8sGCGlO2zE92rRmgZv8x+HMzEih5wpFS36GWnHzNS00h+SegX4M/HkNJ7Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231254)(944501410)(52105095)(3002001)(93006095)(93001095)(10201501046)(6055026)(149027)(150027)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:HE1PR05MB3433; BCL:0; PCL:0; RULEID:; SRVR:HE1PR05MB3433; X-Forefront-PRVS: 0667289FF8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(39380400002)(376002)(366004)(396003)(346002)(189003)(199004)(486006)(68736007)(16586007)(47776003)(316002)(305945005)(2906002)(66066001)(107886003)(6666003)(478600001)(4326008)(53936002)(8936002)(48376002)(6116002)(50226002)(8676002)(3846002)(36756003)(81166006)(81156014)(50466002)(7736002)(5660300001)(476003)(956004)(2616005)(16526019)(26005)(186003)(25786009)(106356001)(55016002)(105586002)(76176011)(52116002)(51416003)(7696005)(386003)(59450400001)(97736004)(33026002)(69596002)(11346002)(446003)(21086003)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR05MB3433; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR05MB3433; 23:I92gMcSHVyoDJR1CxHeCUWxNAxTDlNKFUw0BhGTFO?= +wLjqqCKjJU8Jb0SXNRvAn+tiB8aBAuL89Q/enmj4DihQX7DUYO/9l7vngG972hl7G3hBssEXBk4aA9ESWrMCiTJTGLRZeiPwT2c9UQcyJfAe9bEMJebey8cwpGOtATVhnlPlmospTzDg1J+O4s5gY6m4CI+j7U7BeKfQeb+mGwJrVzJL+z9rXpwsZKV5MUQtlngimlthaO0SHfN/7jAR8/K2jpR5XmiSh2x6D7kETAbJ5ylMP0AWlJyZ3uoBAEoJ6V9fAbNlQ7QKa5U4Kx8RsiTCnBQxU4YVkBihjk0s1sEeGWbh4ael2o0/Hu+IZ9vSesy/Rsi3jgo3DQAOfR0oUyJq0Yb70iwP4U3CPqbopMoHyWq/CZBYWazXnin0a8xEUy+Dobgny1I9egezjI4Ma+0N2r4/nOltZKg7nCYD5g+sbRztcROKBl7ph86HZ8AS1PM6unFPDXvTEtnS+E5QRZth/LonAyKnFhpU33wZ7RJ7a6y6tejbyocDynVfChQX1fOoEQ70j8Uj+WjISRS2srvXFSGQ490Z1LcWpqDfhaOdOQtqocE/zqNP8S/L/Ixvb/GRd9hSSZveFxJqFsvNydSjTzgMi+2HtbtVsSyant/Ix4SD+a15aGjHChyPHaDMrQflGMgL8CX5Xa7otvWy5HCKFNUANFD7b6v9j6shxygGxCj2i1YiqsM6c+dQtVdrmVF6h413TUoiVo/ncUkD/4wJDkWTEsjQK8YRLNSHACgkkfXI7pTrOFSqB3M8bXq6FgZW7JL6uHEbmZAG2yMBbQl9DPRAtVQz1/B8ca6RAXqkjZM1VfTONpabIY+tO06tw8OveJtNYy7J3++gpgJV66OIXpP7i02+AvjBVVJik5gZZkra0CZX0VuI0ZTXXtFryxwG6GFNQu3hkuyrliJ/XWCjD4QuYfma5+5cNQADddi8je6XMW6Gnkg+j02tAJMemiyI1zCujnS/zZ3qiGWX1jvyYOrJ/P4K63lZTQcjW9ocy6TRlkq8G0pPVeM+Gkq7ARfdIc4c+BHCgSaZAe/LwjdPDJ/nSz9uYw4ADu59Q1ZEjKTwvGexeqMu8xSqziUjOiw8kMMWI0t0Efm3uissg3GK4ci8oq42Dz+reUOws0pQYvQMs+TKPT30/aXNJ+kKwZuuJohNy1jk2zXNz6Ns3sfRLnYQvsd1qeebJsnCF7o4RwSfKYYVnp1o13Bon7rSA= X-Microsoft-Antispam-Message-Info: 9cAj82l75cjmyD76TBD1rTFupMuB3fXfIP/+pnBS6tsTRdEIhLVi/9KhMZWgC9glkFmDGd1AMcns7Iomat7jgnYN6D1qNGoxkDjXPTpypNGoJwDKUAOv6iwuMJ7VlAH36ai4jp4OanDkqWPY6IZ81kVP+UzCVk9ouZTIZmIdHpdMMoZS1ybRZJ8cFqJcTKfr X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB3433; 6:gMENtd8Rlfd+eGkuhbZofrbpSHSBOWQhfPOwwY60k55ZeEY4C2UTPwK6LtCe8d75JXQGbZDo03aKJ8xBO9hyeV3owjJRrYcMJxkRsg46nGQ+6Sd86WjZG6nrj0XAWnmzUGbkdvUGrzqr+r79vzd52EpPW7XsbYicm7pJHFlTgN7C/AtC22WAI6G6BfjRC+c8W62z9UO8hE5N8EHphT4Bjq8U9Lex5ELohznenDzQoiLkqLtBviKeQ811TR0LXl7Ul9AfhG3QgFC7oZAc7YJU1mj6ixPVNhggnHAbXZoQedQ+3q8wUdBwYgiZdogppmxMNiSzHgifVwBXpy8ip2Z3zooErNRff99H3sh8pzm3D/VB734tWA03NBhtzvHHQ44as9Sbr/6iicfA/YX6pjaL7cnasm9zFJbFPcMB4mSGTYDm3UzhTybR3d2f8Xa8g2+oD63HIXtK01842g1e5Wfjxg==; 5:o3a3mQfxkWN9TxYSvRlTNhDQUKALy2+vUmR08WLGOsqUH4piHcwh6viernbOYZ1R0Ulawd7nXVLXQYJHCI8D02CONiO6QuzPBO6Xg3UpnF0l2YD262u9J/LMIZ7/+Bo8BOoJ0hu6cH24P7BBMpkxWhWSi0Dq3Vm8k4gBkL79ZUE=; 24:wb//4oBRGWWH9tcLAI1gImcTTTl/6mEOOCLfDjKK2IpyBO1j8jEETcvsdFFI1YAgQncSE4hzMnXnTgp5KRgaIJ/c6IYkmpmqmG3A4VE9LnM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB3433; 7:sAWEx7vMX+I+AYPDYD7LLkHypes+dpKMXYMNGLbt3nb95vt08viDor+3lWtWly5DtqmSZKdX+bTBeEs5qkAAFbaLHXNZ4ilIm9LPJXnPPOHlhOnnQI9Wc2CafS69SEzJOGGeDouWKO5V7MS1IBpf7/OKgwHQ9MzPEDnGiGIqxUTaI7sjFZM/T8MmYDpNdXSCeCUETY3eWyjQfd77QHhO88SdAxTQj6kfQc+DxoVwkCU0QIHID5NM9VmPU1t3Hux9 X-MS-Office365-Filtering-Correlation-Id: 62c91aa3-e9f6-426e-1e0c-08d5b5a94952 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2018 12:35:01.3886 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 62c91aa3-e9f6-426e-1e0c-08d5b5a94952 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR05MB3433 Subject: [dpdk-dev] [PATCH 2/2] app/testpmd: add set topology on the fly command X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Change the forward topology while testpmd is running, the valid topologies are loop, paired, chained & custom. When the forward topology is changed on the fly, all the ports will restore their active status. usage: testpmd> set fwd-topo paired|chained|loop|custom Signed-off-by: Wisam Jaddo --- app/test-pmd/cmdline.c | 42 +++++++++++++++++++++++++++++ app/test-pmd/config.c | 24 +++++++++++++++++ app/test-pmd/testpmd.h | 1 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 8 ++++++ 4 files changed, 75 insertions(+) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 9d48048..ecbecad 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -7651,6 +7651,47 @@ cmdline_parse_inst_t cmd_set_fwd_eth_peer = { NULL, }, }; +/* *** SET CUSTOM TOPO FOR CERTAIN PORT *** */ +struct cmd_set_fwd_topo_result { + cmdline_fixed_string_t set; + cmdline_fixed_string_t fwd_topo; + cmdline_fixed_string_t topo; +}; + +static void cmd_set_fwd_topo_parsed(void *parsed_result, + __attribute__((unused)) struct cmdline *cl, + __attribute__((unused)) void *data) +{ + struct cmd_set_fwd_topo_result *res = parsed_result; + + if (test_done == 0) { + printf("Please stop forwarding first\n"); + return; + } + if (!strcmp(res->fwd_topo, "fwd-topo")) { + set_set_fwd_topo(res->topo); + fwd_config_setup(); + } +} + +cmdline_parse_token_string_t cmd_set_fwd_topo_set = + TOKEN_STRING_INITIALIZER(struct cmd_set_fwd_topo_result, set, "set"); +cmdline_parse_token_string_t cmd_set_fwd_topo_fwd_topo = + TOKEN_STRING_INITIALIZER(struct cmd_set_fwd_topo_result, fwd_topo, "fwd-topo"); +cmdline_parse_token_string_t cmd_set_fwd_topo_topo = + TOKEN_STRING_INITIALIZER(struct cmd_set_fwd_topo_result, topo, NULL); + +cmdline_parse_inst_t cmd_set_fwd_topo = { + .f = cmd_set_fwd_topo_parsed, + .data = NULL, + .help_str = "set fwd-topo loop|paired|chained|custom", + .tokens = { + (void *)&cmd_set_fwd_topo_set, + (void *)&cmd_set_fwd_topo_fwd_topo, + (void *)&cmd_set_fwd_topo_topo, + NULL, + }, +}; /* *** SET CUSTOM TOPO FOR CERTAIN PORT *** */ struct cmd_custom_topo_result { @@ -16589,6 +16630,7 @@ cmdline_parse_ctx_t main_ctx[] = { (cmdline_parse_inst_t *)&cmd_mac_addr, (cmdline_parse_inst_t *)&cmd_set_fwd_eth_peer, (cmdline_parse_inst_t *)&cmd_set_custom_topo, + (cmdline_parse_inst_t *)&cmd_set_fwd_topo, (cmdline_parse_inst_t *)&cmd_set_qmap, (cmdline_parse_inst_t *)&cmd_set_xstats_hide_zero, (cmdline_parse_inst_t *)&cmd_operate_port, diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 23799ad..cc403c6 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -2380,6 +2380,30 @@ set_fwd_eth_peer(portid_t port_id, char *peer_addr) new_peer_addr[c]; } +void +set_set_fwd_topo(char *topology) +{ + unsigned int portlist[RTE_MAX_ETHPORTS]; + unsigned int nb_pt = 0; + unsigned int i; + + if (!strcmp(topology, "custom")) + port_topology = PORT_TOPOLOGY_CUSTOM; + else if(!strcmp(topology, "loop")) + port_topology = PORT_TOPOLOGY_LOOP; + else if(!strcmp(topology, "chained")) + port_topology = PORT_TOPOLOGY_CHAINED; + else if(!strcmp(topology, "paired")) + port_topology = PORT_TOPOLOGY_PAIRED; + else { + printf("Please set valid forward topology\n"); + printf("valid topologies are: [custom, paired, loop & chained]\n"); + } + for (i = 0; i < RTE_MAX_ETHPORTS; i++) + portlist[nb_pt++] = i; + set_fwd_ports_list(portlist, nb_pt); +} + static void print_ports_range(void) { diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index 3250683..6b9db3b 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -605,6 +605,7 @@ int init_fwd_streams(void); void set_fwd_eth_peer(portid_t port_id, char *peer_addr); void set_custom_topo(portid_t port_id_1, portid_t port_id_2); +void set_set_fwd_topo(char *topology); void port_mtu_set(portid_t port_id, uint16_t mtu); void port_reg_bit_display(portid_t port_id, uint32_t reg_off, uint8_t bit_pos); void port_reg_bit_set(portid_t port_id, uint32_t reg_off, uint8_t bit_pos, diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 5edf210..584ed6b 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -1098,6 +1098,14 @@ In custom topology the active ports will be the defiend in custum-topo only:: testpmd> set custom-topo (port_id_1) (port_id_2) +set fwd-topo +~~~~~~~~~~~~ +Set the forward topology on the fly. +Once the forward topology is changed on the fly, all ports will restore it's active +status:: + + testpmd> set fwd-topo loop|paired|chained|loop + set port-uta ~~~~~~~~~~~~