From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.oneaccess-net.com (mail2.belgium.oneaccess-net.com [91.183.184.101]) by dpdk.org (Postfix) with ESMTP id 716262BA1 for ; Tue, 28 Jun 2016 10:20:04 +0200 (CEST) Received: from [10.0.21.130] (10.0.21.130) by oab1mx2.oneaccess.intra (10.0.24.95) with Microsoft SMTP Server (TLS) id 14.2.347.0; Tue, 28 Jun 2016 10:20:03 +0200 To: Stephen Hemminger References: <5770F822.7070303@oneaccess-net.com> <20160627092334.6131ac4d@xeon-e3> CC: From: John Sucaet Message-ID: <57723332.3000707@oneaccess-net.com> Date: Tue, 28 Jun 2016 10:20:02 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <20160627092334.6131ac4d@xeon-e3> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.0.21.130] Subject: Re: [dpdk-users] Detect LSC capability of dpdk ports X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Jun 2016 08:20:04 -0000 Thanks, Stephen. This function rte_eth_has_link_state was exactly what I was looking for. As it seems interesting to more people, could it be resubmitted outside the patch serie for Hyper-V? Regards John On 27-06-16 18:23, Stephen Hemminger wrote: > On Mon, 27 Jun 2016 11:55:46 +0200 > John Sucaet wrote: > >> Hi, >> >> How can a dpdk application determine if a port has support for lsc, >> before trying to configure it? >> >> Thanks >> >> John > We ended up adding this patch, which never seemed to be accepted upstream. > >From 79060ea428f070f309f577006af43eb4ab74586d Mon Sep 17 00:00:00 2001 > From: Stephen Hemminger > Date: Tue, 3 Feb 2015 17:14:32 -0800 > Subject: [PATCH 1/7] ether: add function to query for link state interrupt > > 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 ++++++++++++ > lib/librte_ether/rte_ether_version.map | 1 + > 3 files changed, 27 insertions(+) > > --- a/lib/librte_ether/rte_ethdev.c > +++ b/lib/librte_ether/rte_ethdev.c > @@ -1091,6 +1091,23 @@ rte_eth_dev_start(uint8_t port_id) > return 0; > } > > +int > +rte_eth_has_link_state(uint8_t port_id) > +{ > + struct rte_eth_dev *dev; > + > + if (!rte_eth_dev_is_valid_port(port_id)) { > + RTE_PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id); > + return 0; > + } > + dev = &rte_eth_devices[port_id]; > + > + if (!dev->driver || !dev->pci_dev) > + return 0; > + > + return (dev->pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_LSC) != 0; > +} > + > void > rte_eth_dev_stop(uint8_t port_id) > { > --- a/lib/librte_ether/rte_ethdev.h > +++ b/lib/librte_ether/rte_ethdev.h > @@ -2149,6 +2149,18 @@ extern void rte_eth_link_get_nowait(uint > 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 > --- a/lib/librte_ether/rte_ether_version.map > +++ b/lib/librte_ether/rte_ether_version.map > @@ -83,6 +83,7 @@ DPDK_2.2 { > rte_eth_dev_wd_timeout_store; > rte_eth_dma_zone_reserve; > rte_eth_driver_register; > + rte_eth_has_link_state; > rte_eth_led_off; > rte_eth_led_on; > rte_eth_link; >