From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by dpdk.org (Postfix) with ESMTP id A4A25378B for ; Tue, 18 Sep 2018 13:09:38 +0200 (CEST) Received: by mail-wr1-f65.google.com with SMTP id z96-v6so1626887wrb.8 for ; Tue, 18 Sep 2018 04:09:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=oW+sb5vhHt8hTYqdqVnmefGi30IUI5YQaVI07KEhHDs=; b=Gkylj1+H+ov4FOEOqTLt6jIecLp3ju7utUFcKXlnXHQwUrmexEco0G9bbfU4oGSQK3 UU5g87lEsAqPixMAs4IdLHyuQ8ipp46HP8YsQDig1Sphmjt1frbEELj0nc0Oo8aJm/BS BwfltZBlpa2A5TfcR7hULp2HF9pQY2vjeFAkCDDbDErWG2ZB89U8i7FZjYwwstmsxJXr 2Btoi3wssY47PActEY3LyW059EAm7UCE5sl1eTue7G0zFb+HLQvlhqA6hd6+kvkya3bX fSGGgdMTuchv7IjcI75lgkQsyPPfZxEBrJBh0j8R1V+xdzIuxlt7fywKyPqqPS4hMyXN HUqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=oW+sb5vhHt8hTYqdqVnmefGi30IUI5YQaVI07KEhHDs=; b=bO8wm6VaTC8gf0TaBW66jAXk+81O1OXMtXg/DJwvL8VEkhwgGOsuzgSRzRexOOAY+3 8ttZRy7I4VM3FSNrF8fcnQRG1m1sOROkHpWdZnR3ctHcodCn4AVLjqkWmTDA3k7dyPwE PJyjIhCsn5r4mGeKODjIK4aDsM7BzahXP/C6RrjQeWEmQ6jXz+3t+o0JkPz3NK3dfeYG sWVmh5KMQDa4cD/ecZwbNtl84uP7Lh4pve2u5G2JagjmCgaZUKvjWFDXO2PokwedKRSK n2/jDA2b1yKJggt/rFZHM2RhS9AZ3unYLsFwZFAxRgYJb+jMn6e1tFUt9lpc9CMGQqVI y+BA== X-Gm-Message-State: APzg51BtpmrnsPy95nnQgUEh/r6TAzj9/o/8SkFH2Sw7CDOLt8eR+8zn O78H+i/FvX5MFAUYWV0jLfrmDNOh0P8= X-Google-Smtp-Source: ANB0Vdb9H1ffKtLfXRy/nyHkB/4vGkShSwnDVQjMYR/Jyw8Y/bEELNkHkIh5ndClopSbRYjDTf32Og== X-Received: by 2002:a5d:608b:: with SMTP id w11-v6mr23930188wrt.193.1537268977719; Tue, 18 Sep 2018 04:09:37 -0700 (PDT) Received: from bidouze.vm.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id u65-v6sm2254880wmd.31.2018.09.18.04.09.36 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 18 Sep 2018 04:09:36 -0700 (PDT) Date: Tue, 18 Sep 2018 13:09:19 +0200 From: =?iso-8859-1?Q?Ga=EBtan?= Rivet To: dev@dpdk.org Cc: Wenzhuo Lu , Wei Dai , Qi Zhang , Ferruh Yigit , Remy Horton Message-ID: <20180918110919.47ahzynmdphftd66@bidouze.vm.6wind.com> References: <01e0e0ffd6a796a73150588823cf3434aafa7c50.1537261084.git.gaetan.rivet@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <01e0e0ffd6a796a73150588823cf3434aafa7c50.1537261084.git.gaetan.rivet@6wind.com> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [dpdk-dev] [PATCH v1] testpmd: 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: , X-List-Received-Date: Tue, 18 Sep 2018 11:09:38 -0000 Hi, I am looking at support on e1000/IGB ports, and I have used this command to verify support. It works for fiber but not for copper. I can see in the get_module_info callback that copper SFPs are not supported. Same thing as the kernel driver. Is it possible to use MDIO for dumping the SFP EEPROM? Alternatively, is I2C available in MGII mode with copper? Thanks, On Tue, Sep 18, 2018 at 10:59:46AM +0200, Gaetan Rivet wrote: > The interactive command > > show port eeprom > > will dump the content of the EEPROM for the selected port. > Dumping eeprom of all ports at once is not supported. > > Signed-off-by: Gaetan Rivet > --- > app/test-pmd/cmdline.c | 9 +++++++-- > app/test-pmd/config.c | 32 ++++++++++++++++++++++++++++++++ > app/test-pmd/testpmd.h | 1 + > 3 files changed, 40 insertions(+), 2 deletions(-) > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c > index a7c0e622a..0801e7e74 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -170,6 +170,9 @@ static void cmd_help_long_parsed(void *parsed_result, > "show port (info|stats|xstats|fdir|stat_qmap|dcb_tc|cap) (port_id|all)\n" > " Display information for port_id, or all.\n\n" > > + "show port eeprom (port_id)\n" > + " Display port EEPROM 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" > @@ -7202,6 +7205,8 @@ static void cmd_showport_parsed(void *parsed_result, > port_dcb_info_display(res->portnum); > else if (!strcmp(res->what, "cap")) > port_offload_cap_display(res->portnum); > + else if (!strcmp(res->what, "eeprom")) > + port_eeprom_display(res->portnum); > } > > cmdline_parse_token_string_t cmd_showport_show = > @@ -7211,7 +7216,7 @@ cmdline_parse_token_string_t cmd_showport_port = > TOKEN_STRING_INITIALIZER(struct cmd_showport_result, port, "port"); > cmdline_parse_token_string_t cmd_showport_what = > TOKEN_STRING_INITIALIZER(struct cmd_showport_result, what, > - "info#stats#xstats#fdir#stat_qmap#dcb_tc#cap"); > + "info#stats#xstats#fdir#stat_qmap#dcb_tc#cap#eeprom"); > cmdline_parse_token_num_t cmd_showport_portnum = > TOKEN_NUM_INITIALIZER(struct cmd_showport_result, portnum, UINT16); > > @@ -7219,7 +7224,7 @@ cmdline_parse_inst_t cmd_showport = { > .f = cmd_showport_parsed, > .data = NULL, > .help_str = "show|clear port " > - "info|stats|xstats|fdir|stat_qmap|dcb_tc|cap " > + "info|stats|xstats|fdir|stat_qmap|dcb_tc|cap|eeprom " > "", > .tokens = { > (void *)&cmd_showport_show, > diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c > index 14ccd6864..af1a7d37a 100644 > --- a/app/test-pmd/config.c > +++ b/app/test-pmd/config.c > @@ -49,6 +49,7 @@ > #include > #endif > #include > +#include > #include > > #include "testpmd.h" > @@ -739,6 +740,37 @@ port_offload_cap_display(portid_t port_id) > } > } > > +void > +port_eeprom_display(portid_t port_id) > +{ > + struct rte_eth_dev_module_info minfo; > + struct rte_dev_eeprom_info einfo; > + char buf[1024]; > + int ret; > + > + if (port_id == (portid_t)RTE_PORT_ALL) > + return; > + > + ret = rte_eth_dev_get_module_info(port_id, &minfo); > + if (ret) { > + printf("Unable to get module info: %d\n", ret); > + return; > + } > + > + einfo.offset = 0; > + einfo.length = minfo.eeprom_len; > + einfo.data = buf; > + > + ret = rte_eth_dev_get_module_eeprom(port_id, &einfo); > + if (ret) { > + printf("Unable to get module EEPROM: %d\n", ret); > + return; > + } > + > + printf("Port %hhu EEPROM:\n", port_id); > + rte_hexdump(stdout, "hexdump", einfo.data, einfo.length); > +} > + > int > port_id_is_invalid(portid_t port_id, enum print_warning warning) > { > diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h > index a1f661472..bf817bdcf 100644 > --- a/app/test-pmd/testpmd.h > +++ b/app/test-pmd/testpmd.h > @@ -595,6 +595,7 @@ void nic_xstats_clear(portid_t port_id); > void nic_stats_mapping_display(portid_t port_id); > void port_infos_display(portid_t port_id); > void port_offload_cap_display(portid_t port_id); > +void port_eeprom_display(portid_t port_id); > void rx_queue_infos_display(portid_t port_idi, uint16_t queue_id); > void tx_queue_infos_display(portid_t port_idi, uint16_t queue_id); > void fwd_lcores_config_display(void); > -- > 2.18.0 > -- Gaëtan Rivet 6WIND