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 E2CE44596A; Thu, 12 Sep 2024 08:11:03 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 49F9C40DD0; Thu, 12 Sep 2024 08:10:59 +0200 (CEST) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2090.outbound.protection.outlook.com [40.107.101.90]) by mails.dpdk.org (Postfix) with ESMTP id B71E34025E for ; Thu, 12 Sep 2024 08:10:56 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gI8RKA4bCFsLvrbMRoctJLJG/jRKcNxpdPE7dtLmkpXpc2SvWvWwr7ieNSnoBOCOEHHTeULw2b5mBUOkrT8+X7Cqv+szSlhXYIw9WJ8u2QHGb4ZIv/WwXjdcVeqJhV3/Qz1CcOWIXFljGvB5FKAjrSmxCAZ3oLZeGca8N7eFKtFxhmbqI3eSiWVhm4f8udstwtNamAHWqXOcRZp14LKw2aNAz7R3wMIu5MO0g7hgMKO6IsAoIWdN39IFsdrErZeaxxGDxlA+3IayBUCTiC3IkdnpxRFwZnADR452a6HFK/TrPl8o0X2ExcQR7zDKaLLTgQx7lnzb8Fg89pDfkvsFGw== 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=hBlBBI6TG5LNjgUdxiLaKAKZXBd3USrg+fpriJfUW6k=; b=kn5ohEM00GTgFyONEGvkgpiU5XM6BZlC9nZ1l0sr+y4Zf0ceymOcPYr1pbYwGO7uZkPMQiGblAUpeHjuW2AJLQrD08LXLoks36zqruQ9LXGNZlpqWd1So9kPv8aPhA+pdtIvEhAvRfX81yhXZ8ZZQLEhPkX+n9Sias5cXBwBQL5yQJIPDMSnFQqRW38LJKeU8aJx9C9GBD6a0drcWgevNcXhPdklWEqswrVXlN6l7x4fh1xntb+0x9y0r99plPN0uuo8p7LedehtJsxLTkHIR+ua/PMwNrAiJXWnG3mFmr3pS0c1u0D5uZNK305LYSGjaQ2EFZ8Bb4RqwVspPAv5oQ== 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=hBlBBI6TG5LNjgUdxiLaKAKZXBd3USrg+fpriJfUW6k=; b=tglH/HKmf9bMeti5d1OA2XL2FMSnLzlFtyzXN63VcM4mBKrhU7q8UUiIqLWQriaDtQoni1Nm8mU9jQK8mANqgtAw9pgKhYgmek0ds4QRAbj5deD9aJvnMBrPvnfoqvIH3q6fkB7HefwJJ3j01W5D/VZ9UsO5N8tcR/Llotx/aFw= 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 LV3PR13MB6454.namprd13.prod.outlook.com (2603:10b6:408:19c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7939.25; Thu, 12 Sep 2024 06:10:53 +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:10:53 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, James Hershaw , Chaoyong He Subject: [PATCH 1/2] app/testpmd: add support for setting device EEPROM Date: Thu, 12 Sep 2024 14:10:29 +0800 Message-Id: <20240912061030.2834034-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240912061030.2834034-1-chaoyong.he@corigine.com> References: <20240912061030.2834034-1-chaoyong.he@corigine.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SG2PR04CA0163.apcprd04.prod.outlook.com (2603:1096:4::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_|LV3PR13MB6454:EE_ X-MS-Office365-Filtering-Correlation-Id: e3979920-1cdc-47f4-c425-08dcd2f1a801 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|52116014|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NXLHsA7CrjyztAsL0mIYFORPn2oqLQkZcfGkZQwiC0O5tCmWTBNatZ2lyuNn?= =?us-ascii?Q?cmgMuePIAeTF77JfFfAYjCcIRIK/TUXprmOLCeYNywASHhZlCcwUOLwZmfuv?= =?us-ascii?Q?s9kHFLwRseSCRo8mytH2i+0U2BRYr43trDd3iO8toGc/HxprME57o3UiHeAE?= =?us-ascii?Q?jfXzW/P1v7MaVAGp0rkIDfOlrW+qXTCkG08ocIgMSoT7ry1Wq/Vl6AB5wLyH?= =?us-ascii?Q?3QJ/ILu+aoVllVkngHUaSnZ4duRnLfvTqoP+gdfX0mXC+kRf0NKHIZT2BC49?= =?us-ascii?Q?Ttf6ffIZKJKUFG9dFMlOWvA9lIY1kRD3/Qw1qWWSX0RjWMxrIVW0LwkNiMKe?= =?us-ascii?Q?LrQMxVb6JXaZocyH+902YLV24NemTbS/aHX0zkfpqk9YB6kHSw7zE1YZdbpm?= =?us-ascii?Q?KHqfVMfQMwDdhtZafzijfmEfOT1z9TtDj5PWqf0V5dkyTqOcde+xjHmWvl2y?= =?us-ascii?Q?7u5Fkd75RlYA+EkWyw4ZwEZ5wMMh5fb1VyBqDj5Ms31rT8qqEvyl46vlj5aU?= =?us-ascii?Q?UAFsA7IfsdR+Ry96zX9EoAniO4SbfC3xoUoC8C3zTtlLeTc5DR6aNIQHsNVu?= =?us-ascii?Q?MylI8yKuA9WEM/5RlsmTUdFd67tVrvrZmzmbQBQde5TcJqpsw29YXBIqFHwM?= =?us-ascii?Q?9ezeTWS8o5utN2kn7jL9fF0Y0nS18+DBf7xT3Hdqvggi6S+bQf0ChLnBf+LS?= =?us-ascii?Q?7UU2/tWbU6kPwwPqKnrs65vSyt5dioI3v/SZEUEYn60uIoToBcGzGUhgp8Nb?= =?us-ascii?Q?qhffc+OxlD0grfTYJQcFCrCgwt/fsmgLDkSYUou4BMhiWDRje3niLBusqNoY?= =?us-ascii?Q?GBepYDkEg7HyeBy+u0e3QUzGPGsYBOqbkvkJPVIbo31QLNvxVz23GQT+r5Gf?= =?us-ascii?Q?3qKGMiqAtbArUi1SKP5hnbbgGeqBc7A4xGZEpG272NNI70M0obKlzNkBZyUj?= =?us-ascii?Q?GpF0ySR8yv3OwhuuRY5Qj4mtS9+KuJ0bDYBdDAUEOJMYG2SLhrI9QVZU5x5x?= =?us-ascii?Q?zlZkJYuoo9Me2BX0fVN0EymoEE+F1Xa5Y0UOXL4LeYgtQalAct4XqKu3MFrW?= =?us-ascii?Q?sAik6fXtB1Kk92rMvYrEtwvTjyfImFvLPZKB2i+O01l64ZsEtf1mSFKs2Inj?= =?us-ascii?Q?p2CrD7SCzd3ou2EdXpZhYcaUWCxABLt9fGjyhev/1wFBFea3rTuDzwfCTg7V?= =?us-ascii?Q?SuQk9kDhw4uHf9mz0A8B/8z4qUIdvBZjs7u94moGZ5YuSVQUS+b3gh4PLGYy?= =?us-ascii?Q?wlq/99BDKpvSDcObnrJMQvq+Vr3WhjnDuK5JBDnKH1Y8jPGYo6H17QnVah/2?= =?us-ascii?Q?oybVj3bJfUrLPVHcoo0+Mzt5EDVh2z6/mcBaj0a+n6mOnngZRJCNC9Ed+smP?= =?us-ascii?Q?ALNi+r0lzSOQbJeYov1/nMp9+Pj8uXvbqyMZZ7E9ah19TfUmIg=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)(376014)(1800799024)(52116014)(366016)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ckO3sgZlmjtAVJ0XVFl5se29Z/RVuvH4jdkJaFXsCjIZC3If78tBG6olUcAM?= =?us-ascii?Q?by7ZYzLhF87aDsy30Gn3k9jBeTBvb2R5VjQZLZge/2LXcbg9OrXoiOg5nynq?= =?us-ascii?Q?iGFTPnx6Wor8r78xBGaW1aEUsGTpjuj9w2I6KPIn4miK58iN6/1dveC1pcmQ?= =?us-ascii?Q?seMMLx33hOq1ytCqXOmcVDxRI0cLYSYCHMgoaW7TeCzZ8gMr4gfJ7k//qiUL?= =?us-ascii?Q?CeeMY7bH0600KV1uWbzM4kzoDmLszkvq6nPnGe+Ln4wHVNeYAm9KLU+v2rNC?= =?us-ascii?Q?h1KXVLa2exGHPfAhAG07Y1mMzTrhOcxQiGGr0v0dOrn1aqN3Z/mb2SUdVkH4?= =?us-ascii?Q?/m9VXR747vMhYyWa2ucZfmlILR0aoIDLMjreRLIZDFTUUK3JeADSYfD5uPUv?= =?us-ascii?Q?2oBQebFOem8xbVHz9F0dYJvCY6i7gV6vTFAywEXcmBwZaVRMV2CROFJt0c2N?= =?us-ascii?Q?9+WpIsM1bfJupM8LKLNpmtb0bIREoD6Vqn0Gy0Acv3meSicy4Mg3yfLyhI7Y?= =?us-ascii?Q?GfjNPeys/pKeqXVrfFZ220in7D3eH8mBKShs6vaJw0vzZm6dyXUk4gR4Qw35?= =?us-ascii?Q?J4+iQWRKHnGYaS9tUx/35zypTlbVBgH1xCYn6VFBVijyT8xhMn7I9CZ9Z5j9?= =?us-ascii?Q?wMvpODID1PehtXrmj+qzHc7cco1Ey2aUHUTOm/V++9BDL/9tcBGQIZG3yd/0?= =?us-ascii?Q?z8vA6xpaDOYTyD2yuhnOnt/ViJLpCSCTlhrvyp8mvCCTrB87DuEddspYa0rQ?= =?us-ascii?Q?3lE0sRS0FznfGscC8Dm0gkelfSK5DnUlvvY0cOUAjJgDZV7noz9a7Tu9KT8k?= =?us-ascii?Q?mPy7Yy0cWd4Virzr6Y4XbFof9ie+r+I9BSPnKmRpqploaWDlkMEYqHyNVzet?= =?us-ascii?Q?ZOOUQTqVDLxGp5X/MCcLgUOcvnjuopkSvKqHQ7XVgcu/BYwhXD+wRAcqmRAm?= =?us-ascii?Q?aORn1YUfa4UDC6Da8ZxffHzYv4667iSH4f4emPJ1ZGZ+3Kb+kyOnTsGH/jwc?= =?us-ascii?Q?MZEq9kH43m8NkP89l1uS3Pmm97gZiKckfkND2av16ObNxXOZlUcwIUk6KQZr?= =?us-ascii?Q?9n4VAUz7GvJup8LwoTbpnIe7jn6px4wh6oZAk36d1yDFdRGHmxqh4kZiAezG?= =?us-ascii?Q?ikksDRjyiRuodLVXZFI/jkCmkd+kwkIA0JRmTOveUyqvIYpgme2f+zMkFRk+?= =?us-ascii?Q?NFmOmC05Yf0Ym8iuZCHNQEfBIOgZ9q161YF4FNxRk9xcS2cuNZ2Kf6qipLwm?= =?us-ascii?Q?+37qGLJT/veRClDbLEZv66raBhJ/rac82QfMIKm28LDtgXtQX2qjMX07LYKS?= =?us-ascii?Q?I2QN0exkjUSmfBKby/Mzb6NFvC8pNeb8qdSrrekB2HFokHR/CWU1efWxQTxf?= =?us-ascii?Q?ltg+i33zWMy5iyTMry9pIrMH1U2Lv6eOoq7RguJSo790klJhx6zXhh9TB33K?= =?us-ascii?Q?PtI4Zikimeq9yUNrr3IslULdlEacKO0V3o2iJ8ZiWvK/FP0FoUohEt/IaKXm?= =?us-ascii?Q?Z14RuK4zJRAWmZpdcVb5lSYUI5LwJllsIMVAA2TuIszrUk1pUMdgzsE6uzmW?= =?us-ascii?Q?bzwz86CQn6GdrAZxZl6n+34/CZPCPOBn4mBblw+SFH9MVNcyvMZoUokRo9FP?= =?us-ascii?Q?bg=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3979920-1cdc-47f4-c425-08dcd2f1a801 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:10:52.9038 (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: CZLSRrFbnqzmBUiETgXNdHeeIDvglm4emsDamdjx1+ELpnCQRRbFFymzYQpcEkKSFPdir+TqGSoNDfCCM0pf1gnpZ8Kbz4QANBPAvH38idg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR13MB6454 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 There is currently no means to test the .set_eeprom function callback of a given PMD in drivers/net/. This patch adds functionality to allow a user to set device eeprom from the testpmd cmdline. usage: testpmd> set port eeprom magic value offset - is a decimal - is a hex-as-string with no leading "0x" - is a decimal (this field is optional and defaults to 0 if not specified.) Signed-off-by: James Hershaw Reviewed-by: Chaoyong He --- app/test-pmd/cmdline.c | 106 ++++++++++++++++++++ app/test-pmd/config.c | 66 ++++++++++++ app/test-pmd/testpmd.h | 2 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 11 ++ 4 files changed, 185 insertions(+) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 358319c20a..ebc5a9a361 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -514,6 +514,10 @@ static void cmd_help_long_parsed(void *parsed_result, "set eth-peer (port_id) (peer_addr)\n" " set the peer address for certain port.\n\n" + "set port (port_id) eeprom magic (magic_num)\n" + " value (value) offset (offset)/n" + " Set the device eeprom for certain port.\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" @@ -7488,6 +7492,107 @@ static cmdline_parse_inst_t cmd_set_fwd_eth_peer = { }, }; +/* *** SET PORT EEPROM *** */ +struct cmd_seteeprom_result { + cmdline_fixed_string_t set; + cmdline_fixed_string_t port; + uint16_t portnum; + cmdline_fixed_string_t eeprom; + cmdline_fixed_string_t magic_str; + uint32_t magic; + cmdline_fixed_string_t value; + cmdline_multi_string_t token_str; +}; + +static void cmd_seteeprom_parsed(void *parsed_result, + __rte_unused struct cmdline *cl, + __rte_unused void *data) +{ + char *token; + char *token_str; + uint32_t length; + uint32_t offset = 0; + struct cmd_seteeprom_result *res = parsed_result; + + token_str = res->token_str; + token = strtok_r(token_str, " \f\n\r\t\v", &token_str); + + /* Parse Hex string to Byte data */ + if (strlen(token) % 2 != 0) { + fprintf(stderr, "Bad Argument: %s\n", token); + return; + } + + length = strlen(token)/2; + uint8_t value[length]; + for (int count = 0; count < (int)(length); count++) { + if (sscanf(token, "%2hhx", &value[count]) != 1) { + fprintf(stderr, "Bad Argument: %s\n", token); + return; + } + token += 2; + } + + /* Second token: offset string */ + token = strtok_r(token_str, " \f\n\r\t\v", &token_str); + if (token != NULL) { + if (strcmp(token, "offset") == 0) { + /* Third token: offset */ + char *end; + token = strtok_r(token_str, " \f\n\r\t\v", &token_str); + if (token == NULL) { + fprintf(stderr, "No offset specified\n"); + return; + } + offset = strtoul(token, &end, 10); + + if (offset == 0 && strcmp(end, "") != 0) { + fprintf(stderr, "Bad Argument: %s\n", token); + return; + } + } else { + fprintf(stderr, "Bad Argument: %s\n", token); + return; + } + } + + port_eeprom_set(res->portnum, res->magic, offset, length, value); +} + +static cmdline_parse_token_string_t cmd_seteeprom_set = + TOKEN_STRING_INITIALIZER(struct cmd_seteeprom_result, set, "set"); +static cmdline_parse_token_string_t cmd_seteeprom_port = + TOKEN_STRING_INITIALIZER(struct cmd_seteeprom_result, port, "port"); +static cmdline_parse_token_num_t cmd_seteeprom_portnum = + TOKEN_NUM_INITIALIZER(struct cmd_seteeprom_result, portnum, RTE_UINT16); +static cmdline_parse_token_string_t cmd_seteeprom_eeprom = + TOKEN_STRING_INITIALIZER(struct cmd_seteeprom_result, eeprom, "eeprom"); +static cmdline_parse_token_string_t cmd_seteeprom_magic_str = + TOKEN_STRING_INITIALIZER(struct cmd_seteeprom_result, magic_str, "magic"); +static cmdline_parse_token_num_t cmd_seteeprom_magic = + TOKEN_NUM_INITIALIZER(struct cmd_seteeprom_result, magic, RTE_UINT32); +static cmdline_parse_token_string_t cmd_seteeprom_value = + TOKEN_STRING_INITIALIZER(struct cmd_seteeprom_result, value, "value"); +static cmdline_parse_token_string_t cmd_seteeprom_token_str = + TOKEN_STRING_INITIALIZER(struct cmd_seteeprom_result, token_str, TOKEN_STRING_MULTI); + +static cmdline_parse_inst_t cmd_seteeprom = { + .f = cmd_seteeprom_parsed, + .data = NULL, + .help_str = "set port eeprom magic value offset ", + .tokens = { + (void *)&cmd_seteeprom_set, + (void *)&cmd_seteeprom_port, + (void *)&cmd_seteeprom_portnum, + (void *)&cmd_seteeprom_eeprom, + (void *)&cmd_seteeprom_magic_str, + (void *)&cmd_seteeprom_magic, + (void *)&cmd_seteeprom_value, + (void *)&cmd_seteeprom_token_str, + NULL, + }, +}; + /* *** CONFIGURE QUEUE STATS COUNTER MAPPINGS *** */ struct cmd_set_qmap_result { cmdline_fixed_string_t set; @@ -13153,6 +13258,7 @@ static cmdline_parse_ctx_t builtin_ctx[] = { &cmd_showport, &cmd_showqueue, &cmd_showeeprom, + &cmd_seteeprom, &cmd_showportall, &cmd_representor_info, &cmd_showdevice, diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 6f0beafa27..fb1a1485e2 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -1063,6 +1063,72 @@ port_eeprom_display(portid_t port_id) free(einfo.data); } +void +port_eeprom_set(portid_t port_id, + uint32_t magic, + uint32_t offset, + uint32_t length, + uint8_t *value) +{ + int ret; + int len_eeprom; + struct rte_dev_eeprom_info einfo; + + if (port_id_is_invalid(port_id, ENABLED_WARN)) { + print_valid_ports(); + return; + } + + len_eeprom = rte_eth_dev_get_eeprom_length(port_id); + if (len_eeprom < 0) { + switch (len_eeprom) { + case -ENODEV: + fprintf(stderr, "port index %d invalid\n", port_id); + break; + case -ENOTSUP: + fprintf(stderr, "operation not supported by device\n"); + break; + case -EIO: + fprintf(stderr, "device is removed\n"); + break; + default: + fprintf(stderr, "Unable to get EEPROM: %d\n", + len_eeprom); + break; + } + return; + } + + einfo.data = value; + einfo.magic = magic; + einfo.length = length; + einfo.offset = offset; + + if (einfo.offset + einfo.length > (uint32_t)(len_eeprom)) { + fprintf(stderr, "offset and length exceed capabilities of EEPROM length: %d\n", + len_eeprom); + return; + } + + ret = rte_eth_dev_set_eeprom(port_id, &einfo); + if (ret != 0) { + switch (ret) { + case -ENODEV: + fprintf(stderr, "port index %d invalid\n", port_id); + break; + case -ENOTSUP: + fprintf(stderr, "operation not supported by device\n"); + break; + case -EIO: + fprintf(stderr, "device is removed\n"); + break; + default: + fprintf(stderr, "Unable to get EEPROM: %d\n", ret); + break; + } + } +} + void port_module_eeprom_display(portid_t port_id) { diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index 9facd7f281..1292d1a0a7 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -927,6 +927,8 @@ void device_infos_display(const char *identifier); void port_infos_display(portid_t port_id); void port_summary_display(portid_t port_id); void port_eeprom_display(portid_t port_id); +void port_eeprom_set(portid_t port_id, uint32_t magic, uint32_t offset, + uint32_t length, uint8_t *value); void port_module_eeprom_display(portid_t port_id); void port_summary_header_display(void); void rx_queue_infos_display(portid_t port_idi, uint16_t queue_id); diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index f00ab07605..3aa214ef9f 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -1359,6 +1359,17 @@ Set the forwarding peer address for certain port:: This is equivalent to the ``--eth-peer`` command-line option. +set eeprom +~~~~~~~~~~ + +Write a value to the device eeprom of a port at a specific offset:: + + testpmd> set port (port_id) eeprom magic (magic_num) value (value) offset (offset) + +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-uta ~~~~~~~~~~~~ -- 2.39.1