All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Yang, Qiming" <qiming.yang@intel.com>
To: Andrew Rybchenko <arybchenko@solarflare.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Cc: "thomas.monjalon@6wind.com" <thomas.monjalon@6wind.com>,
	"Yigit, Ferruh" <ferruh.yigit@intel.com>
Subject: Re: [PATCH v9 1/5] ethdev: add firmware version get
Date: Mon, 16 Jan 2017 08:51:50 +0000	[thread overview]
Message-ID: <F5DF4F0E3AFEF648ADC1C3C33AD4DBF16EDCC8BF@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <e4b97867-be19-aaed-dbcd-0dc98abc7706@solarflare.com>

Hi, Andrew 
> > diff --git a/lib/librte_ether/rte_ethdev.c
> > b/lib/librte_ether/rte_ethdev.c index 917557a..89cffcf 100644
> > --- a/lib/librte_ether/rte_ethdev.c
> > +++ b/lib/librte_ether/rte_ethdev.c
> > @@ -1588,6 +1588,18 @@
> rte_eth_dev_set_rx_queue_stats_mapping(uint8_t port_id, uint16_t
> rx_queue_id,
> >   			STAT_QMAP_RX);
> >   }
> >
> > +int
> > +rte_eth_dev_fw_version_get(uint8_t port_id, char *fw_version, size_t
> > +fw_size) {
> > +	struct rte_eth_dev *dev;
> > +
> > +	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
> > +	dev = &rte_eth_devices[port_id];
> > +
> > +	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->fw_version_get, -
> ENOTSUP);
> > +	return (*dev->dev_ops->fw_version_get)(dev, fw_version, fw_size);
> 
> I think it would be good to handle difference from snprintf() behaviour here
> and specify that fw_version_get callback has exactly snprintf()-like return
> value.
> It would allow to avoid
> duplicated code in all drivers (adding 1 for terminating null, conversion of
> success value to 0).

But I think it would be better to just keep the way it is. If I handle snpritf() behavior here,
may the function rte_eth_dev_fw_version_get and ops fw_version_get will have different 
definition of return value.

> Also I think warning about insufficient space is not required. It could be
> intentional to call the first time with 0 (or some small) space to get required
> space to be (re)allocated.
> May be debug level message would be useful.

Good advice, when call this function with 0, this function will become a API to get
firmware version size. I think we can remove the warning message here.

