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 1D9F34596A; Thu, 12 Sep 2024 08:55:36 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 895EF40E32; Thu, 12 Sep 2024 08:55:25 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2122.outbound.protection.outlook.com [40.107.244.122]) by mails.dpdk.org (Postfix) with ESMTP id 6D72640E11 for ; Thu, 12 Sep 2024 08:55:22 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CGCtMu0V/1REYYxVrJLxEzIkqvy0qcwPBOwTDidX9N+vPkKwMIFZYdQYuqlIrb7f6JBBQ5V2hc8moZuzpAkoDJB76c2GxXS42YEx3sv7QU8nJuJ3dZXhD0I0xG8UmOTMuIXHXOlyZk/HFNlcVISjXI/LocKfoayZDyfAZ7cCwzmn1CT1PwhjaCCCm3dYxS/9HD7wcUscWAOJTNGn6ZEeWblgvwjLv//krqwESAiG9pN8BTdEnM0XkmgmNAfUHONybcrX1yh3f5pP4/9loD0AdKtY6wxJUh7z+YzANAB6q9nGapbfAAmX/Pkr4JMd7fF/rV7wXFWAexDe8pzBDgkyOw== 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=HUwC6pFSoe2jIcU7Bh7A5rncPoZBookIdVb9BXfJOfo=; b=CkAEu+b2DhsGiEMVWqBVfVSqOI6erDmZ3GjndIBJh7idsGjVdlbxJ8niPjZYu8eREMxx3Dwr2OZ9RuRnjsm4CSp79DL8uxNFhCiv9eLggBoQMrNd088o3wr4IFPqSGfOSO4SNbLG5/uFqfjWTLnWQLURv6a2kQDVTkaBru4LRn6gIXkFI7QUs8EJAdafo1cFVQ6cd6887FbvVHofvtfbh03mjYT4xS7OEQQmONNRy/cNWaJ3F7SW2b6vgxqOXHtpO2Dzidj2zCuLioJKGakyEowvLJzxoLq7E7RmC5+wWEOfYIQB6XGjDdTT7spTR3ms7PcVWujVukqG5NY+l6GDpw== 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=HUwC6pFSoe2jIcU7Bh7A5rncPoZBookIdVb9BXfJOfo=; b=H1PS6u8aesixQUS8HNMnNUDOljCDFoosDwRlDDoW7EbXnWB3sa9dgk69INYa+INRUHJ4GACjbTESFaYRruMj2Y11W5Z07kamCrQPLff4T9wkufaM4yTWtbCzIVSBbhHcc8dspDHAOq224M2Rff+Kv5NWxmq46frFuhOcdZyS3ws= 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 CH3PR13MB6723.namprd13.prod.outlook.com (2603:10b6:610:1e4::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7962.18; Thu, 12 Sep 2024 06:55:20 +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; Thu, 12 Sep 2024 06:55:19 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, James Hershaw , Chaoyong He Subject: [PATCH v2 2/2] app/testpmd: add set dev led on/off command Date: Thu, 12 Sep 2024 14:54:59 +0800 Message-Id: <20240912065459.2858959-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240912065459.2858959-1-chaoyong.he@corigine.com> References: <20240912061030.2834034-1-chaoyong.he@corigine.com> <20240912065459.2858959-1-chaoyong.he@corigine.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SGAP274CA0013.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b6::25) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH3PR13MB6723:EE_ X-MS-Office365-Filtering-Correlation-Id: 771307ef-af73-4233-0340-08dcd2f7dd86 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?anqarnJzcP3FBp8Z+4FkipK5m+dNBjb0qHWwpGPIg2Q0GuprxMkEAfo++pBR?= =?us-ascii?Q?JvYEiL4OG268icYFRNZOcGhfsqC4satpumHjxXm4XJROz0KMOuK9EI58H/2i?= =?us-ascii?Q?x0Vib3J8Zk1JXtSq+ubDq0nieoYH0pYBQ2uPHkuJI7YsD74BzKkH+FalDpCH?= =?us-ascii?Q?EzxrY5wfEtGW1dzzfFTzf+gGal8aUZFWIjnwhjaUud3O6+Lcgk2m1pVc+II0?= =?us-ascii?Q?uEz39OjvQXpwJEM/vtY0TdjFYVh+zcXRmkLODjxGFw9DhYQXE7dN7Hz/t6ks?= =?us-ascii?Q?qUU+Xa/i8PN1Wsv7hebQO5rKV4hwZGxfurqeHHe93I4WuuUH/tsbzE2aqGcc?= =?us-ascii?Q?+unKrrBIf322hp4wRk20o5aWD+C22kw3NhLL3DlweaZeP/Q6mKWxxHbmNvsk?= =?us-ascii?Q?Kqx2b1IAQvft5NJRPH64Ub/9Spo61QfBp01oh8OntBdioElMRHZlvImUO0Aa?= =?us-ascii?Q?rwnH43ZbT7qjzgzg4XzGQuuV85hYXa59+Acf0jZsfZbVLpiZpUcKFVHaCaux?= =?us-ascii?Q?lFoDgeyGKk5DnaNj2BbTuXPocpdhpCfVi1pisdvC6KzD5uV3zH24aDRyolds?= =?us-ascii?Q?EiCuB9OXwkHRLPmtxuo6Wg9SQJQ0ASNiECpcPc+M7qIMe7RGUexPQSjtURFd?= =?us-ascii?Q?TuJcR8D3IBAcnBS8cAaxwyVKT8VFfHuXGWvNFOTOi98/bUBzc9NGLuGP7U+x?= =?us-ascii?Q?NoL5AUXubh7rmAUGWJXNgPny/fWqHXJjxkraX++TsjHVBY93BCGKE1y7WIj7?= =?us-ascii?Q?brzb60OZOq8z0fjlqXiKLOjzT/M6dL0o7+2E1jY+3+wsyBcII8iSmZvrF8l7?= =?us-ascii?Q?OmGRFbm14igMXN7XNy2JQR4+YUyEnlN5u+yhuSXZ+rli3Vdjbpg/28VLpkQu?= =?us-ascii?Q?WW3ypJkuKD+dLu/ZblhZa/gAqxSaKnHO9j3OWAXXIg7yIMphXNAChhizZMWW?= =?us-ascii?Q?tVxtQuJq1B4YmQ4Gmr6bn2qr9PkHyzv1oFsJQ/YqQIb7ioHSUbU7bddoqj9U?= =?us-ascii?Q?7tVIykZsbaUWEZpq4TMIZP6A84QqvvC6/i5dFZSVITUZLpkkxqXt1hjC7lEB?= =?us-ascii?Q?ffEkWY42M8uyxLJ95xkzFsYQ5Q1jjiqLGDqiIkf9x5NDh+vb9HL8oVc2U0VA?= =?us-ascii?Q?j0f2IirO7jxR8PP2pPyJPh4IWiNBwlzu/pXsV1R5jhARTBSgGCs1hWiizUgn?= =?us-ascii?Q?dYD0aSS5tTjEjfpRoA5H236sumK7mMt9DsbLzav3oUiN4YyOo2MTzBYPfEKn?= =?us-ascii?Q?TloJQNFJKrwvYzE20YE1tFovp2hxFIMfJwrLM1fTf7pDmD1SohVDdhGJmuSF?= =?us-ascii?Q?fWSu0/muq+HbApwiDU8qdVFdGzWlM5EyKFBZGQF5f1M+Ji/M2E3PY42G0Ml/?= =?us-ascii?Q?lh5/dfLO4r0yVmb8th93piqYEAMp0unrbbQvpfhLjwqr1L+irg=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?3EvRqkStSfYA2zBCF1xqC9YLc3hKYnLsGzt5KyLsM1879AoXjwBjYTmCsVIu?= =?us-ascii?Q?2OQ+nBohWhfzE16KfogWDmHbRV9uJOydoBL1BXvx1fo8J2yw8x+x2NFdggp6?= =?us-ascii?Q?c4yEWOOr+oHFGJhjkFTocqePLrU++FDhOK0bD+u/VRJQJq9FPt+6msoMmn20?= =?us-ascii?Q?D2vdAlET7EulUhRTX6UBbWGKTWy8DQbys9ol39mUPEEHvSMlgrwQCJcY5/nh?= =?us-ascii?Q?mY8spR8WZIT+NuwMLyYEmd0hrJLLjTTR+bIoUTAoV67LXs5ttQfiR7s9t1px?= =?us-ascii?Q?NhxfOVA5d1OtQJLUUIrPPbx6D4BW4WqiER31aQPfeGyQLEelws2pm8c+hl9e?= =?us-ascii?Q?qYADKaNwQcFIeT0FjK6N6CQn2OxUDyHzUrHj83a6fpn0LCNXUrykq25nRo29?= =?us-ascii?Q?6XkkxwzwitZT7WOFVHPZ8oJYeSFd6HmkTi2IT9y3+PjAgIxbF1GqcgQ6Dr93?= =?us-ascii?Q?MyuctjBIf5QNcjcesKsKVvOmDnWiDh6/E8OHrys+o/tiiptaPueS3g/2Ton3?= =?us-ascii?Q?KdyecGvGiQU9IIQiKZHCmXEPa/Kv2sWtzk6l+uxta8lE4Gs6nTZCFvMaAlYc?= =?us-ascii?Q?u9oIGuu3y0jRXA0cBMVVAq3Qs97HVHmp4TZvakzxsGAOua3dLRi6gd213MKN?= =?us-ascii?Q?M57kpV6djhLrx2ILb4i9FxbOXVkBvt+bktsi1zE56LCPfS4j7+E9S5l023Fq?= =?us-ascii?Q?nlrICKnf07fjI28/IUfVYUtOvkBwS91qFpIyHUYJ0k83lYDxNq0A28PfUzSA?= =?us-ascii?Q?/OHg0eIy2vPE9+95SnP4bxM/wIW9yLhIsif/C4EFg8OpLU6c+BT0//qdNsbR?= =?us-ascii?Q?xEF7mVmgt3SiBvZstMbfVtj9FVCsLaJFsN/ytxztzlWmx84yb3y8vG4Idntv?= =?us-ascii?Q?ippVvvSfb5kmh9tN56cHmOkNY0+TlGV0ezavDZaw0S/2aE9vtz4XrBdnMZeg?= =?us-ascii?Q?Dd2TTYS2V4W9BpZunkXIw1RijdeYmoqzfSbLpIJMU0YHUXn+gYKzLC97COhg?= =?us-ascii?Q?gch2E0tcUz+vnkVJErF+xE7j8MJOta3dr4pwJQ4XAtWLhC6U+ukETSeY7v2v?= =?us-ascii?Q?aS72DXEs6/BGnkrjjS1A0Yx3X0QiBMp6keeNKI7pb1mCoWKswMhCi/pneiT8?= =?us-ascii?Q?Jg7Vhk6G+k7YGKlczlmEgzCTKDsH7cFqseMwY6kyNAnnP41rXw3S5X0c4l9V?= =?us-ascii?Q?zzcxzQM1tm3P19zv8Z2zy+9JhRJyNPcCYerIU3ICAOp7X0qGU1PSifBswHa2?= =?us-ascii?Q?m7HuGZmMeft6uvwVjjA6Wpz3XJuKd2sOa8bKM7TkbX9KLyOAYoq/om2sMB8C?= =?us-ascii?Q?NkqC+yxvXKg+DXWrG4+gdusfk4bf3AOceUMJjZKHWpatmAoAhm22yZXcnRS2?= =?us-ascii?Q?/7OwAopnT434UCPenav41S8y1ZEo6QvM7Ucrq8rxrzBdHrhnVKy8TYgiStjL?= =?us-ascii?Q?7WkPuIdjuxWcoRW8b25Q6rUkryNmhabsMyLryEcWtZZcdw3qDpgsLGX2lIBf?= =?us-ascii?Q?m//vhJiyqONzIlbqb3Ruf1LQeyNwH/MwyywgS5S3ViD7KIFtAChVBgZJN3uB?= =?us-ascii?Q?E9k/i3UuA8o1SZuD4hpekTD8LKtlrNWOW//WH/xLRcSgWwqf8RY51nIcJb70?= =?us-ascii?Q?yg=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 771307ef-af73-4233-0340-08dcd2f7dd86 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2024 06:55:19.6551 (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: JQaiurVdlPS3yLx+omlVrWmeCUxTPc4dOBV+fe/at99Zcyqy7ZwhYRC+Z6gVvLMCjtPsNNRieOe9+Q9wwKrbGHeoeQ4yay+zQeUlc7SG3IM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR13MB6723 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 | 61 +++++++++++++++++++++ app/test-pmd/config.c | 19 +++++++ app/test-pmd/testpmd.h | 1 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 7 +++ 4 files changed, 88 insertions(+) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index ebc5a9a361..3898c125c2 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -518,6 +518,10 @@ static void cmd_help_long_parsed(void *parsed_result, " value (value) offset (offset)/n" " Set the device eeprom for certain port.\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" @@ -7589,6 +7593,62 @@ static cmdline_parse_inst_t cmd_seteeprom = { (void *)&cmd_seteeprom_magic, (void *)&cmd_seteeprom_value, (void *)&cmd_seteeprom_token_str, + NULL, + }, +}; + +/* *** 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 led_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 (test_done == 0) { + fprintf(stderr, "Please stop forwarding first\n"); + return; + } + + if (strcmp(res->led, "led") != 0) + return; + + if (strcmp(res->led_state, "on") == 0) + set_dev_led(res->port_id, true); + else if (strcmp(res->led_state, "off") == 0) + set_dev_led(res->port_id, false); + else + fprintf(stderr, "Invalid option for LED state\n"); +} + +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_led_state = + TOKEN_STRING_INITIALIZER(struct cmd_dev_led_result, led_state, NULL); + +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_led_state, NULL, }, }; @@ -13332,6 +13392,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..9673f9f207 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 %i\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 %i\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 3aa214ef9f..c033b07aa7 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -1370,6 +1370,13 @@ Value should be given in the form of a hex-as-string, with no leading ``0x``. The offset field here is optional, if not specified then the offset will default to 0. +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