From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 32A5A459C5; Wed, 18 Sep 2024 04:39:29 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C7A8D427D8; Wed, 18 Sep 2024 04:39:17 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2132.outbound.protection.outlook.com [40.107.93.132]) by mails.dpdk.org (Postfix) with ESMTP id E7658402C3 for ; Wed, 18 Sep 2024 04:39:13 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KYqZKkHryko25p2gMEOkIl/RY91obMfF9up+BelwBMJsaVDWJJmH3sssnTgAxB+Iqlz7lIF4NR9qr7d2gj3I15w3uj0mca0774GxUNvO/v+H2pTHsnZMSf+MJQIDXlRxD7WXZ+hSBZ8TQjlnEfsGuqkRNhu2yZQhBKuoooc2e33H4auxWTp0b6iITIkJno+FHY78W/veP0h8n3H58BJSewNb3i2Bl7ZPh+FDgZgOgJFwBinIgqwdQNLdLIeCDwIc3dfgXFR3NnU2+UzbBcXtopzKr3qCRTg62pXoOH32eyZtflB++VnTMRk4AvQqxdEulwPh+MgNDdPDL1+j/dgszw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nvX8GQHqJf5oZwWH535OEmB7Igj4X98I91rXMDw7ZWE=; b=htNhpaWDFKJHt9oFjuBdnhPTuxj0l2uPppnAnE6nJBt5FH4kn2Q3zKhG6hmdijUDL+Fd7jAR9i1NRjGGUOiyp875QS3LSXh+Njt4v63TFuz5hU3dlrfMVws/RgPlHRP7EmPl4KwVZnKLnKFWmSE9k3xMznuaPtf74ruUR8R3YPGYISYVGqhy+9mNrFixIK7IpWYB7qy9twp288LgstqNWUrWhTSF9xDVV94L4XR5W7sRlN6bvQnbF12CcD+Qdm8do3CYsSSXNHjX2cBc8ZOICbQo/4beQsIYn3mpEmTDyn2LfuJ2CcfpUhCJBtv46pBMwtn9+3ANkY0iHUASCtxUnA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nvX8GQHqJf5oZwWH535OEmB7Igj4X98I91rXMDw7ZWE=; b=RtXbdEjJ37PmyEBlcTk30yGHjtIAeRJpniq15E71goXXmNIPU9ZA2KawZgW3ePah6AhsQslJAmlZTIShx/XMG977Chdwf7OmOj3dgDGmBcYIcKDHJ7oSROlkZ1WsTSf/lv4/Hw2u4rfsvlxjQFZNDgqtEFu+tSNrn75LDYoPIcY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by BY1PR13MB6939.namprd13.prod.outlook.com (2603:10b6:a03:5ae::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7982.16; Wed, 18 Sep 2024 02:39:12 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833%4]) with mapi id 15.20.7982.012; Wed, 18 Sep 2024 02:39:12 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, James Hershaw , Chaoyong He Subject: [PATCH v4 2/2] app/testpmd: add set dev led on/off command Date: Wed, 18 Sep 2024 10:38:47 +0800 Message-Id: <20240918023847.2964100-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240918023847.2964100-1-chaoyong.he@corigine.com> References: <20240914014913.2886626-1-chaoyong.he@corigine.com> <20240918023847.2964100-1-chaoyong.he@corigine.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SG2PR02CA0083.apcprd02.prod.outlook.com (2603:1096:4:90::23) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BY1PR13MB6939:EE_ X-MS-Office365-Filtering-Correlation-Id: eda2fa28-13e5-4d86-4d3c-08dcd78b1482 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|52116014|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?JSYMWkmhV6dhMujwhI9Xk04lxCFGBGIwBBqRM8p/6WTGIU83hn7k23U+OQGi?= =?us-ascii?Q?6Gl7ap3E9D7eRzMoyPn6wpFRMQOsKZOeYR7rcJpdRZfXhF4XJPGC1pRptG2b?= =?us-ascii?Q?5kUR/XDBWUM7wEGqQigVu+fIuSp9FFdBPHC6RetitoqTubaU1JWucrLphttW?= =?us-ascii?Q?X2gi9f1CljKJoK15b6V/wzrzf3txlM845U7FMNXn6Z6KBseOi4vemOBxu43C?= =?us-ascii?Q?OXYDr880aCSicbpWk+PKV/tr/mAQVtwiAa7wVN6n0WUKbVnGRddEu3rsZXEp?= =?us-ascii?Q?hAWj60iBU5Pzf/yX9/PkE79oTf/edLwu7uQyiZXCkdpoRkoGkdl6JyI4HbQY?= =?us-ascii?Q?O//uC1H0i8u+8i8X7efhb04kz+x2MPY5HgMsdE0KO4deQoPQCGFpnUlXztjm?= =?us-ascii?Q?Ta8C8Qt+gswT0HdJnKkFV3PORdC1Mdh4V3KuxpBSm0lX9psZuMRy3SRTbcPG?= =?us-ascii?Q?64hIxlzVL6Cim1MB4QK0N9EeUCl9llyymD7EpYV7I/fE1Fdcg5I9ozPwt4Dx?= =?us-ascii?Q?UezebAqlNd8RBRYBAzkUH1+ntHGdvjwyuA1cZKjHL3fJsiKGYTLCVQYWLAJB?= =?us-ascii?Q?zcIfBlUQNnxz0qdf6V7h5yok4Y1tO4avNRp8SefNWj/7Gitc2mATvtS17r3K?= =?us-ascii?Q?V1HgFxopMYVN2X57CwJSEiczUQ5SYBvR2RZOKOMdJFYbfhhuPSDZDEJU8VTu?= =?us-ascii?Q?4a59/d3DAfE8R2cTcGO6ARMub3nV19sxKYTc+E3NvfgzNon64fw9es65LwDN?= =?us-ascii?Q?G0k6Y++uMrypkGx14vzNspy35ac0Z0lJb1OciDEpEsnqGtW0RCIHM1fDuqSI?= =?us-ascii?Q?fi7wZZ/C05dV3PRv1tJ7i42CQUmIcv+fnRP7vSrkuR0KE+fT7YIzCKg2i0L9?= =?us-ascii?Q?gR/pAB2bMnAxQ2lMMaiiU5GvqgjvbS59mPQ0KlWQWjuKX5DihPr1NoCWGXl9?= =?us-ascii?Q?Y71ojUIZAnOd0pjFTkhNacgJnnMRySQ4cA8/I67phuw7+UgVwhbRyTG05ZFo?= =?us-ascii?Q?VXGnkDM1mX/z2zbyjrnrV1h+9dxI0KOR6ATBc/i9DsbdMhRrzLJ3vaEfTGj+?= =?us-ascii?Q?oNsjJW4pyaImup0A91/2rbW9b5Yx1xITa9mnP/zSkDuXrpAb1BkTOpvqDHQD?= =?us-ascii?Q?bg76/L6KDqdLbt5/TEDlS3tLovnZ+htRakvTUtYcL9xBAzk5IMCwi1kv3BEY?= =?us-ascii?Q?XCcmplf+FuUb8ZTNOX/JEyec0+dkEElN/N4kt5pu3xZUpxx5z5rXcIn29WC1?= =?us-ascii?Q?B8i5uiPA8Joy7n4v832yzMXARJ1j2MmBPG2DmIPUv60Om0ufKPnBqOgpXuFn?= =?us-ascii?Q?uOOWdTmEmAO/fEvayxTDRKG1K97lnTV81r93ljw/hmI+Vg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(52116014)(366016)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?cJUkjGlytBaVC3NOR1UVF0LKO7WLhq9mf3zG5XWn2B255K0IyB93tu7SSbp/?= =?us-ascii?Q?LwSmnXRjGgNLkbmyu/a+82spegg8/eqprQm3fErgq0dFagKY+U5cEwckF/r2?= =?us-ascii?Q?9qCSz4hAOWkBWD0j+zTTDGXdU+CQTAFCiQH0unAHe1jPZewNcI3aa97A30Xi?= =?us-ascii?Q?PpJW8KutyO7A4fqh+HOGYrMdSRQ87R0REC70iaOc8XH7BWgOpuA0oMlLTogB?= =?us-ascii?Q?4rcEsiOm1ocpBWhpTO0YxHA0J2GgXX3oFqCJIwDkl6lFJTLHf+Cv8JEwDHVj?= =?us-ascii?Q?aBgPnw+kwUOkxjEmSF5UnxyfZkltMRp8KEtLQHF3GpfvCAxTX8qdOaTOtzTa?= =?us-ascii?Q?hMyKkU6d2w3+xZbv5qobnCk5mr07tMXbHzLRZ5uyOGYyQoL6W6iVY7EEixRO?= =?us-ascii?Q?YfwMlEK5cvAYgdOUTz8vC7YMckDJmoEdOJ/uA1YdWUKvoF/BUcCPFDlSMzH/?= =?us-ascii?Q?a1zjrKaBMlOp+aWXkyCXSuDbiFizWL7EW9mNZw8prnO1LK3gCv8+RjU7AYDJ?= =?us-ascii?Q?vH2c7F35tEqYj6HdVTVVDkKCckXClRogttWTHLCesyklV8RD+P0wCYwahSF/?= =?us-ascii?Q?NjB3mQoaqJCr0cAxqeYF2W0hkftQFTg6YISm+3dGdvyk19YJuLoAh7k8Au1k?= =?us-ascii?Q?H5HsG+YWj9qP+QFs1PSFaSP9oT/xEq53wn06NKKHH7Pmtx58qZLLz+LnQ7cW?= =?us-ascii?Q?7OSDOIF9+60CintW9c54YyNh5H8eMwfdXQqXhsLtcoq+ybaF8P65kBT5bPoo?= =?us-ascii?Q?Aj/3FFXfkhO9/NvOgWR0ku2jsxWXguKHsEgSGf2+IlEI7Rq2+ozsIt/G7Llj?= =?us-ascii?Q?Wn/UZJsL/WepX2wgS2mrbPQ3LZRNJC8NZAqetvGnhBBMbAc+f7BJpaO7NOzm?= =?us-ascii?Q?OAG831ydbED4SvSa4A+L8WvgruWhrkST/cPwtQAtmF+DZHfyU668gSv+X3ai?= =?us-ascii?Q?LdgZUkquzB2SyuQshg0/9D449nerQpG+GcjJY4DUozbO25Kn93yqbWDyp+cG?= =?us-ascii?Q?U9DOKuAlkt9lZDRDrnIuXO++Eu99OuqfooEBy9NiSSA8CPRgevQwAERHnyT1?= =?us-ascii?Q?5BgVdJQXOfqh/P4qXhwOxuq0I3JTYxbufhWU02Nut/4AkqvNSmSW7BcmYFbo?= =?us-ascii?Q?NpjTUXLFylnP/wjeHwXq4+Lv/ohnYe3umpQ5VAK6onC/GFu9OnCUeUaC50+x?= =?us-ascii?Q?ZAcyHegEYnpcEbuPCzZB2iEkzqHBBGMYMqTWROepnHTob5WUUbUXsKDdhDiy?= =?us-ascii?Q?hU4C9d3UQNGfAHSKu1Kx9oTdYNE1UbfBolRis/pPtTuhMN1/Fw6DcluoBzYU?= =?us-ascii?Q?8rx6xtqK7sfr7zQkeNbgk74V09WlmnQgDVyL7+c8ZM/tSLQyZFLOBdMgJvhF?= =?us-ascii?Q?WaKjiBpT8mw4+VztbOtmWmGro6nNRDmS5YDm5aufz5MN69PGKdd+9iNqjLh0?= =?us-ascii?Q?v09Pn3BtwjTF/vo8oXbxL1+x2PzNvVSEn+LEKqRcQz9zUKLPkGVeltB+/SuT?= =?us-ascii?Q?PFEX3/u1r3JWlrWVb0mCz1jJTsuZmcoaPp/ADTkPyKqjVU56QNwoBp1Vc7wY?= =?us-ascii?Q?VBZcyDMEbiiftPcUrIxgxdBKq97UEenE2wcsxjfHhYYWzY521eZPZnCEEOI6?= =?us-ascii?Q?6Q=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: eda2fa28-13e5-4d86-4d3c-08dcd78b1482 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2024 02:39:12.5965 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: AtuS0yrWn+T14VNKkuWvmpiMz+9jeX4b413gdGaKczrk9gI9bA/v8RiqasT/FYcIx1OCegHk/OZCbb4oLUDSsP/1ZD3uZO33om+F4O9GkL0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR13MB6939 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: James Hershaw Add command to change the state of a controllable LED on an ethdev port to on/off. This is for the purpose of identifying which physical port is associated with an ethdev. Usage: testpmd> set port led Signed-off-by: James Hershaw Reviewed-by: Chaoyong He --- app/test-pmd/cmdline.c | 52 +++++++++++++++++++++ app/test-pmd/config.c | 20 ++++++++ app/test-pmd/testpmd.h | 1 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 7 +++ 4 files changed, 80 insertions(+) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index a227d3cdc5..a117a4c2fb 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -523,6 +523,10 @@ static void cmd_help_long_parsed(void *parsed_result, " user is acknowledging and taking responsibility for" " this risk.\n\n" + "set port (port_id) led (on|off)\n" + " set a controllable LED associated with a certain" + " port on or off.\n\n" + "set port (port_id) uta (mac_address|all) (on|off)\n" " Add/Remove a or all unicast hash filter(s)" "from port X.\n\n" @@ -7610,6 +7614,53 @@ static cmdline_parse_inst_t cmd_seteeprom = { }, }; +/* *** SET THE LED FOR CERTAIN PORT TO ON/OFF *** */ +struct cmd_dev_led_result { + cmdline_fixed_string_t set; + cmdline_fixed_string_t port; + portid_t port_id; + cmdline_fixed_string_t led; + cmdline_fixed_string_t state; +}; + +static void +cmd_set_dev_led_parsed(void *parsed_result, + __rte_unused struct cmdline *cl, + __rte_unused void *data) +{ + struct cmd_dev_led_result *res = parsed_result; + + if (strcmp(res->state, "on") == 0) + set_dev_led(res->port_id, true); + else + set_dev_led(res->port_id, false); +} + +static cmdline_parse_token_string_t cmd_dev_led_set = + TOKEN_STRING_INITIALIZER(struct cmd_dev_led_result, set, "set"); +static cmdline_parse_token_string_t cmd_dev_led_port = + TOKEN_STRING_INITIALIZER(struct cmd_dev_led_result, port, "port"); +static cmdline_parse_token_num_t cmd_dev_led_port_id = + TOKEN_NUM_INITIALIZER(struct cmd_dev_led_result, port_id, RTE_UINT16); +static cmdline_parse_token_string_t cmd_dev_led = + TOKEN_STRING_INITIALIZER(struct cmd_dev_led_result, led, "led"); +static cmdline_parse_token_string_t cmd_dev_state = + TOKEN_STRING_INITIALIZER(struct cmd_dev_led_result, state, "on#off"); + +static cmdline_parse_inst_t cmd_set_dev_led = { + .f = cmd_set_dev_led_parsed, + .data = NULL, + .help_str = "set port led ", + .tokens = { + (void *)&cmd_dev_led_set, + (void *)&cmd_dev_led_port, + (void *)&cmd_dev_led_port_id, + (void *)&cmd_dev_led, + (void *)&cmd_dev_state, + NULL, + }, +}; + /* *** CONFIGURE QUEUE STATS COUNTER MAPPINGS *** */ struct cmd_set_qmap_result { cmdline_fixed_string_t set; @@ -13349,6 +13400,7 @@ static cmdline_parse_ctx_t builtin_ctx[] = { &cmd_stop, &cmd_mac_addr, &cmd_set_fwd_eth_peer, + &cmd_set_dev_led, &cmd_set_qmap, &cmd_set_xstats_hide_zero, &cmd_set_record_core_cycles, diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 73549b2b57..5c4599e903 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -5358,6 +5358,26 @@ set_fwd_eth_peer(portid_t port_id, char *peer_addr) peer_eth_addrs[port_id] = new_peer_addr; } +void +set_dev_led(portid_t port_id, bool active) +{ + int ret; + + if (!rte_eth_dev_is_valid_port(port_id)) { + fprintf(stderr, "Error: Invalid port number %u\n", port_id); + return; + } + + if (active) + ret = rte_eth_led_on(port_id); + else + ret = rte_eth_led_off(port_id); + + if (ret < 0) + fprintf(stderr, "Error: Unable to change LED state for port %u: %s\n", + port_id, rte_strerror(-ret)); +} + int set_fwd_lcores_list(unsigned int *lcorelist, unsigned int nb_lc) { diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index 1292d1a0a7..aa1f0e9dd1 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -944,6 +944,7 @@ int init_fwd_streams(void); void update_fwd_ports(portid_t new_pid); void set_fwd_eth_peer(portid_t port_id, char *peer_addr); +void set_dev_led(portid_t port_id, bool active); void port_mtu_set(portid_t port_id, uint16_t mtu); int port_action_handle_create(portid_t port_id, uint32_t id, bool indirect_list, diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 5c33d610ea..4ea745e66c 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -1377,6 +1377,13 @@ to 0. behaviour from the NIC. By inserting "confirm" into the command, the user is acknowledging and taking responsibility for this risk. +set port led +~~~~~~~~~~~~ + +Set a controllable LED associated with a certain port on or off:: + + testpmd> set port (port_id) led (on|off) + set port-uta ~~~~~~~~~~~~ -- 2.39.1