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 530A345AFE; Thu, 10 Oct 2024 08:42:47 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 27DF640612; Thu, 10 Oct 2024 08:42:38 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2108.outbound.protection.outlook.com [40.107.220.108]) by mails.dpdk.org (Postfix) with ESMTP id 4C31F400D6 for ; Thu, 10 Oct 2024 08:42:33 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cHtpEnee9HJM5Nq/fRQXyZtN5Yk6isDvjonvbov6glAp1UQNKjfcQlE/pgO5VRATEd0++nzG62VOxH64U62le2q7lCTHksWCaCoFtozB72yh8SODLkj7mL1zF5loJEuGOiBLM0sxh4sECCj9LTcBZPrTGYLj1+in6yG7DFqUf+0+qY7Gd8yTBVj1uhOGWS5MxIX0ccV8HogFghh3NsRLk0Na6nvB9biFok66fOxzUgkrKYbAILLS6zSYTRqV+aJ1tORUr0hTh9u1oE8GkJjJD8KGbvN39D9TlIsJfqEyIzaf8a/L/46w0zJnusYxHC0kje9LjNH7KpX2U2aazQ86Pw== 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=fBjUITptEAi2P1nOaR4yHr266gVBg5FnpeK7gGl8ioI=; b=LNpuZ2vpb1396OQIWLmIHXjDVzH4bC2wUDfw9U2GiXhu9xjT1VyllcVSyqVtlrKrh+i1ME20PI/4oZnF9wOvzj4BSkdqWcpy0mN3LnpBf3LdTn47zx+WuGcuBDhDV8I+WfETRpE63RvALHf62ghPtRR6jC30MAmUgfxSZrRfi4uLycfg8dxpbiwhy+UCuYptQsc7FMcERCSBHlfhT2TtKq/rd9F7P9Z6rP6Xczkc/04lO0gZE0bMe7x+0y6nl8MPEylm9sc8kARQQ5PDH/Yz5MwNgyMRkI9XZibW9W/XWbVPb9Cc2C6ocKWoZuUWaCXAeuprFTC1P4FzUuoHiYPoXg== 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=fBjUITptEAi2P1nOaR4yHr266gVBg5FnpeK7gGl8ioI=; b=qjd7OJ1aaiPscudzwUfD0UFdoJxe+caqey64rpKgxVQGn9F8CEmcXt53C2tjTUsTQrHmEUpahxfLd82JR8q4MlCgYPyRU4ixJMZGYWo5FNKCwLQ+F5XM+7BK9k+oyZE22fES9yyMkXWpP8VJNvfMDdZLoTdzto8jY59zBsFiitE= 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 PH7PR13MB6092.namprd13.prod.outlook.com (2603:10b6:510:2a5::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Thu, 10 Oct 2024 06:42:31 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833%5]) with mapi id 15.20.8026.020; Thu, 10 Oct 2024 06:42:31 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, James Hershaw , Chaoyong He Subject: [PATCH v5 2/2] app/testpmd: add set dev led on/off command Date: Thu, 10 Oct 2024 14:42:06 +0800 Message-Id: <20241010064206.3527959-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20241010064206.3527959-1-chaoyong.he@corigine.com> References: <20240918023847.2964100-1-chaoyong.he@corigine.com> <20241010064206.3527959-1-chaoyong.he@corigine.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SJ0PR03CA0122.namprd03.prod.outlook.com (2603:10b6:a03:33c::7) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH7PR13MB6092:EE_ X-MS-Office365-Filtering-Correlation-Id: c99d745d-903a-4648-6b78-08dce8f6b733 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|376014|52116014|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?s66SjlLWWD0YFFJrrQjyzLaxy1nRhq2tJ6YjBWw56NATu/4zgZCJGq+8nqVF?= =?us-ascii?Q?fmQHJjk2WaLwW/DZcUPRrGt5pYB9atQitNf6XJ2rslLVk3w1Hw0vk3CBSzgJ?= =?us-ascii?Q?oIwVVnwpAUQd32QEct27iElCUIzc9XNrxGEdkkxoQzW/K7C14I31g0nA1EXu?= =?us-ascii?Q?3gGaFlwTpyWeUHjLAdNkMSnI136mAX5ym5azG4uNg/iQL/n+72j7112Oqpea?= =?us-ascii?Q?bfqC7gZIvAXorp5IUB7mSRjC0/f2dw93nawl8Ep6dQDYAmfJtVYKvMM7/2g0?= =?us-ascii?Q?wUCoCEKVe0ATCbzz7rro5xYBwASUZCOHGP3Xcyh3jfTVOkBIjKOKaGWKYyyX?= =?us-ascii?Q?rAAbyXFJFVg1HQpSDerByTsLVRsU1HbA4iBIiyv/XFNsNm2ozhSYPKIigcb3?= =?us-ascii?Q?dVqovuQU5Nu4pPjPTDb7XyQ15lmHV/d52g4XS/+H6DO1N5M806CbnX/v+2U9?= =?us-ascii?Q?+TAjQtKcKz+mm78Lv9cww5mKPu79zWerVPiwzKzIWVRjuc+Q9Uu/NdRpkQY+?= =?us-ascii?Q?7MHvYDdA0MW8elp9z6L4TQe2N8Q/N02nSvbU7NdTaSfir98DNR052hBrR+vZ?= =?us-ascii?Q?6SRsnpI9Wn+oB8O+hsjN87RM2S2g3IGh8D4QKq8ezUCOwkfsz9tGso6TFGUL?= =?us-ascii?Q?/CStzSuNFIQkDPPL6Ps5+OJuunruWHrreBRXAagR7GCb+2M/b1KRSYP2GpBk?= =?us-ascii?Q?GLo23nHJqBhBewuGp4b+acgmvSsnGh5OyvOgY6os4SsmdonA3kyEMsFTfzH+?= =?us-ascii?Q?9S8PUGFIAGkLlT6NNHPQq8asCT0J20sUTKIhruoVWv4xnO5WXAtj4gyAVMPq?= =?us-ascii?Q?ba8dJCGi7Tkx/VT5bOAahOudzkxTcy9ROpCVvGHPIdIrC8wb5G9Ts8+whZet?= =?us-ascii?Q?IoR5MSS9TCmWxO4T5fe+Ynhi8O87buFJYKWELWzfTe73QeB6OD34KhLb3MCW?= =?us-ascii?Q?+38B9RfPrasrsA/KfgrhjXVLE5TSGCwXz/7vbYsadHEqHUfNNyPp59R9ULJ0?= =?us-ascii?Q?lUJFWKM3wlyLAnUq1NnZdwfxGmX+u/8BV5lrURMkQmOn3C4ImeA67dTenkta?= =?us-ascii?Q?TTEFWbaykRooNEkaatKEsUdtBSXm5Vjww3EMVrRza2ooc+UYWh7AOlYX54TB?= =?us-ascii?Q?BgE7EPEACXidqb/MRs1f5t7jpaqaj//O/j0v/xtKDHCZ5S0zmqA9r8wj1vV0?= =?us-ascii?Q?w6CiIevVxjBN0kMXsTdbzgtpjqEX93pLtYQ515uJFAcabF5iIYbEvyqpAP17?= =?us-ascii?Q?v4OXGImsQB8DEmIAFBMhN6H2q+ThNaXhhZQj5Hyo9nzr2+mlvU2LdL49rV5g?= =?us-ascii?Q?VoEA7BuqlCYh06u0o2/jzC8AvjyBaPbuDpjZvLavTzZwPQ=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)(376014)(52116014)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?B2CJRzMCa4HCY7tUtTSwoW7QN+V7bVilHTGp0stNyYWM9i5QJno13pIBn/+Y?= =?us-ascii?Q?w+WUkeW1dCeTbpbzafvE9Q0Uv27MLmN40HKj+97sQ2REaTtQPpJNiSTEHZHD?= =?us-ascii?Q?c6/cJqWwFa6CgQ4agQudfgtCIsApyEFhvtHcH0zUoHem865GnI1+KGhbmsCI?= =?us-ascii?Q?6mWi59xA8oVY+u8MbVxmny3wYk1yn3rLJ0dz5/Jd90tkcYtWgQNrdTvHGle+?= =?us-ascii?Q?9YAisO34xKvdArQtljxSObDfDUzaLWc4RtpDZ0aJ4gvsTyaz/H3ZytuclASt?= =?us-ascii?Q?OzNx+FeJM6uRXPK6Eqo4fSmyLTvv4hUGeQT0iBtFyxDHMcbPW+qKCyxv/0s6?= =?us-ascii?Q?4sl6oIm0ZubWGA7ZRggP9lK05PLpdXw9hEDU/K+HRH7LAZCaPF0OZbloqI+3?= =?us-ascii?Q?PHR9A+9DdvhOm1X77xWd9Pn5k0Ur1x63yCEhFIHVk2HTnzYjPC03I9J8Saoa?= =?us-ascii?Q?xyA9/JA+N0reAriT50ZqwYgnZ6Bde1iqqepVLkhUXDVM/8uH+9MI28yQz4bi?= =?us-ascii?Q?qEmuUgbwO/sGHyiOHKQ1y8EGQTlzafu5ud0t2EmJmXBNxundHB+9veO7b69J?= =?us-ascii?Q?e/ubGG7Y5f3wKHZkUkrVEYcpLhI8ZYcmWvHL5fJJii9ry8B4YJmCJC3vdd2T?= =?us-ascii?Q?5oockSDnSW2+H/7d1jWhYdsDnZ9G2ulOqsKD8GPGHetOy10hrvjbZNgHKB9y?= =?us-ascii?Q?XiQ9a1+tgWryTTmisaqPiiKAVq/CFwGcDHVGWLLqnPktJ9Uk50idGV+35X4/?= =?us-ascii?Q?2FmTLB4OShrbZl8ek512fal1m7QQ/lUjjmx8xx9PfoAobNyCWdqQvBAkoFtE?= =?us-ascii?Q?6HRQtPFfAy/uWukyQgZONe43IyRoNsO5+VZIPE80diDVaaaL/cfQ/3Ma0X5m?= =?us-ascii?Q?j3rMnAH980bGSQcVGeJ5YNFMl99disJy4gHdaLBENsmMwVRTxprjCRsDmP4i?= =?us-ascii?Q?cPozlGbBh25XkuzCVX268WrSVFcuVvBfwY7KymgtZL4fC5+obBViygasiz1+?= =?us-ascii?Q?CIYI2lkBjAoMEyYJgMTzHKZhWdBJh1pEF3dE0gEDT1Skmnoxjh094L+pXkX7?= =?us-ascii?Q?0xmSwWgKJG7szKVw2OdmOnKk4TgqYk7lJdh5G+cVIko4ergTGNZSVYOxY4sd?= =?us-ascii?Q?GURxQu1E8ZHMcRZ33nZgSm2LFzt67yxtr4OK0CTLgupxazdQHwVCy8RLzFJF?= =?us-ascii?Q?dHcKk7RyTbgPPUO7+k05ymUuzlPnw3MdzsvoGESz4Jg+lNzGmYp/P52LAxKa?= =?us-ascii?Q?8oVSNgGdmAuDBZgtNJI5oBEXlOKZJwi0wJ8AxVVCOWcoYHxPYmjksmP83ZJN?= =?us-ascii?Q?v+Oy5XwQPCxS3pWL0sjY2KZrM9I87t2jI8kqbORv0LAb7AbWw8l8gSwJFMtq?= =?us-ascii?Q?TDNvPoN8CZ23KOwYCsyXho00XpF1tIp3AJn3LqIre2kFmnNGve7TpBuNW6+n?= =?us-ascii?Q?RNZAcB6k6ZF930m1jko1uN/G2pn2tNioGLvZxhohZEh1waPzPcx5s5Pg/5rt?= =?us-ascii?Q?CHSc+oajxLCS8BKjdE840OJN1D/6/WyZmWVr8f7XEOlty4cLjPcVuTGs1Jvl?= =?us-ascii?Q?mpriyQTYemuXHUYsMzEmkf6EtwTf++KvvpYe64rVEPvBfEOUb+H8CXVGXKDb?= =?us-ascii?Q?eQ=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: c99d745d-903a-4648-6b78-08dce8f6b733 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 06:42:31.5815 (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: Sa3PVEp8yE3zzSaQ90jswkEZa1xgR5bo5mFau80QmfNhtX+f82AxXXuMo1soLFfjqCtIsQLTK95C+287YF280G/fDAjBiLuU+/B4mCzTQv0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR13MB6092 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 c917c4e83b..61c46d6394 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -674,6 +674,10 @@ static void cmd_help_long_parsed(void *parsed_result, "(max_thresh) (prob_inv)]\n" " Set congestion management configuration\n\n" + "set port (port_id) led (on|off)\n" + " Set a controllable LED associated with a certain" + " port on or off.\n\n" + , list_pkt_forwarding_modes() ); } @@ -13512,6 +13516,53 @@ static cmdline_parse_inst_t cmd_config_tx_affinity_map = { }, }; +/* *** 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, + }, +}; + /* ******************************************************************************** */ /* list of instructions */ @@ -13755,6 +13806,7 @@ static cmdline_parse_ctx_t builtin_ctx[] = { &cmd_show_port_cman_config, &cmd_set_port_cman_config, &cmd_config_tx_affinity_map, + &cmd_set_dev_led, NULL, }; diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 37f074a69b..88770b4dfc 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -5371,6 +5371,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 56ab7ef1db..84517b0be7 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 eb19e747b5..0228a07701 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -1855,6 +1855,13 @@ during the flow rule creation:: Otherwise the default index ``0`` is used. +set port led +~~~~~~~~~~~~ + +Set a controllable LED associated with a certain port on or off:: + + testpmd> set port (port_id) led (on|off) + Port Functions -------------- -- 2.39.1