From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from nbfkord-smmo03.seg.att.com (nbfkord-smmo03.seg.att.com [209.65.160.84]) by dpdk.org (Postfix) with ESMTP id 4647A326C for ; Sun, 8 Jan 2017 07:39:12 +0100 (CET) Received: from unknown [193.34.186.16] (EHLO webmail.solarflare.com) by nbfkord-smmo03.seg.att.com(mxl_mta-7.2.4-7) over TLS secured channel with ESMTP id 09ed1785.0.2302516.00-2253.4700421.nbfkord-smmo03.seg.att.com (envelope-from ); Sun, 08 Jan 2017 06:39:14 +0000 (UTC) X-MXL-Hash: 5871de92325eaf16-1d87180bb002b0adfa0f539d4192bbeb843cf4db Received: from [192.168.38.17] (84.52.89.52) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1044.25; Sun, 8 Jan 2017 06:39:06 +0000 To: Qiming Yang , References: <1483531428-14481-1-git-send-email-qiming.yang@intel.com> <1483848695-44643-1-git-send-email-qiming.yang@intel.com> <1483848695-44643-2-git-send-email-qiming.yang@intel.com> CC: , , From: Andrew Rybchenko Message-ID: <9a37d50f-8f14-b1a7-c960-6e0b8baf0b87@solarflare.com> Date: Sun, 8 Jan 2017 09:38:54 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <1483848695-44643-2-git-send-email-qiming.yang@intel.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [84.52.89.52] X-ClientProxiedBy: ocex03.SolarFlarecom.com (10.20.40.36) To ukex01.SolarFlarecom.com (10.17.10.4) X-TM-AS-Product-Ver: SMEX-11.0.0.1191-8.000.1202-22810.003 X-TM-AS-Result: No--9.163700-0.000000-31 X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-AnalysisOut: [v=2.1 cv=HuVwbhnS c=1 sm=1 tr=0 a=8P+NB+fYZDP74ap4g4d9Kw==] X-AnalysisOut: [:17 a=RB3BGLmKESwA:10 a=N659UExz7-8A:10 a=IgFoBzBjUZAA:10 ] X-AnalysisOut: [a=QyXUC8HyAAAA:8 a=hbMyBGG5XvFEcQL9TTAA:9 a=5qjkFjvG89CQXW] X-AnalysisOut: [5J:21 a=gn4VjczxN8aDB7y4:21 a=pILNOxqGKmIA:10 a=avl4LiGQNo] X-AnalysisOut: [F5OB0DmCJ7:22] X-Spam: [F=0.2000000000; CM=0.500; S=0.200(2015072901)] X-MAIL-FROM: X-SOURCE-IP: [193.34.186.16] Subject: Re: [dpdk-dev] [PATCH v5 1/5] ethdev: add firmware version get 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: Sun, 08 Jan 2017 06:39:14 -0000 On 01/08/2017 07:11 AM, Qiming Yang wrote: > This patch adds a new API 'rte_eth_dev_fw_version_get' for > fetching firmware version by a given device. > > Signed-off-by: Qiming Yang > Acked-by: Remy Horton > --- > v2 changes: > * modified some comment statements. > v3 changes: > * change API, use rte_eth_dev_fw_info_get(uint8_t port_id, > uint32_t *fw_major, uint32_t *fw_minor, uint32_t *fw_patch, > uint32_t *etrack_id) instead of rte_eth_dev_fwver_get(uint8_t port_id, > char *fw_version, int fw_length). > Add statusment in /doc/guides/nics/features/default.ini and > release_17_02.rst. > v4 changes: > * remove deprecation notice, rename API as rte_eth_dev_fw_version_get. > v5 changes: > * change API, use rte_eth_dev_fw_version_get(uint8_t port_id, > char *fw_version, int fw_length). > --- > --- > doc/guides/nics/features/default.ini | 1 + > doc/guides/rel_notes/deprecation.rst | 4 ---- > doc/guides/rel_notes/release_17_02.rst | 3 +++ > lib/librte_ether/rte_ethdev.c | 12 ++++++++++++ > lib/librte_ether/rte_ethdev.h | 20 ++++++++++++++++++++ > lib/librte_ether/rte_ether_version.map | 1 + > 6 files changed, 37 insertions(+), 4 deletions(-) > > diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini > index f1bf9bf..ae40d57 100644 > --- a/doc/guides/nics/features/default.ini > +++ b/doc/guides/nics/features/default.ini > @@ -50,6 +50,7 @@ Timesync = > Basic stats = > Extended stats = > Stats per queue = > +FW version = > EEPROM dump = > Registers dump = > Multiprocess aware = > diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst > index 1438c77..291e03d 100644 > --- a/doc/guides/rel_notes/deprecation.rst > +++ b/doc/guides/rel_notes/deprecation.rst > @@ -30,10 +30,6 @@ Deprecation Notices > ``nb_seg_max`` and ``nb_mtu_seg_max`` providing information about number of > segments limit to be transmitted by device for TSO/non-TSO packets. > > -* In 17.02 ABI change is planned: the ``rte_eth_dev_info`` structure > - will be extended with a new member ``fw_version`` in order to store > - the NIC firmware version. > - > * ethdev: an API change is planned for 17.02 for the function > ``_rte_eth_dev_callback_process``. In 17.02 the function will return an ``int`` > instead of ``void`` and a fourth parameter ``void *ret_param`` will be added. > diff --git a/doc/guides/rel_notes/release_17_02.rst b/doc/guides/rel_notes/release_17_02.rst > index 180af82..260033d 100644 > --- a/doc/guides/rel_notes/release_17_02.rst > +++ b/doc/guides/rel_notes/release_17_02.rst > @@ -52,6 +52,9 @@ New Features > See the :ref:`Generic flow API ` documentation for more > information. > > +* **Added firmware version get API.** > + Added a new function ``rte_eth_dev_fw_version_get()`` to fetch firmware > + version by a given device. > > Resolved Issues > --------------- > diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c > index 280f0db..cb80476 100644 > --- a/lib/librte_ether/rte_ethdev.c > +++ b/lib/librte_ether/rte_ethdev.c > @@ -1586,6 +1586,18 @@ rte_eth_dev_set_rx_queue_stats_mapping(uint8_t port_id, uint16_t rx_queue_id, > } > > void > +rte_eth_dev_fw_version_get(uint8_t port_id, char *fw_version, int fw_length) May be size_t should be used for fw_length? Corresponding argument of the snprintf() has size_t type, sizeof(drvinfo.fw_version) is used as value of the parameter. Also the prototype does not provide a way to communicate that fw_length is insufficient to store firmware version. I'd suggest snprintf()-like return value. It is pretty easy for PMD to provide and convenient for the API function caller to handle. > +{ > + struct rte_eth_dev *dev; > + > + RTE_ETH_VALID_PORTID_OR_RET(port_id); > + dev = &rte_eth_devices[port_id]; > + > + RTE_FUNC_PTR_OR_RET(*dev->dev_ops->fw_version_get); > + (*dev->dev_ops->fw_version_get)(dev, fw_version, fw_length); > +} > + > +void > rte_eth_dev_info_get(uint8_t port_id, struct rte_eth_dev_info *dev_info) > { > struct rte_eth_dev *dev; > diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h > index fb51754..2be31d2 100644 > --- a/lib/librte_ether/rte_ethdev.h > +++ b/lib/librte_ether/rte_ethdev.h > @@ -1150,6 +1150,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 void (*eth_fw_version_get_t)(struct rte_eth_dev *dev, > + char *fw_version, int fw_length); > +/**< @internal Get firmware information of an Ethernet device. */ > + > typedef void (*eth_rxq_info_get_t)(struct rte_eth_dev *dev, > uint16_t rx_queue_id, struct rte_eth_rxq_info *qinfo); > > @@ -1455,6 +1459,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. */ > > @@ -2395,6 +2400,21 @@ 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_length > + * The size of the array pointed by fw_version, which should be > + * large enough to store firmware version of the device. > + */ > +void rte_eth_dev_fw_version_get(uint8_t port_id, > + char *fw_version, int fw_length); > + > +/** > * 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 a021781..0cf94ed 100644 > --- a/lib/librte_ether/rte_ether_version.map > +++ b/lib/librte_ether/rte_ether_version.map > @@ -151,6 +151,7 @@ DPDK_17.02 { > global: > > _rte_eth_dev_reset; > + rte_eth_dev_fw_version_get; > rte_flow_create; > rte_flow_destroy; > rte_flow_flush;