From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C893EA04E1; Tue, 22 Sep 2020 11:13:46 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DDC7B1D905; Tue, 22 Sep 2020 11:13:45 +0200 (CEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50077.outbound.protection.outlook.com [40.107.5.77]) by dpdk.org (Postfix) with ESMTP id 320EF1D5D0 for ; Tue, 22 Sep 2020 11:13:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JKv2sTdyUQODxYCnPnkE2yQ1w2TKWrwTMBZ7SVe37Io=; b=09LJzITXBI2xC7EtiLhprdjhejgm6nVNSKJyCSt9ZPpCOwMVCEjAbATzbqMwK9+jBnMKG1xmjJxNdwBlC+ebpkDKFcpX5fmIiIEv19ilv0itEG/n/Clm0FLJmJfA28L/aW9jaCLiKxanl2yyuQ7/smWtwReIK89qXaWI0y8v8FE= Received: from AM5PR0101CA0012.eurprd01.prod.exchangelabs.com (2603:10a6:206:16::25) by AM6PR08MB4167.eurprd08.prod.outlook.com (2603:10a6:20b:ad::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.13; Tue, 22 Sep 2020 09:13:41 +0000 Received: from AM5EUR03FT044.eop-EUR03.prod.protection.outlook.com (2603:10a6:206:16:cafe::73) by AM5PR0101CA0012.outlook.office365.com (2603:10a6:206:16::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.20 via Frontend Transport; Tue, 22 Sep 2020 09:13:41 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT044.mail.protection.outlook.com (10.152.17.56) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.15 via Frontend Transport; Tue, 22 Sep 2020 09:13:41 +0000 Received: ("Tessian outbound 7fc8f57bdedc:v64"); Tue, 22 Sep 2020 09:13:41 +0000 X-CR-MTA-TID: 64aa7808 Received: from 7f3e85d98c51.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 74C72D26-136E-4E96-B4E1-5E3E2392F51F.1; Tue, 22 Sep 2020 09:13:36 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 7f3e85d98c51.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 22 Sep 2020 09:13:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MLSr8oEjfRXHPTjshC9Df67I2ApJsmDzGUnIMHTy3ybZwgWtJpFI2mEAieS0sbYIvu90DP/ogz1H5jdUL+BeUIPtABj0ZNANmIyHdqXg0GPorH7HA/77wjnIZjO/jajIZgex23saIgBAbYptEtCIKt5RLzX1wYgFzxmleht4uk94QocraBFLcvZbGeDmpzRSbuv0demSbPlwcJ30Ys4ggD9P/48iwFTGNNxkktMEPzUFQA3Rkze5Rlu6zxPZL05eXL5KTAB6VF6BoAUO9Pm7xnp4GwdNXODEG4IGv37+/0rCOFoEvKp79cVlsWyMgc7EaKcZaRh/zWTyR2evbrZpOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JKv2sTdyUQODxYCnPnkE2yQ1w2TKWrwTMBZ7SVe37Io=; b=Fp6nkaNcu7CJzNdDwFEKG0IaV2ut6BOeJvUG4sQc12zwP19u+CSOerNU/hPf33oQQRowE8NiKjJM5Tbi7Wsk9YrUBvAWbqp99p7TUlkmh7nnVUpulrmcyYjjKCkZ1eXQVTMJTrYEt6Hw1ab+sg7MyHUFFXVszG84tub8IilciVoEbi9lKk0mnGZIq5AbJjXXSXpl7gdy1MpbdtUlF+PazNkLqqqfACnYw7zpLLA+3yC7YfwsPA9fkebWnr+lmmyTS+41oSh/IIBTiMJgnxMK4ruShwHC23+1OYKlUwX3gXVDU2VOZGgz/Mhv6gO6chGtrgt3G/tWHJGIyeSitO3g0w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JKv2sTdyUQODxYCnPnkE2yQ1w2TKWrwTMBZ7SVe37Io=; b=09LJzITXBI2xC7EtiLhprdjhejgm6nVNSKJyCSt9ZPpCOwMVCEjAbATzbqMwK9+jBnMKG1xmjJxNdwBlC+ebpkDKFcpX5fmIiIEv19ilv0itEG/n/Clm0FLJmJfA28L/aW9jaCLiKxanl2yyuQ7/smWtwReIK89qXaWI0y8v8FE= Received: from DB7PR08MB3865.eurprd08.prod.outlook.com (2603:10a6:10:74::25) by DB6PR0801MB1717.eurprd08.prod.outlook.com (2603:10a6:4:3c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.14; Tue, 22 Sep 2020 09:13:34 +0000 Received: from DB7PR08MB3865.eurprd08.prod.outlook.com ([fe80::519c:72bd:e189:625b]) by DB7PR08MB3865.eurprd08.prod.outlook.com ([fe80::519c:72bd:e189:625b%7]) with mapi id 15.20.3391.027; Tue, 22 Sep 2020 09:13:33 +0000 From: Phil Yang To: David Liu , "ferruh.yigit@intel.com" CC: "dev@dpdk.org" , "lylavoie@iol.unh.edu" , "thomas@monjalon.net" , nd , nd Thread-Topic: [dpdk-dev] [PATCH] [PATCH V2] testpmd: add eeprom/module eeprom display Thread-Index: AQHWi3beN9gqY87AhU2cWCo0dvRXDqlp9BgAgApuDTA= Date: Tue, 22 Sep 2020 09:13:32 +0000 Message-ID: References: <20200915154208.50383-1-dliu@iol.unh.edu> <20200915172740.55178-1-dliu@iol.unh.edu> In-Reply-To: <20200915172740.55178-1-dliu@iol.unh.edu> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: F58B92AD13A42B4995321CB741209307.0 x-checkrecipientchecked: true Authentication-Results-Original: iol.unh.edu; dkim=none (message not signed) header.d=none;iol.unh.edu; dmarc=none action=none header.from=arm.com; x-originating-ip: [203.126.0.111] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 9108328c-a5d3-4cf1-97ca-08d85ed7cca8 x-ms-traffictypediagnostic: DB6PR0801MB1717:|AM6PR08MB4167: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:9508;OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 9lEK0g7Y/1ucVwvzpDrYEb51iXAmmnHs4vh8GsJ9R48blgttlzx1u6MpGOVO+NSzAB+c8b2+LxdLFCt6cyEMynEF5WcrpG7DrQ0bYUz9ORWNnMBj3HIqSIdj03Bxi2yiRCwUFfYP9jeCUDPmyIsetM9TS/gpuflmfbYw7gzaKWwpkzTWsfePArEt5HJgxF8t7KIom5inwQKCYrELMJEQb9jdTGEaU9v0gAR6XuFhmd1cnENkWWliw2uS5PTYoyK2iOD4qrEfVGOhJgiFvphEvSEfM1oqC7kBIP10CMibxC1wiQPZwlumrDRi5e69LbKAJAMJga8Y+Q9WE26F1iXXqjaPg9GZLJuBk4+zmXflVuQdNYh88IbcWNtDS93ALwWN X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR08MB3865.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(396003)(376002)(136003)(366004)(39860400002)(478600001)(54906003)(110136005)(71200400001)(5660300002)(52536014)(4326008)(33656002)(86362001)(8936002)(26005)(186003)(53546011)(6506007)(7696005)(66556008)(66446008)(76116006)(66946007)(66476007)(316002)(2906002)(64756008)(55016002)(9686003)(83380400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: 8zQWlFH1eCdmzRHMWHLGj7W8qTzO4t1AOU+e/x5BSmswTEDA0tHS7CH3K7WQk+DbvZNxfpwXLbY5peQSvoerCHhXEP6957kjzBZZTbbV+hnQiocH1rp1h1eyPsFwmwpelCkDwIF3MY/I+u9bMNSPDz1kMOHIADhMrdPE8KDB1OtdYeCXzCmAPzJXBm6fCUl+7/bPgTLmJcDTsr/Q1+8PDBL+uypaumcH8kuTtvKY4jhTXApfdUdv9Dr9A76ysPGcsspCDAOGDQVK/CcH+7MY8ck/EHifI5FsDt7ibwDFpK4putk+3lFufZryZiC1PfdxUR0+FNoUGwGMmUdQfaSLuK7XeNpMAK1DuJ2lIxlRC5eiK2Dg/TgTrRbiDdRpuHasaUqBLXl/LmfQUpSb2IwTnYzqLEblvUxVbYDKlhZUxl4DgS9HyMkNKM+aQ5jCYw2f8G0q2o6tzntI/MEn6yMU+IpWo1pDbvgOKXJLPbZUY8LdpjlkU7hRdoTtmi3KGeNCPvOemBS/KH/w21rbGwoDQz3xMintUQYrOqAkihPAsynQNrYldcnizZbARupt8ctAffzhjOHU79S6Y0Vx9rIF8KA+8UL1tltjX9IRVLfaDaNirCjZY4hSq+uoxGI0ozgcNh/zd1XJ+tlpk1NcG7myZg== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1717 Original-Authentication-Results: iol.unh.edu; dkim=none (message not signed) header.d=none;iol.unh.edu; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT044.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 258f701c-8213-4ed6-129f-08d85ed7c7df X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kHL6JZqLf5wo787s1YMnF+w7g+GJ4WHmN0NdSWYijng8Lt9sBQ31A69uKXTOWrSgwT5Kx/VZbqL6XY7GeBEm5EW31LKpH4d4KrsQB24g1zUChpOi3bEkey3SLQJkGpuSml6WM7yBol6l+oa1ld1LoK1zTgxUMIM+go78Ia1L5a9txw0ktCY3rTPhfzYPxefFUgs9dKEAfZ8d9nS/+kED+QNrwhDzsXIf64IKWZGsHJVRcBvotEo/f21+E6fHt2YiKIXYWofBSK10OAvCy+mu9J9vqV+hweHLvsFVIUs4zxrrzUKdsldoeAtZuWReklFw/s+yV8JpguHEKzuNUbvlWBr2cD6L/fsY/8bxeJLys+BOAw7NBLcwOm0zfsRCd/FNfQo4d0ahXJno/FlL3B0Rzg== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(376002)(346002)(136003)(396003)(39850400004)(46966005)(82740400003)(81166007)(82310400003)(53546011)(6506007)(52536014)(356005)(8936002)(316002)(9686003)(5660300002)(83380400001)(7696005)(36906005)(54906003)(70206006)(70586007)(33656002)(55016002)(186003)(47076004)(26005)(478600001)(336012)(110136005)(86362001)(4326008)(2906002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2020 09:13:41.6736 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9108328c-a5d3-4cf1-97ca-08d85ed7cca8 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT044.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4167 Subject: Re: [dpdk-dev] [PATCH] [PATCH V2] testpmd: add eeprom/module eeprom display X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > -----Original Message----- > From: dev On Behalf Of David Liu > Sent: Wednesday, September 16, 2020 1:28 AM > To: ferruh.yigit@intel.com > Cc: dev@dpdk.org; lylavoie@iol.unh.edu; thomas@monjalon.net; David Liu > > Subject: [dpdk-dev] [PATCH] [PATCH V2] testpmd: add eeprom/module > eeprom display >=20 > Add module EEPROM/EEPROM dump command > "show port (module_eeprom|eeprom)" > Commands will dump the content of the EEPROM/module > EEPROM for the selected port. Verified with some popular NICs, it can dump the same info as the Linux eth= tool does. This is supported in examples/ethtool as well. Minor nitpick comments inlined. Thanks, Phil >=20 > Signed-off-by: David Liu > --- > app/test-pmd/cmdline.c | 49 ++++++++ > app/test-pmd/config.c | 118 ++++++++++++++++++++ > app/test-pmd/testpmd.h | 2 + > doc/guides/testpmd_app_ug/testpmd_funcs.rst | 7 ++ > 4 files changed, 176 insertions(+) >=20 > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c > index 0a6ed85f3..8d38de197 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -166,6 +166,9 @@ static void cmd_help_long_parsed(void > *parsed_result, > "show port > (info|stats|summary|xstats|fdir|stat_qmap|dcb_tc|cap) (port_id|all)\n" > " Display information for port_id, or all.\n\n" >=20 > + "show port port_id (module_eeprom|eeprom)\n" > + " Display the module EEPROM or EEPROM > information for port_id.\n\n" > + > "show port X rss reta (size) (mask0,mask1,...)\n" > " Display the rss redirection table entry indicated" > " by masks on port X. size is used to indicate the" > @@ -7682,6 +7685,51 @@ cmdline_parse_inst_t cmd_showdevice =3D { > NULL, > }, > }; > + > +/* *** SHOW MODULE EEPROM/EEPROM port INFO *** */ > +struct cmd_showeeprom_result { > + cmdline_fixed_string_t show; > + cmdline_fixed_string_t port; > + uint16_t portnum; > + cmdline_fixed_string_t type; > +}; > + > +static void cmd_showeeprom_parsed(void *parsed_result, > + __rte_unused struct cmdline *cl, > + __rte_unused void *data) > +{ > + struct cmd_showeeprom_result *res =3D parsed_result; > + > + if (!strcmp(res->type, "eeprom")) > + port_eeprom_display(res->portnum); > + else if (!strcmp(res->type, "module_eeprom")) > + port_module_eeprom_display(res->portnum); > + else > + printf("Unknown argument\n"); > +} > + > +cmdline_parse_token_string_t cmd_showeeprom_show =3D > + TOKEN_STRING_INITIALIZER(struct cmd_showeeprom_result, show, > "show"); > +cmdline_parse_token_string_t cmd_showeeprom_port =3D > + TOKEN_STRING_INITIALIZER(struct cmd_showeeprom_result, port, > "port"); > +cmdline_parse_token_num_t cmd_showeeprom_portnum =3D > + TOKEN_NUM_INITIALIZER(struct cmd_showeeprom_result, > portnum, UINT16); > +cmdline_parse_token_string_t cmd_showeeprom_type =3D > + TOKEN_STRING_INITIALIZER(struct cmd_showeeprom_result, type, > "module_eeprom#eeprom"); > + > +cmdline_parse_inst_t cmd_showeeprom =3D { > + .f =3D cmd_showeeprom_parsed, > + .data =3D NULL, > + .help_str =3D "show port module_eeprom|eeprom", > + .tokens =3D { > + (void *)&cmd_showeeprom_show, > + (void *)&cmd_showeeprom_port, > + (void *)&cmd_showeeprom_portnum, > + (void *)&cmd_showeeprom_type, > + NULL, > + }, > +}; > + > /* *** SHOW QUEUE INFO *** */ > struct cmd_showqueue_result { > cmdline_fixed_string_t show; > @@ -19400,6 +19448,7 @@ cmdline_parse_ctx_t main_ctx[] =3D { > (cmdline_parse_inst_t *)&cmd_load_from_file, > (cmdline_parse_inst_t *)&cmd_showport, > (cmdline_parse_inst_t *)&cmd_showqueue, > + (cmdline_parse_inst_t *)&cmd_showeeprom, > (cmdline_parse_inst_t *)&cmd_showportall, > (cmdline_parse_inst_t *)&cmd_showdevice, > (cmdline_parse_inst_t *)&cmd_showcfg, > diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c > index 30bee3324..6203d27e7 100644 > --- a/app/test-pmd/config.c > +++ b/app/test-pmd/config.c > @@ -50,6 +50,8 @@ > #endif > #include >=20 Remove the blank line above the rte_hexdump.h include statement. > +#include > + > #include "testpmd.h" >=20 > #define ETHDEV_FWVERS_LEN 32 > @@ -783,6 +785,122 @@ port_summary_display(portid_t port_id) > (unsigned int) link.link_speed); > } >=20 > +void > +port_eeprom_display(portid_t port_id) > +{ > + struct rte_dev_eeprom_info einfo; > + int ret; > + if (port_id_is_invalid(port_id, ENABLED_WARN)) { > + print_valid_ports(); > + return; > + } > + > + int len_eeprom =3D rte_eth_dev_get_eeprom_length(port_id); > + if (len_eeprom < 0) { > + switch (len_eeprom) { > + case -ENODEV: > + printf("port index %d invalid\n", port_id); > + break; > + case -ENOTSUP: > + printf("operation not supported by device\n"); > + break; > + case -EIO: > + printf("device is removed\n"); > + break; > + default: > + printf("Unable to get EEPROM: %d\n", len_eeprom); > + break; > + } > + return; > + } > + > + char buf[len_eeprom]; Is GCC-11 happy about this array parameters? [-Warray-parameter] I didn't check. > + einfo.offset =3D 0; > + einfo.length =3D len_eeprom; > + einfo.data =3D buf; > + > + ret =3D rte_eth_dev_get_eeprom(port_id, &einfo); > + if (ret !=3D 0) { > + switch (ret) { > + case -ENODEV: > + printf("port index %d invalid\n", port_id); > + break; > + case -ENOTSUP: > + printf("operation not supported by device\n"); > + break; > + case -EIO: > + printf("device is removed\n"); > + break; > + default: > + printf("Unable to get EEPROM: %d\n", ret); > + break; > + } > + return; > + } > + rte_hexdump(stdout, "hexdump", einfo.data, einfo.length); > + printf("Finish -- Port: %d EEPROM length: %d bytes\n", port_id, > len_eeprom); > +} > + > +void > +port_module_eeprom_display(portid_t port_id) > +{ > + struct rte_eth_dev_module_info minfo; > + struct rte_dev_eeprom_info einfo; > + int ret; > + > + if (port_id_is_invalid(port_id, ENABLED_WARN)) { > + print_valid_ports(); > + return; > + } > + > + > + ret =3D rte_eth_dev_get_module_info(port_id, &minfo); > + if (ret !=3D 0) { > + switch (ret) { > + case -ENODEV: > + printf("port index %d invalid\n", port_id); > + break; > + case -ENOTSUP: > + printf("operation not supported by device\n"); > + break; > + case -EIO: > + printf("device is removed\n"); > + break; > + default: > + printf("Unable to get module EEPROM: %d\n", ret); > + break; > + } > + return; > + } > + > + char buf[minfo.eeprom_len]; Is GCC-11 happy about this array parameters? [-Warray-parameter] I didn't check. > + einfo.offset =3D 0; > + einfo.length =3D minfo.eeprom_len; > + einfo.data =3D buf; > + > + ret =3D rte_eth_dev_get_module_eeprom(port_id, &einfo); > + if (ret !=3D 0) { > + switch (ret) { > + case -ENODEV: > + printf("port index %d invalid\n", port_id); > + break; > + case -ENOTSUP: > + printf("operation not supported by device\n"); > + break; > + case -EIO: > + printf("device is removed\n"); > + break; > + default: > + printf("Unable to get module EEPROM: %d\n", ret); > + break; > + } > + return; > + } > + > + rte_hexdump(stdout, "hexdump", einfo.data, einfo.length); > + printf("Finish -- Port: %d MODULE EEPROM length: %d bytes\n", > port_id, einfo.length); > +} > + > void > port_offload_cap_display(portid_t port_id) > { > diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h > index 25a12b14f..40225bc64 100644 > --- a/app/test-pmd/testpmd.h > +++ b/app/test-pmd/testpmd.h > @@ -697,6 +697,8 @@ void nic_stats_mapping_display(portid_t port_id); > 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_module_eeprom_display(portid_t port_id); > void port_summary_header_display(void); > void port_offload_cap_display(portid_t port_id); > 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 90cf252df..fba8428b7 100644 > --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst > +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst > @@ -218,6 +218,13 @@ For example: > nvgre > vxlan-gpe >=20 > +show port (module_eeprom|eeprom) > +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > + > +Display the module EEPROM/EEPROM informatioon for port_id:: > + > + testpmd> show port (port_id) (module_eeprom|eeprom) > + > show port rss reta > ~~~~~~~~~~~~~~~~~~ >=20 > -- > 2.17.1