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 50E174596A; Thu, 12 Sep 2024 08:55:27 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E523A40E16; Thu, 12 Sep 2024 08:55:23 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2129.outbound.protection.outlook.com [40.107.237.129]) by mails.dpdk.org (Postfix) with ESMTP id 8E5D840A6D for ; Thu, 12 Sep 2024 08:55:20 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kyPf2DKg89nvvAarZbtQTqNnWvfZC59EuCPYX6kDE5OzpcC2Dz2FfIB1HhGdiOtZzK+TAGU/tT1F7oqskm7IAhLWWhjK57ds0/j/shMsAGnPKj/loxnRrcnptvpVxiEUhRBlUokRC9lTGfE7iUHxZlhccT5tNpNQUtbIA6rlvfMkCUdh7/TdaGpgeUcNDCqVOEe8DU3rQCHuD7ZRMSHkb4kOcqdziXv/j+WX2XJbrB3v9R+ur0KHQhay8fope2ldKf6/3LVrznVol0eYuV6vHfhEJxVRoihOoa9LKuJfQBYuETkoGg+BZSfOjmrxwZtjKYTjClTYI+WfbXWs4fnHjw== 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=la05x43YIqfJI4MvxMMVzN1geAMfdro0lwKRDlXifdlT/2j3L+z1QK+3UJ8p52OTD73CDzmNA+VTWAX5gr3p7QSo9yqrslC4EIdGAjm097MoveiySsOOjBOBnV2WpdIz+yy22jdCQEl1liRZOPfb1qmtgquMM86O2JdHnJVou7fnKEcb5eqcgYEMieuUH1PG252O01W1RWUUSycYrifOaZjaBJPQ7ZAZlYG4f+cc82Z0a5xKABywhJMIe1PnkdPtZiQM16n13V8Gls33gDn3XH7JdY98i92COQh2Rv/eHiksgP2jb4irbFra8A+rAUqeUwZkYpZIpcQ/lJU/M0KaFw== 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=Wus4XUvRGk0huCIu1kCnLkYBguT1QDSEhg9k2O6VPUQ9ofU4nuTBBc05AbFIJCbyOMvMqgTiin/afnt1AQCAjYs26KmdXbW+I/m3eYQbX9hQFuv85TNhmc4BzU62BQQpsqWB0ww8wW7hw38wICFFQg+dtTeYfghEhf3y/f2b0MY= 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:17 +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:17 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, James Hershaw , Chaoyong He Subject: [PATCH v2 1/2] app/testpmd: add support for setting device EEPROM Date: Thu, 12 Sep 2024 14:54:58 +0800 Message-Id: <20240912065459.2858959-2-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: 0aae969b-2768-4d07-dafd-08dcd2f7dc64 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?ouOmJbsguoTW6PxyCKYs/VY1UldOKihG7FAPUF+CQFKPh4IsA3OgLeX29b47?= =?us-ascii?Q?9HD3Z9ozUzoxkLU0Eqqq2HsjM9UibxN3i6cW1o/CZMMWwgyKmIs+rZfdNoXz?= =?us-ascii?Q?3QsyrUKET3+y+BjeHpKz9OC5ICR53A8sycHn5dq1dS1KrnyCSlyaVvK6t7vd?= =?us-ascii?Q?WMt+yTynmpdPWTO3BfLAFzz9YiqVe3YJiuLSeEez9UySgvqYVW0Ygq+sUfbU?= =?us-ascii?Q?jncM2dMIakAUhv1eHKYvewh+hCroA+zAU1yf2gUTUAyFksdYtxk1UXrhcCpY?= =?us-ascii?Q?xjzLr8Crewtg6a30coFo52BViAEl3cUFBqYWNRgMcbLjWcy72qIk34JS1vMJ?= =?us-ascii?Q?nP1etjTzP9QS+5TSyBxGG/rMSQ87zg5St82sDGL47Q6/stO/yw6kzb/lu7x5?= =?us-ascii?Q?cOKND4vyKuoOWRvhrijqaALLj/jZ8Rjqvsx+oOshLa07gk1kQV1jQnFLPVj5?= =?us-ascii?Q?AzhF3+rYIkXYeLn4FUfthNoNLWLFQFcRk4DzkS+zi9Jqdka2gI2CQDTy49ri?= =?us-ascii?Q?J638Z/ur9M/m5q0IC9G2AprUsKnRj4jYCBIg6M54b+bpL6IVjbC5SQfH4Res?= =?us-ascii?Q?4i6+svKxl1W4j3ukc9JmBypK1yGpXcpnR1CYw4RNxYje+bq60h6wB05FWBR/?= =?us-ascii?Q?cgjzhVLT3IzPWt4b2KR13k5ngL5XQhMAmOzjgXMAHjMp+pFlhRfRvw2NtiYH?= =?us-ascii?Q?buLfGHRc73a9qjUff8P0fipnPdnzmPq8r5YkIIIfNpe6Lu16uu1Bn4E2gl3J?= =?us-ascii?Q?X8l0F9G/0bRhEgcIADmAEyAPSohZYkIDRiktzCR1hJ9y5i8lm9lFMn8BuVFm?= =?us-ascii?Q?XM4qdptSQ7n5RMSsIFfSu+LA65oR22gS/eivyh2/ejm+NB4XzrOQsinQIh+G?= =?us-ascii?Q?KsrTRXvbjBeeyBUUCOcpQbpUUTHglxsnwwjSwowFrTnLRGaBJ3KxQjJnnjZW?= =?us-ascii?Q?1XoILPvA+MyXXfZpcXddA2moulxRJtxOuhvzPxekpK0QhQrySrKwerqu7e6u?= =?us-ascii?Q?1sYIb/LFyams5ind+1kb+v/VoRSFQ7NeOzkSSj7Xh3p467o/fefv/g/dys19?= =?us-ascii?Q?GBDHp5aECoFvYSM8NgEC7is7jqkbuxqn43A1N2CWJOWFQ/LfCRqLhjx7kBlU?= =?us-ascii?Q?gcyqVc6DG1TnesC4Eh0t6WSbtSrAP7NWA+AmNYIhR80c4kYfIPjGOmGzqlnN?= =?us-ascii?Q?8Kl8hY7gZrGOcVG1rPtnYwTu5/dmRDFpWwlsPcnuBRACh9FajOH9g9mpUUv/?= =?us-ascii?Q?qa30FUKFW4EbNHBZmZa2KmneThA6usX48dc600soHG6/qYusxIB7/SK1QQWs?= =?us-ascii?Q?/yhoMwmMkAdp0GES4Wc3iNmPEKzuG8r+U1ssgRr6rinIvj+LM19JIcgV52NO?= =?us-ascii?Q?uwYlF8nCOxyJ4WKVIHFeewAJZCMuIxgtrGmrDd2Zul4hmAxdEw=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?VtXe3m03QHZl0hP7FjlV6770XDfiyohH0EIXiOW0r1w2vqtyWthOo6mmMuxt?= =?us-ascii?Q?Lrbjw6+KXcY0UsR5aQ8vabZlbAmAk2wxyeSXyNkE9sbw0N7A2jB+21LDgisW?= =?us-ascii?Q?T72eJsKHdS7dn3eMUv/cpogI934IOU/Nmdp4geD0mOIxCyYdJc2ZR5nOHiis?= =?us-ascii?Q?7TmF8vCKorVeiUCfntaUalE6FBCgbYVMLsuLFVkoLjs/OxHSG6K6faKs1Bca?= =?us-ascii?Q?TSmJxscxeLC49nZdNJfrSer5zUpruRK+0Y85bmJU1VlOPV5c+/HJmOcNVXfI?= =?us-ascii?Q?y7jpkfpR8a8HpCOQDkpwleiREvcTaP0fuImTmQbGta4en9Ys1S/NxtXvY3Kg?= =?us-ascii?Q?SjFiIW6dvBkM6Tl/j/Hz3YYOSceSITmKlxaWCUfl6vBTfqafueq1Qew9CQvh?= =?us-ascii?Q?hZkRjzdZgMjqU61GLegL8ulLIAe30RduvKDNZspgLttvtTUiuuhpFPjRtVuC?= =?us-ascii?Q?WtDOwclHuSMjXu14TMgIctyNJxvzMgrPZeP/rFOsO5WASfdatX+76b1YJasL?= =?us-ascii?Q?N+0+mqOwbgF3CeK4JZiPP9558DAYYnSqjSzE6TPeCjwboiGUzHZ2P0GbFCCo?= =?us-ascii?Q?BmPEikgiDklPvkQfe7mq/P5ncqGY7KaqoI3Zk8IFRChkeNIMaZ8ZzwXgGH/0?= =?us-ascii?Q?YiJ1g1rrYJk94l8QY1Fgf1qQrBDuhMPwF1krud9HlJS/PGvDz7ymolsNRnjP?= =?us-ascii?Q?61QFSbiBq/afgpnnPOJqu0ANyhQeJA/JISpDBrJ5oUwFKQY45KWUDfo4KLXB?= =?us-ascii?Q?rdQfeYhjYBA+6oRcv9iGpjC8+CowbemBrz+yZvajJqC2H3dpmjTCwhUOYfXN?= =?us-ascii?Q?qruz4sxzmN9pmWN5TAXqJQg/JgTxGhSAvjw0PSug1fU58GV/dlEA9Zjz0I+t?= =?us-ascii?Q?IVMj9qoIvPP3yNeCyxrVNztdEIAH3u8YFps6dJ5dYqIXwGMcbVrRQwqFjFb7?= =?us-ascii?Q?q3lRg5mreTM47m7TRTLBeSDWIMS9jexikCFHg+XNI9AM3t+qVxu8A0w4m+vN?= =?us-ascii?Q?6fQFsmGHJdQ7VxRw5FWb/df5DpVQ4Cqo3/JBW4gxzBCZr7cPWPuiZafxcucr?= =?us-ascii?Q?rVa0Cruhhs4chLGFSnlGXxBLYUiUjEsJcGxdBSiEd1G2PmHv/URz1OCUZrW+?= =?us-ascii?Q?Le9jo+huky2V5En9ebJF4uOdHBT1YBAih/1bjJ1tcmreIZ27K3EbwhqifROL?= =?us-ascii?Q?c0WtZtQRMTvwGZvHP3TVietpXCLOcZbpyVQe3HD1H6qqh+nFl1pzVFkfuY/I?= =?us-ascii?Q?YIEFdVJ+edLH+sqpQ7z8TpRizcltZ+1fmBN4S71pfdnpeBIuXM1GjRK4Ezs5?= =?us-ascii?Q?9LT2XWJHhQC4jBafJHrFqjGfIca4ZzOaRJpfeHjtnT/d7LJ9DOsqCWCXCPEm?= =?us-ascii?Q?ar2uedTKtkb53oc+oZnkTIfYI9nAjiMUVn2P2tdOLb02fFjTTeHcohCmQFvH?= =?us-ascii?Q?MBpq7RSEmh5FdKHroksNGG6Nj6zk+yFUFrHZQF9M2ebHsb8Eo2ShRm4Fopht?= =?us-ascii?Q?702CLGDUb0VZ8AQAtrWjjCUSvRofaPOI2Usjr0lm7RLYTa5aeF+oi4HKamyX?= =?us-ascii?Q?/mrUZFsntJ77xIZ7g9gzvmqOD+6iwOwAuWW7tczu+u9jl8+MhnrwMpEN/ulY?= =?us-ascii?Q?pQ=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0aae969b-2768-4d07-dafd-08dcd2f7dc64 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:17.7688 (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: ceWLrTHCaUEOPUqh7/GF1GaEofpOHJ9pZqYKRzSzY5ZUAV+/blJf0Y1S1HNlRXXTVa7/X/Blp8Y1AyOFGxvteT5jLV0PcBXy5nbfoLwwglQ= 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 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