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 ED08E45984; Sat, 14 Sep 2024 03:49:51 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1089E406B7; Sat, 14 Sep 2024 03:49:42 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2092.outbound.protection.outlook.com [40.107.237.92]) by mails.dpdk.org (Postfix) with ESMTP id 81A3F4026A for ; Sat, 14 Sep 2024 03:49:37 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BtuILhtz+QDYnlip+efjYcuY5xA8Ivj6WE+r0QvWvQHg/3hGRi9SdlnzoYQeElnJdMuh4065r4KrLxeNrdB+jWyksIWcKNJobibXQuPPldBYeM7A1XpvCVRqD+BrMPXylVzd8IpbT1tzIbnuicEauEHYdmBlyv9mi1A4zlSQ8sT+ZcI8GIcaYfam7TT00Nm7JBe+jiKeKJomrMj/+hdaaajcxetkV365cnpnULeVkIBeIaCZKqRH0L58TLhbNArCa/W/zR/BrSxvsAuDsDe4OmZHrT5g5d3/4cPPYEzaJ54oxe4zhmyyQZB72s+Y5RaB8mqQf6CE/8OgtJZtsnZB4A== 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=CdKE/oyTpSQNjafA9MCowgf/Oa8RI6FRkh+vX27i4LE=; b=J7odsWb3erRZVjdwdFRqWJ8L7+lwAy/oH9q1KLrKuY2hM/1SP5WgVwSr1YmqBwMMnpn+V6T/MVIN6fIxFsMNMxG2kDOGhdq7fOlTfl3yJqXGlduF7pey7OKDlldzPRyok/BPKnFpai6kQK6XqxtXVENexEu9KmGnlyLHdejUDBM124bz8OcZra1ZDtjRX0N3LBtuuhm+bEVHUoEoY7vO6YWyHxnwEgxg562obnCv8KrwQTPKBkSvWQdleXmRSV68oEnItEgYAPd3hOx3D6C39UUbAbtwRbui91O+WS7lWLrrhmi6H8I3/MRzmG0tlR8vDVAs/9pWN4/4rEgbMsBsxg== 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=CdKE/oyTpSQNjafA9MCowgf/Oa8RI6FRkh+vX27i4LE=; b=Cc+yBjMYQdL904oyCuZJRzs+KRU98PtLwORbhjf/Hfa8e1g3CLBJexTSZPBXsqTsRXBdokRH+xGnK+Uwbnoglf+ChUD2cp71O2L+6yw1twHpe2HiwCz407VkmPSexlaBGElkAPaqFRKcpZNkqve2IMChEEzVtki9qQATsD2zUUE= 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 PH7PR13MB6243.namprd13.prod.outlook.com (2603:10b6:510:246::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.25; Sat, 14 Sep 2024 01:49:35 +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.7939.022; Sat, 14 Sep 2024 01:49:35 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, James Hershaw , Chaoyong He Subject: [PATCH v3 2/2] app/testpmd: add set dev led on/off command Date: Sat, 14 Sep 2024 09:49:13 +0800 Message-Id: <20240914014913.2886626-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240914014913.2886626-1-chaoyong.he@corigine.com> References: <20240912065459.2858959-1-chaoyong.he@corigine.com> <20240914014913.2886626-1-chaoyong.he@corigine.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SG2PR03CA0128.apcprd03.prod.outlook.com (2603:1096:4:91::32) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH7PR13MB6243:EE_ X-MS-Office365-Filtering-Correlation-Id: d4bfa543-3991-4200-08f4-08dcd45f7c89 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|52116014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?oXgsbyDNV1nHZLw+0mWCJ3gZU2Q1pJvLX6QIUolOZqhoX8y5S/IFejIWp+p6?= =?us-ascii?Q?xYy8N1qDuV4joRhv6OPm4mG100t72eyj1P4T33dswR9JCxyCIEY2w2dy8ER7?= =?us-ascii?Q?qjWFbvs8qOhS327xf6sru8MfJuuf+3StxxrD5XtarzY0ulxDuwH7J0GFthTG?= =?us-ascii?Q?VO6ZxA8io2o7hAmYiBJ53plYY5XNQZTeZETzAA36R12OtaZuJREvAStWe5/3?= =?us-ascii?Q?35UBakTr+Cx6xf8717jvfAJ0cvkZJ6b2sy+l41lq45mYGo2EFeavlSzhcvl2?= =?us-ascii?Q?8pL/GKhJfYyoVIezuqhGqnE2Ubb3CF8k8z61BmcE7DFtxL+/YrB0svfu+xi9?= =?us-ascii?Q?ucHS8tjrbmLKman7Kvq+8McRGTKtvSz1ptuYVYH7UJ8uYBxI2VLJ7+SINsCi?= =?us-ascii?Q?oQ9vLD4fT0AqE2Ci2WinYrHzSVLpZphjAjuML5g9oIhehWMlQoylvQXQIrn/?= =?us-ascii?Q?USeSaWbSVF5Zfy59AFMVpaCR2VGBfaLOGBHb9h2UgLtx89Wsexh7vOxqiM3I?= =?us-ascii?Q?ecWNZR2CR7ymU9bk7+wNA+RVUqF8qQyhX65wWI2e2uHv5E+Gz2OKxQvm3EOe?= =?us-ascii?Q?MkG9bEnkBRRn3qYMsCbXhyDtXXzHhizG3PQbUrRQglZzITkAdB3HkqE1YtnL?= =?us-ascii?Q?XO1wvJLkZBIobE9237A804cITiz10t4uSFYrTG4TuBzawqRVPcHwchIT7Fgj?= =?us-ascii?Q?XRJsKnjBJEB2WlkthLSo98qeiQXNEirJ+PWu7j//AKvJf7vyP/b3mEeG/Yft?= =?us-ascii?Q?XccIYv6JPnUc8nOMFmQGNFPbXscHSuvgKcIaK9xwh/aXEx7UQJHZ4ARXlR07?= =?us-ascii?Q?560a/6zqy7dJcwHIRc2R0ySZLvVf8JTJN46jxfwK0Vj0zl4cGTAL4d6agrcG?= =?us-ascii?Q?IHEUkzVek66PgWmDUkJOTDL482KB//5ikrmBpvfkG32z2MWXm5Y12vGuii8t?= =?us-ascii?Q?BU2NuGstkS7Hq0VK7qanAXS/5c9CjHSv8w1J4HL69qvVJApf4uNfp8HqvQ6c?= =?us-ascii?Q?svKEJ+98VBD6yVM32XImIZFmiHItikivIbXFmK3oRgrcr0baGeS/LW4W80a4?= =?us-ascii?Q?CSTpG1pxQepRLdPKxWT9Ii3csq3ptYf0jubJbK4IZ2OVPQFBRUjvzI7Ex9e/?= =?us-ascii?Q?cFrYP+jDij0nA3ZRzJSKP4RmPNp8ZEf4cKI5A0sbj7s42kxxHIiWNzMGKI0z?= =?us-ascii?Q?I/TF31UkY9FODPl4UiJ13QzTH5TwluRFoOmZOOMy5Mpnuz8wnm793Xq1zZjN?= =?us-ascii?Q?pZTbA9XZr0jjyHyoXayJ11yYWY0iYLQ5wxgKDGgIEKOJL0+SFQIEZTbdGckp?= =?us-ascii?Q?842STy7eF9d49gYDdOkp/Vo1kjb+lw605l0iyN4gL0znDQ=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)(366016)(52116014)(376014)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uar1pQg8XIIzm0IGy4pAmzmuh8iZZepcyiKMooxKXNo58Nbh8/RTlfzgrCha?= =?us-ascii?Q?JVNj27KEROoAn6vkqvfmQasA6aE9TE/OD16yC8txIkSe0TPng8+qYlulDeFg?= =?us-ascii?Q?zkLcyao7K3hRfBKwhsQeonkaih/rvI0OyvlLHzGvon1Rj9vX0sSrHbueZgZR?= =?us-ascii?Q?/GjGGpC4RYX9yU2ew7p3xqkaVggLDNaB1pYnAziYPKQk9/Jzj8t7bzPmIa50?= =?us-ascii?Q?e7Z/xe06jYMJe5B8gc4d/MjYb3ayKsp4g185MSgkD1YZ6Xf01N1xpR/7ycXK?= =?us-ascii?Q?dakhnVkXqhvaJfs12U85ypBmiLC6+/QhRNPZvMShjDIVpNL60B+xdyvwIbO/?= =?us-ascii?Q?VnEs3fBzw4Vij3QkSkJHG9kXvnKFVuAB3v0fwYXApBmK0fHRzjuDczeEFS0A?= =?us-ascii?Q?oLZkC+XAGenVtyCkJbjWoLXQaMDesuZlaD25aQEK6AMfErMCQFBeIiUXp4Uy?= =?us-ascii?Q?02qbW0675/6k/JUWLTswGyEnQ+2B9debsOnrc4wAyp1WfUiEprrCrxZUJrJU?= =?us-ascii?Q?71PyErWfSC5Un8miTZhy9vDAfDly1kdW1N+HlIK9k9Y7wRaceBR5At+E/9C3?= =?us-ascii?Q?wuxHjh3CLeK7ad2TLVmlUrUkDzMGt/+Imj4i3lqapUq//7nfekAIXhubP363?= =?us-ascii?Q?yKgv7D+UQv6AC06VmebKnrLeZg0Wo3VDhE8DMJHKlWlxUaMvEOAnKoIwjQmC?= =?us-ascii?Q?PtO2ut6Jm7SaTi7SWcEQAs8vgIDyaLRLVKkNeEj6dVS8XLVJLxpzGC7NbvMX?= =?us-ascii?Q?HxtwVqT11Z+pDP5CU9ZrTt8LKOJgi8c7vdqcWb1dQZjx8JAjD3VNfzvqPdjy?= =?us-ascii?Q?dw3AJMM7N7b7ZUFKYO6e3pG/nHTe80Se7ztEF9Fax5RakOt9hBhM1yNBeGRf?= =?us-ascii?Q?4A9sqKj7tp2FFap+ipdRf6/1lgfrgG7PqYCIcG/QMhTYQ/bo2OldxWFEX0b2?= =?us-ascii?Q?s3o1FxhZ7ohAPRWjwFWo67POm8yK+vv04xKMPU7XB4RNJNmMmF0tE8JHlkU7?= =?us-ascii?Q?3wUnGgLJMT2b3vPTkAI4Sqzb+aCo+UcC9Lyu+id64Bkkl4SMEjqNPZsCQiHa?= =?us-ascii?Q?Irf6/DYsjN205hYLiBZrMVnqs9ZKEhuMBfr6uE6nowLWIO9DvjVoD7Jn0F9R?= =?us-ascii?Q?LzSkWapJ20BS3PlGswbwd63C0wtK1Utrt2UvbtlhYYjfbS+L3D08cgIZuSSl?= =?us-ascii?Q?1vUHEPxHNcAYcDV8DI5O7W3wELo/7g3MnuxCVC2LE5ZOnJijmecMD9o31Npb?= =?us-ascii?Q?VVafXJbOMsMdL7K7UJZSrD9YZUDMM4Q+Cp3YyjMqb0qplca+4Ay5todfDRbD?= =?us-ascii?Q?oDL1mHBeaaruWO944/IQwEtYW95aPKAYUhhqI4x9X+aM/5EeUAt/5s+gXCsg?= =?us-ascii?Q?xdGd+qe6WoUNg7OTns779hCmeqeqmWoJXUt1kC8fNc7doMajo+EMwJ2yswji?= =?us-ascii?Q?2ef01Hxvt+HDjb0fj4v0oo+yM+0yBMhlfUB3riqw894L6C5gCd1pbaQOQDhC?= =?us-ascii?Q?8cO7EvgLEel2eVfUXDarNp7Q2oDOppLur05KHIh88esIMzAE9rWY6/SVYbg/?= =?us-ascii?Q?ahsMnnVmnFEhLBDGdRo7vG6Atp92idWs9NPprY+Xf7aUYCARtdERIh46Hkhk?= =?us-ascii?Q?hg=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: d4bfa543-3991-4200-08f4-08dcd45f7c89 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2024 01:49:35.7813 (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: 2b5mwDvrmSxw/bAXP08DEtgfY/yNR2r5/KnjdJuBNilcNEfBx/BJzRgd/zLxLilqikoj6wt7fJLvj266uDVWR1XcWPMNbNON1MgmM2p3voc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR13MB6243 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 | 55 +++++++++++++++++++++ app/test-pmd/config.c | 19 +++++++ app/test-pmd/testpmd.h | 1 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 7 +++ 4 files changed, 82 insertions(+) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 51c72b0826..9357abb036 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\n" + " 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" @@ -7609,6 +7613,56 @@ 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->led, "led") != 0) + return; + + 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; @@ -13348,6 +13402,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 fb1a1485e2..ab9b99ef0c 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -5385,6 +5385,25 @@ 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\n", port_id); +} + 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 f9dd380ea0..1c416686c5 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -1375,6 +1375,13 @@ Note that this is a high-risk command and its misuse may result in unexpected 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