From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shijith Thotton Subject: Re: [RFC 11/14] liquidio: use _rte_eth_link_update Date: Tue, 18 Jul 2017 15:47:29 +0530 Message-ID: <20170718101727.GA31042@localhost.localdomain> References: <20170714183027.16021-1-stephen@networkplumber.org> <20170714183027.16021-12-stephen@networkplumber.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: dev@dpdk.org, Stephen Hemminger To: Stephen Hemminger Return-path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0045.outbound.protection.outlook.com [104.47.36.45]) by dpdk.org (Postfix) with ESMTP id E49B92030 for ; Tue, 18 Jul 2017 12:17:47 +0200 (CEST) Content-Disposition: inline In-Reply-To: <20170714183027.16021-12-stephen@networkplumber.org> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Fri, Jul 14, 2017 at 11:30:24AM -0700, Stephen Hemminger wrote: > Use the new link update API, and cleanup the logic in the the > link update routine. > > Signed-off-by: Stephen Hemminger > --- > drivers/net/liquidio/lio_ethdev.c | 76 ++++++++++----------------------------- > 1 file changed, 19 insertions(+), 57 deletions(-) > > diff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c > index 479936a52ff9..95dc7232601e 100644 > --- a/drivers/net/liquidio/lio_ethdev.c > +++ b/drivers/net/liquidio/lio_ethdev.c > @@ -888,32 +888,6 @@ lio_dev_vlan_filter_set(struct rte_eth_dev *eth_dev, uint16_t vlan_id, int on) > return 0; > } > > -/** > - * Atomically writes the link status information into global > - * structure rte_eth_dev. > - * > - * @param eth_dev > - * - Pointer to the structure rte_eth_dev to read from. > - * - Pointer to the buffer to be saved with the link status. > - * > - * @return > - * - On success, zero. > - * - On failure, negative value. > - */ > -static inline int > -lio_dev_atomic_write_link_status(struct rte_eth_dev *eth_dev, > - struct rte_eth_link *link) > -{ > - struct rte_eth_link *dst = ð_dev->data->dev_link; > - struct rte_eth_link *src = link; > - > - if (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst, > - *(uint64_t *)src) == 0) > - return -1; > - > - return 0; > -} > - > static uint64_t > lio_hweight64(uint64_t w) > { > @@ -933,45 +907,33 @@ lio_dev_link_update(struct rte_eth_dev *eth_dev, > int wait_to_complete __rte_unused) > { > struct lio_device *lio_dev = LIO_DEV(eth_dev); > - struct rte_eth_link link, old; > + struct rte_eth_link link; > > /* Initialize */ > - link.link_status = ETH_LINK_DOWN; > - link.link_speed = ETH_SPEED_NUM_NONE; > - link.link_duplex = ETH_LINK_HALF_DUPLEX; > - memset(&old, 0, sizeof(old)); > - > + memset(&link, 0, sizeof(link)); > /* Return what we found */ > if (lio_dev->linfo.link.s.link_up == 0) { > - /* Interface is down */ > - if (lio_dev_atomic_write_link_status(eth_dev, &link)) > - return -1; > - if (link.link_status == old.link_status) > - return -1; > - return 0; > - } > - > - link.link_status = ETH_LINK_UP; /* Interface is up */ > - link.link_duplex = ETH_LINK_FULL_DUPLEX; > - switch (lio_dev->linfo.link.s.speed) { > - case LIO_LINK_SPEED_10000: > - link.link_speed = ETH_SPEED_NUM_10G; > - break; > - case LIO_LINK_SPEED_25000: > - link.link_speed = ETH_SPEED_NUM_25G; > - break; > - default: > + link.link_status = ETH_LINK_DOWN; > link.link_speed = ETH_SPEED_NUM_NONE; > link.link_duplex = ETH_LINK_HALF_DUPLEX; > - } > - > - if (lio_dev_atomic_write_link_status(eth_dev, &link)) > - return -1; > + } else { > + link.link_status = ETH_LINK_UP; /* Interface is up */ > + link.link_duplex = ETH_LINK_FULL_DUPLEX; > + switch (lio_dev->linfo.link.s.speed) { > + case LIO_LINK_SPEED_10000: > + link.link_speed = ETH_SPEED_NUM_10G; > + break; > + case LIO_LINK_SPEED_25000: > + link.link_speed = ETH_SPEED_NUM_25G; > + break; > + default: > + link.link_speed = ETH_SPEED_NUM_NONE; > + link.link_duplex = ETH_LINK_HALF_DUPLEX; > + } > > - if (link.link_status == old.link_status) > - return -1; > + } > > - return 0; > + return _rte_eth_link_update(eth_dev, &link); > } > > /** > -- > 2.11.0 > Tested-by: Shijith Thotton Thanks, Shijith