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 4B87445A5F; Mon, 30 Sep 2024 00:45:47 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D647F402CB; Mon, 30 Sep 2024 00:45:46 +0200 (CEST) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2055.outbound.protection.outlook.com [40.107.212.55]) by mails.dpdk.org (Postfix) with ESMTP id 737C6402C0 for ; Mon, 30 Sep 2024 00:45:45 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CHajOtn5vpFcrOZZH05u8glKRDnM8a9kaByXZgmNOfbsLlAK4KciFu5/fQnXGRpXKmOdnLh3g/GBdxy/uA4U3rLa9bzkkvHFORQb+DLuUUvwo2Ud8SI/QtyHAoxpPhnmo/1ka5MQbSXQKNFucS/fLdA4DW9kMIr+0cake6oVCCo3HDi9iK7NltiU3rSoPbJwLAPHBR73atUWO05+mDyiUBkHGU+Eh5QgmjcaIBTybMwWLtEKejVYSDZ7TKGPMaeNAiJUZwf3ABKMVBXpO0w1mL99FrIfV9zUZuw3OJZAcTzPMxtlnVJe4yy8/CmVJoRQPJY+pDLuc00L9sPR85HRsQ== 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=dNUqErw0ysVm5r0/mn4y2d8ZfezGqG1DDpUgBURDwNI=; b=OUP5d19FXPitAQGcOuRCVsh/zUlGYoi2h40A+8qHHDabTS56mblOEifgJsnrXGMOEGduvadwsma+hK+TQ+Jzm9aYnUErHha/8HwZqbYFnnrmQKTJTbeJcbCTHpPWwcr12jWJMLIkyIPqYuapqUvwNa+BJcICo4SBY+PblA1D3sE1/bT8WawZd6G99GRPckUgOnxr3lvwuOShsNUULHG4JNCyl97A1UR9t57z8+Az6dzU70m7/HtEdTLKwRR657pA0FGxnVIja/PRHmmtcC7YLmXpfTX50OM1hZSabE0YrG7VrCzP49+JI0OMoOwzg8/LbJnMiFlIjHwsvlyukY7sKA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dNUqErw0ysVm5r0/mn4y2d8ZfezGqG1DDpUgBURDwNI=; b=jID4q5LPF0Qz58qKBTUNeFoVGPxU3v+VWqQPoehVzDwvRZl84cq822MDabJpVp8kZN1SaKriP4QfHksYn/H7nBpDFn1fYxBayIyl/gWapmJ2HtUe4UQgD8BmxuX01KAYcbQwsjgZIfe7PS9oz3fQ3PnIJ4LHWzP2qqIvnrZIHHU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from SJ2PR12MB8830.namprd12.prod.outlook.com (2603:10b6:a03:4d0::9) by CYYPR12MB8940.namprd12.prod.outlook.com (2603:10b6:930:bd::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.26; Sun, 29 Sep 2024 22:45:43 +0000 Received: from SJ2PR12MB8830.namprd12.prod.outlook.com ([fe80::c3eb:df02:eaa9:2055]) by SJ2PR12MB8830.namprd12.prod.outlook.com ([fe80::c3eb:df02:eaa9:2055%4]) with mapi id 15.20.8005.024; Sun, 29 Sep 2024 22:45:43 +0000 Message-ID: Date: Sun, 29 Sep 2024 23:45:36 +0100 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 1/2] app/testpmd: add support for setting device EEPROM To: Chaoyong He , dev@dpdk.org Cc: oss-drivers@corigine.com, James Hershaw References: <20240914014913.2886626-1-chaoyong.he@corigine.com> <20240918023847.2964100-1-chaoyong.he@corigine.com> <20240918023847.2964100-2-chaoyong.he@corigine.com> Content-Language: en-US From: Ferruh Yigit Autocrypt: addr=ferruh.yigit@amd.com; keydata= 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 8Zk= In-Reply-To: <20240918023847.2964100-2-chaoyong.he@corigine.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO3P265CA0032.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:387::15) To SJ2PR12MB8830.namprd12.prod.outlook.com (2603:10b6:a03:4d0::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ2PR12MB8830:EE_|CYYPR12MB8940:EE_ X-MS-Office365-Filtering-Correlation-Id: dfe6f1a1-1a38-4c0d-389b-08dce0d87330 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?N0VPQk9RZzVYb1VhSkxWaFA2bXdjamFqb2RzWUZsWlBrYVYvck9KNnRmcUp3?= =?utf-8?B?VkJONDc4Ui9hNTZqZnhLZ3NxODg5eTZyZGtCVjJiSUJhbTNuS2hjbHh2QmIw?= =?utf-8?B?by9EbXNsRm9NTG5tanMzZEhQS0ZSckF6YW5YbzY3YytDMEsvZGlNM1d0VnZV?= =?utf-8?B?bC8vWGZreHVFSUF6eSszNXZRcDZpdzZLNFZXcEJCVXlmS3dTQnNXcWNpcEJE?= =?utf-8?B?ODZnRXhRTTZIZHZ3ZFJHZlFvaWwrWjlRaENmSzA4R1FtNDNjZy9rR3dEcmdp?= =?utf-8?B?dG9RSllWdHJ3dEp0K1luMHY1dTExMENuVjV2b1ZzVlZyL1VwZjVpdWI4Q2I4?= =?utf-8?B?SWJTTDR3NG5KTFU3ZjYvTVhjcmVKVDNlK3lRaDdRU25kVU5GZU95cWlhczYx?= =?utf-8?B?SHhMMElQWi9NaEtOckxZbXVhM2NCOFpRRnc0c1NxUlBKd0R1ZkVERWlycUNK?= =?utf-8?B?NmZWNkJrejNPY2l5ZnVZZEk1a2VtY3ZCMzkwV0xZdmpXc0NIdC8xQWdPb1Z3?= =?utf-8?B?bGdDM3hCeEJqVVBjR0JVVHBwRXQvZklZNml1dTBscTBBWGpJTDFqY29jNDlz?= =?utf-8?B?NTl6bThKcU0vMG1aOUlDdG16eFphK0p6TEwxV0RncVdDZml5NmtaSDVCT016?= =?utf-8?B?b0ZJcVBZSHdHVlMxV2tlcmFhKzVhOWY2QlZJYkZjSHhSbzNkcDd5cmpGcmZJ?= =?utf-8?B?ZFh4WUZuWS9TRWhKZzV5R2hBNEVxWWF4OVFUUVdnWWN2QnFyd1kzQkVRcnVo?= =?utf-8?B?ckNXZG9KRlZhaWFTMDNQMG9DM0RWeUZ6QkRVcERaaFJSNVZzbmhKeUxVbmQy?= =?utf-8?B?UGtVT0xNTHg4ZUJLMG56TUlndnJVZzkvWUFnei9ZNWoyWk5rRi84UkR1ODNh?= =?utf-8?B?VGN6bnVMMFlZTHNnb2pVb3BraWNZemd6T2JzMVRlZHAvSnRBS0dCMis1WVQ3?= =?utf-8?B?VkxBOUp4RVZ0ZE0xUEoza1JuRFJ0WThQSTJOSzR2cFQ2a1FpNGF3VkVMUEVG?= =?utf-8?B?TW03MTRGTjJHKzVSN1VxZXpBK0V1dVN0UnhXMldSb2p6TjRhaWpkUG5iVGgr?= =?utf-8?B?L2dIbmsxQnI0UldobFNyRWttbU80L3RwOXJuem1TaVoxNkpHcjhha2NvbGNL?= =?utf-8?B?UXNleFlxQ0tEcnFsTDBqU0pZWHlqRFFBUk1PYmNSMjByQzhsVy9qNE0rU1Iz?= =?utf-8?B?eS8vdGxzNmUwSDdFSytnLzNXcnQ0NXhDL2pxMGs2R1dpR3YydHBkYUZaMWpq?= =?utf-8?B?QXF1T1V5K1FqVkt4clRyT29YTXc4aU1WUU4vRVNySkNvV1pxais0Y2tsN1Nk?= =?utf-8?B?VERlQTZ3cXl0cm5mUjdNMSs5NjJEQlRwem9jKzhaRWlmcXA3RFE5dDZmZ2lX?= =?utf-8?B?S1VLejRwR25GNnY1TVp6WEJyRlNVSENDdjJHemd2SDdwdXFtcmJqeFNWTy8w?= =?utf-8?B?OU9sZVQveUE5UFViWmJiajM2TGRmWTJYWnAycUI3cEpKai94QW9EN1FvM2Qy?= =?utf-8?B?WTR3dHFRK1Z1NmRqRlJUUThrYWZPTXRzNVovNEc4TVRDN2VoeHJ6dFRROTFs?= =?utf-8?B?emFBS00wRE9DYmRaU0NhR0dpaHNML0NFY3ROM1ZCcnJ0bFNRcmxHOERiTFBC?= =?utf-8?B?UFVhaGJWNEVJQUwxTTEzTXRtUmRiR1Njb2ZVaTVXWHgrM0ZYc01JUTFBNWoy?= =?utf-8?B?VmdhZTMzaDZXUHkySGdpM2RiM2hHcU9LRFVvZmZWeTUxTTNqRktGVHN4ektQ?= =?utf-8?B?VkZHckkyZEI4b29WdHhzZU5IMkE2OVZORVpZL2hKYkt4ZXRJWG9lMEY3dnJ5?= =?utf-8?B?enBqeStoanZUS3A3ZWlqZz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ2PR12MB8830.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WGVRUmVkdUNNUDJMTWRUUmx5d2o4S3Rtb3IrMU9rYkZMMmtDMEdPN2QvaDR0?= =?utf-8?B?U09SeWM0SXdHRUNFSG9oQ3BISkU0MU9qVEVNLy9tQ01BdCtvY0VXSjZUb2o3?= =?utf-8?B?VHdQMGlkc0lEVkZ3dm1CRHZHcFd0YmdyejgzZ0M0OVBNeGZYdlZ3WEc3UEE5?= =?utf-8?B?cU9nbGRsVzA0RG5TVzZqaWZ4L1phUmo0WFRKd0dFUHFBV2hPQ3hjRWFQNDV6?= =?utf-8?B?RC9yd0FzQzZUUUdMeFNRVzJNME54Q1JrZzJ1SG1XaU5uZ0ZpZVJiYnovTTJO?= =?utf-8?B?UHk2aytycG9Ca3RjSnZYM0Ivd2QzQ09YanpCT0taWmljSWdBM0FMNXBtQmRh?= =?utf-8?B?cXpyMWtsOXlRdENQM2pSZUVzNWhVUEkzb1VxdE5uemFmNlNnOWZnL3paUkU2?= =?utf-8?B?Y1FRYm9FRUJxR0xEdldmRGQvSVcxdUQ0VE1oWEpjWGpsemFRUlBtNWJvMUVq?= =?utf-8?B?UEdLQXJaalRXai8zcHRYL0taQzRRR3JaSHlRQkVhYTVrRHpaUllHUEVPeXB3?= =?utf-8?B?RFlIVytYem12cmNwUm1nNTVZV0ZhdUpwSThCVEkzNWNUL1hwQitVTnBNeTJo?= =?utf-8?B?NGZBaVpJOFVsRVNMWTBBQzdGZGtNRlpuWDR5MlE5M1NoTEtvb2tPb1QydEto?= =?utf-8?B?bjQzM2xhemE4Rld4aFo2ZERtR3BITDRvMGNCbkhmbDJhUTUxVVRWckpRbEpN?= =?utf-8?B?eWlRYnE1V0J0NXVhZC94Wk9wS2RHcG5FTVdtcVRLUGthNkRWOGI1TDNxYVVT?= =?utf-8?B?aUUyQ3I3Z0ZoaTJrbGpJVlBydTBES1VjU1JkcnNWeGZUVFFnOG11UjFHYzZD?= =?utf-8?B?MEtJTXlralloejhENDE1REM2ck8wZEdJUTFYOXZCM3lObWRubjVaRDVVU3pt?= =?utf-8?B?alg5MXZNaFBld2NubG5vQkNPekt2M1pKM2N4M3ZUdmxwZ2dML0N6UWFxc2Nx?= =?utf-8?B?TmxIRk80TFRkTjVxYlpua1c2SnlzWk01UktZSVliUE4xVFNiRDg0ZWpVR0h0?= =?utf-8?B?R3lRZWtuNnI4U2J4bTUySGtHeFAzdWZzY0kzYWU5WXZvejExZmtWaGFmY2Y4?= =?utf-8?B?eDdOVGZ1WmoyeXBjNlJnR3pvdG5EOXh0aVJMZng0YXR2cUxFSmRKTCtTcHlv?= =?utf-8?B?eUk4dW5wckxNYjMxaVUwUzF6TlhPalhNNjY4ZTdFSjBiNyt2RzlIL3JJd1Y1?= =?utf-8?B?RDlwaVV1LzJMaVREclJ6NGl5NzhoUDdTVGdOUjZ5UWxjTG1iSldNdzFiTDJ5?= =?utf-8?B?WmY4YWVycVlSeU12bFVEMWdRdTVHem5qaVlCU21BclpTOEFibkYzTGdrNTZj?= =?utf-8?B?Z0hnNTBtWEZzYVU2TE56WGlCVXNmYUVMMGJIRWtnR2wxN1Zra0ZVU1hWbFAx?= =?utf-8?B?L2c3SlFadG95cEVBdjBkakNpdUdCS0VCVWJZZEc5RXJUTlRleVpvaUpuYjBk?= =?utf-8?B?VDd1LzJScUZsazIzalNubUdqbnFiQTVsZk1BWnc3Skt3cmlvUDRubXc5MVNo?= =?utf-8?B?NjdVOFl6cVhFS3V1ZTRqc3AzVjVCS1FkMUJoa0hVa1VzZmNRa2huQWhkR05z?= =?utf-8?B?ZStuOUlTdVkxODNGL24vQXNMT0ZOd3dnQkZRQXBwSWxGTWg0L3VhaDdSM3ox?= =?utf-8?B?SjJUbm45aWhJaEFIZWJwR2hBUWEzWnFhWlJtYUpIbFJJS3NmVnhZNnhUaStF?= =?utf-8?B?UWFOV1p2dThtc0Q5Qml5RnlEK2QwdVNhM1dBVTVobGNoZGdTZFovcUhoL2Zq?= =?utf-8?B?ZnIxN0dhWWVjMDZFN0JlM1RjOEp3TXhXZDcwWVJsazUzTjBSOTRSU2lHOTFL?= =?utf-8?B?bXo5V05zSnBjb21CMU9rRzMwVjdpTEJWRWFvVWY5UlA3RnNWc3VSN2tyVElx?= =?utf-8?B?anFZdXJSK2NZWnlxR3dzZmFrUlN3dDAwMmV1cm9BeGk2NHVxUnNoc2I4T0or?= =?utf-8?B?eG9Rc2RhYXNwbjR1ekFCVmM0d2R5dzhLNHorQURCWmt3V1hRNWdvZ1V4WTd4?= =?utf-8?B?ZUU5anoxU1A1UXAva2I3TURwS1ZQSUdDcDVRdXpQbUtraGhLR0I1WmJac2lL?= =?utf-8?B?UG9pc2lyd0E1cnNwQ0lSMTNRRHRidVlyZXdMODg4WkNwMGhndE5lMEVMcnpo?= =?utf-8?Q?4lkztrgykxoj3MI4FtiZrXlSI?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: dfe6f1a1-1a38-4c0d-389b-08dce0d87330 X-MS-Exchange-CrossTenant-AuthSource: SJ2PR12MB8830.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2024 22:45:43.2487 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KsLKB1YtOES/e/asIMhkfgzzwf0DypAJ8ioK+Fpl8KVbctAOWldyc3LiSP2aPc5T X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8940 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 On 9/18/2024 3:38 AM, Chaoyong He wrote: > 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 fixed string that is required from the user to > acknowledge the risk involved in using this command and accepting the > reposibility for that. > +1 have a warning for user, but 'confirm' may not be clear enough, what about something around "accept_risk"? s/reposibility/responsibility/ > - 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 | 123 ++++++++++++++++++++ > app/test-pmd/config.c | 39 +++++++ > app/test-pmd/testpmd.h | 2 + > doc/guides/testpmd_app_ug/testpmd_funcs.rst | 18 +++ > 4 files changed, 182 insertions(+) > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c > index 358319c20a..a227d3cdc5 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -514,6 +514,15 @@ 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 (confirm) magic (magic_num)" > + " value (value) offset (offset)\n" > + " Set the device eeprom for certain port.\nNote:\n" > + " This is a high-risk command and its misuse may" > + " result in unexpected behaviour from the NIC.\n" > + " By inserting \"confirm\" into the command, the" > + " user is acknowledging and taking responsibility for" > + " this risk.\n\n" > + > There is another eeprom command above [1], lets put this one below it. Also can you please move the function implementation in similar order. [1] "show port port_id (module_eeprom|eeprom)\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 +7497,119 @@ 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 confirm_str; > + 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) > +{ > + struct cmd_seteeprom_result *res = parsed_result; > + uint32_t offset = 0; > + uint32_t length; > + char *token_str; > + char *token; > + > + 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\nHex string must be in multiples of 2 Bytes\n", > + token); > + return; > + } > + > + length = strlen(token) / 2; > + uint8_t value[length]; > VLA can cause stack overflow, what about dynamic memory allocation. > + for (int count = 0; count < (int)(length); count++) { > + if (sscanf(token, "%2hhx", &value[count]) != 1) { > + fprintf(stderr, "Bad Argument: %s\nValue must be a hex string\n", > + token - (count + 1)); > + 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 */ > + token = strtok_r(token_str, " \f\n\r\t\v", &token_str); > + if (token == NULL) { > + fprintf(stderr, "No offset specified\n"); > + return; > + } > Why not move 'offset' before value, so can use it as res->offset? > + > + char *end; > + 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_confirm_str = > + TOKEN_STRING_INITIALIZER(struct cmd_seteeprom_result, confirm_str, "confirm"); > +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 : Set eeprom value for port_id.\n" > + "Note:\n" > + "This is a high-risk command and its misuse may result in " > + "unexpected behaviour from the NIC.\n" > + "By inserting \"confirm\" into the command, the user is " > + "acknowledging and taking responsibility for this risk.", > + .tokens = { > + (void *)&cmd_seteeprom_set, > + (void *)&cmd_seteeprom_port, > + (void *)&cmd_seteeprom_portnum, > + (void *)&cmd_seteeprom_eeprom, > + (void *)&cmd_seteeprom_confirm_str, > + (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 +13275,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..73549b2b57 100644 > --- a/app/test-pmd/config.c > +++ b/app/test-pmd/config.c > @@ -1063,6 +1063,45 @@ 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) > +{ > + struct rte_dev_eeprom_info einfo; > + int len_eeprom; > + int ret; > + > + 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) { > + fprintf(stderr, "Unable to get EEPROM length: %s\n", > + rte_strerror(-len_eeprom)); > + 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) > + fprintf(stderr, "Unable to set EEPROM: %s\n", rte_strerror(-ret)); > +} > + > 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..5c33d610ea 100644 > --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst > +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > @@ -1359,6 +1359,24 @@ 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 (confirm) 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. > + > +.. note:: > + > + 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. > + > Similarly, can you please move this around the eeprom display command.