> 
> > +}
> > +
> >   void
> >   rte_eth_dev_info_get(uint8_t port_id, struct rte_eth_dev_info
> *dev_info)
> >   {
> > diff --git a/lib/librte_ether/rte_ethdev.h
> > b/lib/librte_ether/rte_ethdev.h index ded43d7..37a55ef 100644
> > --- a/lib/librte_ether/rte_ethdev.h
> > +++ b/lib/librte_ether/rte_ethdev.h
> > @@ -1177,6 +1177,10 @@ typedef uint32_t
> (*eth_rx_queue_count_t)(struct rte_eth_dev *dev,
> >   typedef int (*eth_rx_descriptor_done_t)(void *rxq, uint16_t offset);
> >   /**< @internal Check DD bit of specific RX descriptor */
> >
> > +typedef int (*eth_fw_version_get_t)(struct rte_eth_dev *dev,
> > +				     char *fw_version, size_t fw_size); /**<
> @internal Get
> > +firmware information of an Ethernet device. */
> > +
> 
> If we finally have different return value for
> rte_eth_dev_fw_version_get() and here,
> it would be useful to highlight it here.

If I keep the handle of snprintf() return value in drivers, they will not have different
return here, so the highlight is not necessary.

> >   typedef void (*eth_rxq_info_get_t)(struct rte_eth_dev *dev,
> >   	uint16_t rx_queue_id, struct rte_eth_rxq_info *qinfo);
> >
> > @@ -1459,6 +1463,7 @@ struct eth_dev_ops {
> >   	eth_dev_infos_get_t        dev_infos_get; /**< Get device info. */
> >   	eth_rxq_info_get_t         rxq_info_get; /**< retrieve RX queue
> information. */
> >   	eth_txq_info_get_t         txq_info_get; /**< retrieve TX queue
> information. */
> > +	eth_fw_version_get_t       fw_version_get; /**< Get firmware
> version. */
> >   	eth_dev_supported_ptypes_get_t dev_supported_ptypes_get;
> >   	/**< Get packet types supported and identified by device. */
> >
> > @@ -2396,6 +2401,27 @@ void rte_eth_macaddr_get(uint8_t port_id,
> struct ether_addr *mac_addr);
> >   void rte_eth_dev_info_get(uint8_t port_id, struct rte_eth_dev_info
> > *dev_info);
> >
> >   /**
> > + * Retrieve the firmware version of a device.
> > + *
> > + * @param port_id
> > + *   The port identifier of the device.
> > + * @param fw_version
> > + *   A array pointer to store the firmware version of a device,
> > + *   allocated by caller.
> > + * @param fw_size
> > + *   The size of the array pointed by fw_version, which should be
> > + *   large enough to store firmware version of the device.
> > + * @return
> > + *   - (0) if successful.
> > + *   - (-ENOTSUP) if operation is not supported.
> > + *   - (-ENODEV) if *port_id* invalid.
> > + *   - (>0) if *fw_size* is not enough to store firmware version, return
> > + *          the size of the non truncated string.
> 
> It is OK for me to keep 0 for success here and it is right in this case to include
> terminating null iin the return value if size is insufficient (to cover corner case
> with empty FW version).
> Please, highlight that terminating null is included here. It is the difference
> from snprintf() and it should be 100% clear.
> 
You are right, I'll highlight that the firmware version stored here is include '\0'.

> > + */
> > +int rte_eth_dev_fw_version_get(uint8_t port_id,
> > +			       char *fw_version, size_t fw_size);
> > +
> > +/**
> >    * Retrieve the supported packet types of an Ethernet device.
> >    *
> >    * When a packet type is announced as supported, it *must* be
> > recognized by diff --git a/lib/librte_ether/rte_ether_version.map
> > b/lib/librte_ether/rte_ether_version.map
> > index 0c2859e..c6c9d0d 100644
> > --- a/lib/librte_ether/rte_ether_version.map
> > +++ b/lib/librte_ether/rte_ether_version.map
> > @@ -146,6 +146,7 @@ DPDK_17.02 {
> >   	global:
> >
> >   	_rte_eth_dev_reset;
> > +	rte_eth_dev_fw_version_get;
> >   	rte_flow_create;
> >   	rte_flow_destroy;
> >   	rte_flow_flush;
> 

  reply	other threads:[~2017-01-16  8:51 UTC|newest]

Thread overview: 128+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-17  9:42 [PATCH] e1000: add firmware version get Qiming Yang
2016-11-17  9:42 ` [PATCH 1/5] ethdev: " Qiming Yang
2016-11-17 13:36   ` Thomas Monjalon
2016-11-18  2:10     ` Yang, Qiming
2016-11-18  1:09   ` Remy Horton
2016-11-18  2:18     ` Yang, Qiming
2016-12-06  7:16   ` [PATCH v2 0/5] example/ethtool: add bus info and fw " Qiming Yang
2016-12-06  7:16     ` [PATCH v2 1/5] ethdev: add firmware " Qiming Yang
2016-12-08 11:07       ` Ferruh Yigit
2016-12-12  1:28         ` Yang, Qiming
2016-12-06  7:16     ` [PATCH v2 2/5] net/e1000: " Qiming Yang
2016-12-07  1:16       ` Lu, Wenzhuo
2016-12-06  7:16     ` [PATCH v2 3/5] net/ixgbe: " Qiming Yang
2016-12-06  7:16     ` [PATCH v2 4/5] net/i40e: " Qiming Yang
2016-12-06  7:16     ` [PATCH v2 5/5] ethtool: dispaly bus info and firmware version Qiming Yang
2016-12-23 12:50       ` Ferruh Yigit
2016-12-27 13:06       ` [PATCH v3] " Qiming Yang
2017-01-04  7:51         ` Wu, Jingjing
2017-01-04 12:18         ` [PATCH v4] ethtool: dispaly bus information Qiming Yang
2017-01-04 14:49           ` Mcnamara, John
2017-01-05  1:51             ` Yang, Qiming
2017-02-09 21:32           ` Thomas Monjalon
2016-12-08  8:34     ` [PATCH v2 0/5] example/ethtool: add bus info and fw version get Remy Horton
2016-12-12  1:43       ` Yang, Qiming
2016-12-22 11:07       ` Thomas Monjalon
2016-12-22 14:36         ` Ferruh Yigit
2016-12-22 14:47           ` Thomas Monjalon
2016-12-22 15:05             ` Ferruh Yigit
2016-12-22 15:31               ` Thomas Monjalon
2016-12-23 12:48                 ` Ferruh Yigit
2017-01-05  3:04                 ` Zhang, Helin
2016-12-27 12:30     ` [PATCH v3 0/4] new API 'rte_eth_dev_fw_info_get' Qiming Yang
2016-12-27 12:30       ` [PATCH v3 1/4] ethdev: add firmware information get Qiming Yang
2017-01-02 15:38         ` Thomas Monjalon
     [not found]           ` <F5DF4F0E3AFEF648ADC1C3C33AD4DBF16EDC9515@SHSMSX101.ccr.corp.intel.com>
     [not found]             ` <10603884.vrshqR2O82@xps13>
2017-01-03  9:05               ` Yang, Qiming
2017-01-03 14:49                 ` Ferruh Yigit
2017-01-04  3:33                   ` Yang, Qiming
2017-01-04  7:48                     ` Wu, Jingjing
2017-01-04  8:43                       ` Ferruh Yigit
2017-01-05  1:04                         ` Wu, Jingjing
2017-01-03 14:58         ` Ferruh Yigit
2016-12-27 12:30       ` [PATCH v3 2/4] net/e1000: add firmware version get Qiming Yang
2017-01-03 15:02         ` Ferruh Yigit
2017-01-04  3:14           ` Yang, Qiming
2017-01-04  8:47             ` Ferruh Yigit
2016-12-27 12:30       ` [PATCH v3 3/4] net/ixgbe: " Qiming Yang
2017-01-03 15:04         ` Ferruh Yigit
2017-01-04  2:44           ` Yang, Qiming
2017-01-04  9:06             ` Ferruh Yigit
2017-01-04  9:48               ` Yang, Qiming
2017-01-04 12:01                 ` Ferruh Yigit
2016-12-27 12:30       ` [PATCH v3 4/4] net/i40e: " Qiming Yang
2017-01-04 12:03       ` [PATCH v4 0/5] new API 'rte_eth_dev_fw_version_get' Qiming Yang
2017-01-04 12:03         ` [PATCH v4 1/5] ethdev: add firmware version get Qiming Yang
2017-01-05 13:44           ` Thomas Monjalon
2017-01-08  3:09             ` Yang, Qiming
2017-01-04 12:03         ` [PATCH v4 2/5] net/e1000: " Qiming Yang
2017-01-04 13:59           ` Ferruh Yigit
2017-01-05  1:50             ` Yang, Qiming
2017-01-04 12:03         ` [PATCH v4 3/5] net/ixgbe: " Qiming Yang
2017-01-04 12:03         ` [PATCH v4 4/5] net/i40e: " Qiming Yang
2017-01-04 14:00           ` Ferruh Yigit
2017-01-04 12:03         ` [PATCH v4 5/5] ethtool: dispaly firmware version Qiming Yang
2017-01-04 14:00           ` Ferruh Yigit
2017-01-05  1:31             ` Yang, Qiming
2017-01-06 15:55               ` Remy Horton
2017-01-08  4:11         ` [PATCH v5 0/5] new API 'rte_eth_dev_fw_version_get' Qiming Yang
2017-01-08  4:11           ` [PATCH v5 1/5] ethdev: add firmware version get Qiming Yang
2017-01-08  6:38             ` Andrew Rybchenko
2017-01-08 23:05             ` Stephen Hemminger
2017-01-09  7:16               ` Yang, Qiming
2017-01-09 10:01                 ` Remy Horton
2017-01-09 17:23                   ` Stephen Hemminger
2017-01-08  4:11           ` [PATCH v5 2/5] net/e1000: " Qiming Yang
2017-01-08 23:03             ` Stephen Hemminger
2017-01-09  1:48               ` Yang, Qiming
2017-01-08  4:11           ` [PATCH v5 3/5] net/ixgbe: " Qiming Yang
2017-01-08  4:11           ` [PATCH v5 4/5] net/i40e: " Qiming Yang
2017-01-08 23:08             ` Stephen Hemminger
2017-01-08  4:11           ` [PATCH v5 5/5] ethtool: display firmware version Qiming Yang
2017-01-08 23:11             ` Stephen Hemminger
2017-01-10  9:00           ` [DPDK 1/5] ethdev: add firmware version get Qiming Yang
2017-01-10  9:00             ` [DPDK 2/5] net/e1000: " Qiming Yang
2017-01-10  9:00             ` [DPDK 3/5] net/ixgbe: " Qiming Yang
2017-01-10  9:08           ` [PATCH v6 0/5] new API 'rte_eth_dev_fw_version_get' Qiming Yang
2017-01-10  9:08             ` [PATCH v6 1/5] ethdev: add firmware version get Qiming Yang
2017-01-11  6:41               ` [PATCH v7 0/5] new API 'rte_eth_dev_fw_version_get' Qiming Yang
2017-01-11  6:41                 ` [PATCH v7 1/5] ethdev: add firmware version get Qiming Yang
2017-01-11  6:41                 ` [PATCH v7 2/5] net/e1000: " Qiming Yang
2017-01-11 15:45                   ` Remy Horton
2017-01-12  1:25                     ` Yang, Qiming
2017-01-11  6:41                 ` [PATCH v7 3/5] net/ixgbe: " Qiming Yang
2017-01-11  6:41                 ` [PATCH v7 4/5] net/i40e: " Qiming Yang
2017-01-11  6:41                 ` [PATCH v7 5/5] ethtool: display firmware version Qiming Yang
2017-01-12  6:31                 ` [PATCH v8 0/5] new API 'rte_eth_dev_fw_version_get' Qiming Yang
2017-01-12  6:31                   ` [PATCH v8 1/5] ethdev: add firmware version get Qiming Yang
2017-01-15 20:56                     ` Thomas Monjalon
2017-01-16  5:44                     ` [PATCH v9 0/5] new API 'rte_eth_dev_fw_version_get' Qiming Yang
2017-01-16  5:44                       ` [PATCH v9 1/5] ethdev: add firmware version get Qiming Yang
2017-01-16  7:05                         ` Andrew Rybchenko
2017-01-16  8:51                           ` Yang, Qiming [this message]
2017-01-16  5:44                       ` [PATCH v9 2/5] net/e1000: " Qiming Yang
2017-01-16  5:44                       ` [PATCH v9 3/5] net/ixgbe: " Qiming Yang
2017-01-16  5:44                       ` [PATCH v9 4/5] net/i40e: " Qiming Yang
2017-01-16  5:44                       ` [PATCH v9 5/5] ethtool: display firmware version Qiming Yang
2017-01-16 10:48                       ` [PATCH v10 0/5] new API 'rte_eth_dev_fw_version_get' Qiming Yang
2017-01-16 10:48                         ` [PATCH v10 1/5] ethdev: add firmware version get Qiming Yang
2017-01-16 10:48                         ` [PATCH v10 2/5] net/e1000: " Qiming Yang
2017-01-16 10:48                         ` [PATCH v10 3/5] net/ixgbe: " Qiming Yang
2017-01-16 10:48                         ` [PATCH v10 4/5] net/i40e: " Qiming Yang
2017-01-16 10:48                         ` [PATCH v10 5/5] ethtool: display firmware version Qiming Yang
2017-01-17 21:35                         ` [PATCH v10 0/5] new API 'rte_eth_dev_fw_version_get' Thomas Monjalon
2017-01-12  6:31                   ` [PATCH v8 2/5] net/e1000: add firmware version get Qiming Yang
2017-01-12  6:31                   ` [PATCH v8 3/5] net/ixgbe: " Qiming Yang
2017-01-12  6:31                   ` [PATCH v8 4/5] net/i40e: " Qiming Yang
2017-01-12  6:31                   ` [PATCH v8 5/5] ethtool: display firmware version Qiming Yang
2017-01-10  9:08             ` [PATCH v6 2/5] net/e1000: add firmware version get Qiming Yang
2017-01-10  9:08             ` [PATCH v6 3/5] net/ixgbe: " Qiming Yang
2017-01-10  9:08             ` [PATCH v6 4/5] net/i40e: " Qiming Yang
2017-01-10  9:08             ` [PATCH v6 5/5] ethtool: display firmware version Qiming Yang
2016-11-17  9:42 ` [PATCH] ethtool: dispaly bus info and " Qiming Yang
2016-11-17  9:42 ` [PATCH] i40e: add firmware version get Qiming Yang
2016-11-17  9:42 ` [PATCH] ixgbe: " Qiming Yang
2016-11-17  9:42 ` [PATCH 2/5] e1000: " Qiming Yang
2016-11-17  9:42 ` [PATCH 3/5] ixgbe: " Qiming Yang
2016-11-17  9:42 ` [PATCH 4/5] i40e: " Qiming Yang
2016-11-17  9:42 ` [PATCH 5/5] ethtool: dispaly bus info and firmware version Qiming Yang
2016-11-18  1:10   ` Remy Horton

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=F5DF4F0E3AFEF648ADC1C3C33AD4DBF16EDCC8BF@SHSMSX101.ccr.corp.intel.com \
    --to=qiming.yang@intel.com \
    --cc=arybchenko@solarflare.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=thomas.monjalon@6wind.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.