DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Gaëtan Rivet" <gaetan.rivet@6wind.com>
To: dev@dpdk.org
Cc: Wenzhuo Lu <wenzhuo.lu@intel.com>, Wei Dai <wei.dai@intel.com>,
	Qi Zhang <qi.z.zhang@intel.com>,
	Ferruh Yigit <ferruh.yigit@intel.com>,
	Remy Horton <remy.horton@intel.com>
Subject: Re: [dpdk-dev] [PATCH v1] testpmd: eeprom display
Date: Tue, 18 Sep 2018 13:09:19 +0200	[thread overview]
Message-ID: <20180918110919.47ahzynmdphftd66@bidouze.vm.6wind.com> (raw)
In-Reply-To: <01e0e0ffd6a796a73150588823cf3434aafa7c50.1537261084.git.gaetan.rivet@6wind.com>

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 <id>
> 
> 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 <gaetan.rivet@6wind.com>
> ---
>  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 "
>  		"<port_id>",
>  	.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 <rte_pmd_bnxt.h>
>  #endif
>  #include <rte_gro.h>
> +#include <rte_hexdump.h>
>  #include <cmdline_parse_etheraddr.h>
>  
>  #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

  reply	other threads:[~2018-09-18 11:09 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-18  8:59 Gaetan Rivet
2018-09-18 11:09 ` Gaëtan Rivet [this message]
2018-09-21 15:41 ` Ferruh Yigit
2018-09-21 16:13   ` Gaëtan Rivet
2018-09-21 16:49     ` Ferruh Yigit
2018-10-05 21:58 ` [dpdk-dev] [PATCH v2] testpmd: sfp " Gaetan Rivet
2018-10-08 10:36   ` Iremonger, Bernard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180918110919.47ahzynmdphftd66@bidouze.vm.6wind.com \
    --to=gaetan.rivet@6wind.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=qi.z.zhang@intel.com \
    --cc=remy.horton@intel.com \
    --cc=wei.dai@intel.com \
    --cc=wenzhuo.lu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).