From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58]) by dpdk.org (Postfix) with ESMTP id 2B068B43A for ; Thu, 5 Feb 2015 13:39:56 +0100 (CET) Received: from hmsreliant.think-freely.org ([2001:470:8:a08:7aac:c0ff:fec2:933b] helo=localhost) by smtp.tuxdriver.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.63) (envelope-from ) id 1YJLip-0005fP-No; Thu, 05 Feb 2015 07:39:54 -0500 Date: Thu, 5 Feb 2015 07:39:50 -0500 From: Neil Horman To: Stephen Hemminger Message-ID: <20150205123950.GA28355@hmsreliant.think-freely.org> References: <1423098809-21305-1-git-send-email-stephen@networkplumber.org> <1423098809-21305-2-git-send-email-stephen@networkplumber.org> <2d9df6f5729c42a9a2b85a20b7316243@BRMWP-EXMB11.corp.brocade.com> <20150204214907.6527b1b1@urahara> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150204214907.6527b1b1@urahara> User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Score: -2.9 (--) X-Spam-Status: No Cc: "dev@dpdk.org" , KY Srinivasan , Stephen Hemminger Subject: Re: [dpdk-dev] [PATCH 1/7] ether: add function to query for link state interrupt X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Feb 2015 12:39:56 -0000 On Wed, Feb 04, 2015 at 09:49:07PM -0800, Stephen Hemminger wrote: > On Thu, 5 Feb 2015 01:47:37 +0000 > Neil Horman wrote: > > > On Wed, Feb 04, 2015 at 05:13:23PM -0800, Stephen Hemminger wrote: > > > From: Stephen Hemminger > > > > > > Allow application to query whether link state will work. > > > This is also part of abstracting dependency on PCI. > > > > > > Signed-off-by: Stephen Hemminger > > > --- > > > lib/librte_ether/rte_ethdev.c | 14 ++++++++++++++ > > > lib/librte_ether/rte_ethdev.h | 12 ++++++++++++ > > > 2 files changed, 26 insertions(+) > > > > > > diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c > > > index ea3a1fb..4d803d0 100644 > > > --- a/lib/librte_ether/rte_ethdev.c > > > +++ b/lib/librte_ether/rte_ethdev.c > > > @@ -1264,6 +1264,20 @@ rte_eth_link_get_nowait(uint8_t port_id, struct rte_eth_link *eth_link) > > > } > > > } > > > > > > +int > > > +rte_eth_has_link_state(uint8_t port_id) > > > +{ > > > + struct rte_eth_dev *dev; > > > + > > > + if (port_id >= nb_ports) { > > > + PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id); > > > + return 0; > > > + } > > > + dev = &rte_eth_devices[port_id]; > > > + > > > + return (dev->pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_LSC) != 0; > > > +} > > > + > > > void > > > rte_eth_stats_get(uint8_t port_id, struct rte_eth_stats *stats) > > > { > > > diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h > > > index 1200c1c..9d43ca3 100644 > > > --- a/lib/librte_ether/rte_ethdev.h > > > +++ b/lib/librte_ether/rte_ethdev.h > > > @@ -2038,6 +2038,18 @@ extern void rte_eth_link_get_nowait(uint8_t port_id, > > > struct rte_eth_link *link); > > > > > > /** > > > + * Test whether device supports link state interrupt mode. > > > + * > > > + * @param port_id > > > + * The port identifier of the Ethernet device. > > > + * @return > > > + * - (1) if link state interrupt is supported > > > + * - (0) if link state interrupt is not supported > > > + */ > > > +extern int > > > +rte_eth_has_link_state(uint8_t port_id); > > > + > > > +/** > > > * Retrieve the general I/O statistics of an Ethernet device. > > > * > > > * @param port_id > > > -- > > > 2.1.4 > > > > > > > > I think if your intention is to expose this as an application (or other library > > visible api), you'll need to add it to the appropriate version map file for the > > link now. Should just be a single line addition > > > > Regards > > Neil > > > > Will add that after other changes are approved. > Also looking at the map files they seem to have been auto generated > because some symbols are exposed which are unnecessary (example pci_driver_list) It wasn't quite auto generated. It was generated based on what the requisite header files for a library exposed to the various applications that used them. In your example above pci_driver_list is a global public variable, that is referenced by applications that the DPDK ships (in this case the test_pci application). I completely agree that it shouldn't need to be versioned, as it shouldn't be exposed at all, relying instead on accessor functions to reach it, but as such, it is what it is. By versioning it, we at least allow ourselves the option to maintain backwards compatibility if the list type changes or we wish to start hiding the symbol in future versions. Neil >