From patchwork Wed May 9 12:47:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wisam Jaddo X-Patchwork-Id: 39599 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 509C81B6AD; Wed, 9 May 2018 14:48:00 +0200 (CEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0056.outbound.protection.outlook.com [104.47.2.56]) by dpdk.org (Postfix) with ESMTP id 95EFB1B66B for ; Wed, 9 May 2018 14:47:48 +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=rxiAt0PAZP0U31szf5ihjpLJ78j5/7cjuIcG+df114s=; b=UC+FHVwlh8inXgQmIaJ4SrPVzdwYbBweaaacobXXehfWS+U5/jxspCOoACG6baT2vim8MmIkN0VdG0bhu7IU0uTyprPgDg8+8HcycNc2GMoaHQGwElQypQvILHpSdWXx1yMIEbOaDccZSZvEf/ZRtK9Jf4aNS/XDKMUS+vqb57I= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=wisamm@mellanox.com; Received: from mellanox.com (37.142.13.130) by DB6PR05MB3432.eurprd05.prod.outlook.com (2603:10a6:6:1e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.735.19; Wed, 9 May 2018 12:47:46 +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:47:19 +0300 Message-Id: <1525870039-11261-3-git-send-email-wisamm@mellanox.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1525870039-11261-1-git-send-email-wisamm@mellanox.com> References: <1525870039-11261-1-git-send-email-wisamm@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1PR0101CA0056.eurprd01.prod.exchangelabs.com (2603:10a6:800:1f::24) To DB6PR05MB3432.eurprd05.prod.outlook.com (2603:10a6:6:1e::19) 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:DB6PR05MB3432; X-Microsoft-Exchange-Diagnostics: 1; DB6PR05MB3432; 3:LX9Iwxw8Fp1inTAJd/fUrd5GHuN1zM7kOzcxz6I+/2VFG9si5jRc9r1nhZxEbPilUGKr0M69GMLDG3/ux/C2pGsLVlE6U+l0MFFeRziRUvnFlCetSD5MwpHxo2nWiWufWhHPqn2jiIPxJkZprgqZWteECENALhfzbY8EY/IwDgfn3vciN+H4+SLFmKikoD21ZnrX699VXdDxTVB9KDKmBaBKFoX9pACWWx8G2Ck4DWuvuC99FG5aMih+b/h9h5N0; 25:gl35ZB4i5rg4zdQK6GjslLgLq9UqH+3tPud0zL60rNZQczm1rJx4p/j9C6Md5mE/Jwm/uK/VpPMjaZ4KOSxQ1nTUZfhHt3jaPaBPkFbfCvRaUatc1EehmvX9N0g2TxUvaU2V/29FVgw4ljlNE4QVWwJVF+oJe95xlF+h+yF5Byu2GUCZfvynEzgQoDCf38XrUnVI+5wHnq5T0+KKYTs6OWg7KHJB1APDV+HjAEjVBUWpFcnC/KEHaLptKQek8RugPf+Ax8LSvcFzPwVnBVfx56mRy2LYpfecWLvP75qhiLf4BA15dO6STn+jFgWrrXsRuTnhsDfHZyns2qCaPxWu/A==; 31:QB/BpoNpJy/lB4vMAXcK3CvuQX/bFTcuXyC4l/I4cE9stifhG2FotwEB7U+NyOihqvhbxE4UQzc5eflxRd+Iv9DJ50LkIgSQelmW+Doo8bg0kAIIMn4nuuAxafMY/JT1vn7vM/ihluKIDt+hcE5j7agKRZqlG3BzfJMQUS8XHLiGzGKSw85zloMJentsU2iRv8uzyaCDuZbQ8K8vhuk4q2k8bwzash/XEdXKKlNTCyM= X-MS-TrafficTypeDiagnostic: DB6PR05MB3432: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; DB6PR05MB3432; 20:y2/Gm5xU121xZNYgK5vm1XTmwQKrE4BrMuTX1kutzhgKZ1lbctLcHg4RBowfzP1rb5eDNZrIoC/3ZgOhAahaVopvod7FglG1X0RK4E3kU9d6TcvUooVzK+IU72Ptye6urIX0Rt6skCgqqYPxpAZ/m+zzCFMbTBljvz/AYlifuQzA5Q6vlaucKA5z6oHpOsGVV5Al8OEz7Byc9Cpl9PXn8y46j3YU/q6TK2t9ul3R7uR6nzNqzd567sa1orYxa/LhMiEpOTSkAT5W5C7KzfFmD/ggQxVCX+/6p/GA9fTRMttFe+LQ3fzTSsal6Nsb95EKvstU9gsIDUDfPq3koyxJGruZSuzDf2gPfv1D3bMRhELSXq1fSafOXbWpJ7i+FOQ+n4i5TEDWsWPJEqddhEY1QrVTXJ8tCa2McP3FWDB54B3bWsdY4tJA/UzR7pHWem0mKr6m9jYzjx/WTgI5520GjoST1WAu/zcJyMeiiHS8hKU5zLdRpBhHihIbkfrP8sRi; 4:ezheyEY9qeDRuDy8Y+JstoZNDw6EP2tghVR1eLWHNmvaviXMoqPYBrP6jkEvKUDYCNNmAWVBTN/UnTnJ2yIHlAWLSjEJBzi9THQOgKFWMMSe40ab04LNGIBqpYii9dzs/RYoMOW0IWChb/C+udo4I3kwZNY+MYUJnmxokEkv1Zb9wZglKmpdsnvd4ZYlsVo+2bIW2NXXJQhm46yVzkp7q+iHhQSfnrZUeXlzdyti9dBNW0Zy1b1gel8n1TQNezOZE93oVC1kYRJtAIr/mdce+g== 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)(5005006)(8121501046)(10201501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:DB6PR05MB3432; BCL:0; PCL:0; RULEID:; SRVR:DB6PR05MB3432; X-Forefront-PRVS: 0667289FF8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(376002)(39860400002)(39380400002)(396003)(199004)(189003)(6666003)(8676002)(59450400001)(33026002)(5660300001)(16526019)(26005)(3846002)(478600001)(107886003)(186003)(386003)(316002)(4326008)(6116002)(86362001)(16586007)(106356001)(305945005)(11346002)(48376002)(53936002)(446003)(476003)(7736002)(36756003)(25786009)(52116002)(81156014)(21086003)(7696005)(68736007)(2906002)(66066001)(105586002)(51416003)(55016002)(81166006)(2616005)(486006)(47776003)(69596002)(50226002)(956004)(97736004)(50466002)(8936002)(76176011); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR05MB3432; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR05MB3432; 23:J7bxY+oZ/zL3DAQO748HEeTFgAdv6wiM5E7tizz3s?= mOxM4nL+dUgJ4RCHCTtyY0IjGuJQ1WglsSejvdCI01LhXhmF3R9VaHUzam4t4p/zPN/1GJ1YLLnbMVklrjSL9LRYQHysec/rTd7wZ/8Fe76xYeUAkRaJ6yQ+CN3i2idjGM69B7rq5Troadu8epyBX79xxrp9VTzQ15hMNbnzdSZ1+XTK7Eq7DZpchVwdzCyYf6J2x6QCrobSCSPLvCx4EqnJ1ZvlZkk68qTJSEdLFxrnrDsnjZ2fbZxeNP8cNs+ZDRt4lKtogrpENkykQZa5W/UzXp+jLWsxzZWpsivV5Yg4eBTZgnVPglW87JLKsDl3XGFt6uVZm7JQR6IaE8TPdTFGtSL7LryKNivCZX3csAYlr+mfaCDLuuiSdnan3p67kNvcjdI/Pfmwx8LvyRJBzsAr6AtnY1E8/z5M+FNvT1H69qi2opxYMXja8RjNQ44YePvBbOu1f/b3S8HB1y3M5CHIsZ88IInAS9UL/6aGylBNVXmxX7XDziHQM5B1tG8VGhIVnnFG4jdXz4YPqFqVseHAO5+R+dZZJK9xumCdmfZ5z36j36ZCdBFzPusNhFR1XRSLvVvxs/ymlRgVfg0KVZvVyFYqTi92T+ghaIdk+v14YGADCw0Fg7KL5tXQxTbHIykCuAh6kuXeWWGxegumTPP6CxFnpvB3IOeSxp9OAX23lIcjUF1/osFRsSiXgncYDuhRRhD4jYCSVuRzhAOAnDaacLrV21WzWm92sQNpWwimC0mHG1owuJw8O2Uz/rIfGRwpt/1t2HlxylhhGbJbaMYBsjrOvCjt2eJnKrqTgSGQK646u518DZ0H9NZoJqkotM+N0g7zn7ig4CfOA6yp5WLMru0Zk61ek6Y2B6efPsJEdfC1N8H1HdA0QdAvmo4RscTiVpzvgXEZfIIm099FusoDPxtNfOK7Vkn+blZbd1CVkvflLfoJfJ4k3U6VM4DSRG4Oxwkp+GyNswKUzjlRQnJVa6oAkY6SXCh1gZaSvVihn8YYm5nQCIDNbx69nPMva/v8BBBbTwbb9L13coT+cVh1xLcNWSCd56hLGfZTq6D61z2j3qK80rmCKoGicgZRaT4j1TUQ5PlcBo4UJ3wJq02jCpaMFTtKBB+VZ17v4Auxe9SBMBPpZHEd7VoNI5sYmXmYl5k2SNWqfnh4VGThsUSup14m0/hsshWOHTckJtIkxyPEmJZaFhndm/x2ZhIhrk= X-Microsoft-Antispam-Message-Info: tmeZ6QSni4BPC9UMA2T5WmRQmpCkGyliYi0W77IFBCDMFux5M8gmUwZ5mkgPpK+cbIpl8WG0TblLydEthPonYPbpuCZT/pkEYcDsUID+9+k5endhZhVCZ4pt2JSjBorgk68anZPowFIxKvK+lLGS7Ui4Dd8yhqz3/SYF5lcFzXfpBSUEqpapG1/np75fJUMR X-Microsoft-Exchange-Diagnostics: 1; DB6PR05MB3432; 6:OEvslKa1Lxo4+ihR6/aILZ5mSBDepuuXKqHd4CdN1ilaJko1Hul/yu1ZAVVx+d9PPwtNpyowQu65+K78Ff9QpS/3x3nARw5wWYWxSlV3S3R7yihfMB9C/4r3KPYxopJLgbd4PBRB7KxR3zJ0jQYK1Y9/+AfCMbW3wrz4rxXqF3Fa9GmOQ5RHe6lywHy6nMacyVg1KJkSMoF8x4ftr4h6V3IBjvWT9pKhYjgv0T8JyzXj+1ecZnURQvWBEbiral2G7f1gRbfITOijMgnyUbGPFEK1d/HfJRxkick67tJJMk0jkIHU8tBDoLeXwFej9PDKjdWXJcE47GwOjsIwaXLIn6wwevVQy9G5rx7tOvHW6p1IozNdQA6dG9YjxHE9vkKEI3QtshoYoF0m2ClPhViwSbxaerTkGC3E4a4zTp0I9DHacPoSwEWyX9eH0CSRK6KIBk7Fs05mVWS+Ui5GcM6qjw==; 5:/KMBp7Sey1QX6zdAtHPrFa2Ifjad/w153ks02mk7GiAc9daXkPkI3Nba2Oes9DB6IuVreOqRkv5iyzR4Bcg9xbUxlg9NZuFM0bsehh50mzJxLNq2KPgsBHu8N3lsIPrDjN+e1+L579mE9REI1Kh+Y5HentBZXlgA+DYL/3jtVZA=; 24:M4wpZMmxQLExOw/KSTHU0U7j8HA9d51v8M4LQ7ZQA0LRTTNYdnEBGnDu/zJi4U2pZrNMBHS8dbC+nGwWTLu650ekKzlyR4hLqZdLCJFa8KA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB6PR05MB3432; 7:YcfncdklYeirrE5tjNgdmMyMnGIvyy3rgGOkn1wO8tzbErRLnScgc6LKoUKbWpgkaQArknwdez7J8AI9tzCeyYSDsd3+H+p/Vp4hVlsXgLnPnATOEcOSKpgdomcDFshN6gsIvCvHKUVvJOz5hIMsbB/eOqcl9UJJb718yDQ10e1j0vs8kx//x0n+b8/h5MggYbG9sqKqLXKleGePuX0CDsc7mJCjzz7EO5NK340B4KC5Q3KPj0C1YOPkDLmfpPZ4 X-MS-Office365-Filtering-Correlation-Id: 3a2a1ae2-61c6-41cb-4a56-08d5b5ab111b X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2018 12:47:46.0860 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3a2a1ae2-61c6-41cb-4a56-08d5b5ab111b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR05MB3432 Subject: [dpdk-dev] [PATCH v3 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 | 25 +++++++++++++++++ app/test-pmd/testpmd.h | 1 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 8 ++++++ 4 files changed, 76 insertions(+) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 9d48048..00fd4c7 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..eaad885 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -2380,6 +2380,31 @@ 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++) + if (rte_eth_dev_is_valid_port((portid_t) 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 ~~~~~~~~~~~~