All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: Andrew Rybchenko <arybchenko@solarflare.com>
Cc: <dev@dpdk.org>
Subject: Re: [PATCH v3 02/15] ethdev: add linkstatus get/set helper functions
Date: Tue, 9 Jan 2018 08:29:02 -0800	[thread overview]
Message-ID: <20180109082902.475cb461@xeon-e3> (raw)
In-Reply-To: <c63b2a0f-956e-3f43-7997-9178f438781a@solarflare.com>

On Tue, 9 Jan 2018 13:30:46 +0300
Andrew Rybchenko <arybchenko@solarflare.com> wrote:

> On 01/08/2018 08:45 PM, Stephen Hemminger wrote:
> > Many drivers are all doing copy/paste of the same code to atomically
> > update the link status. Reduce duplication, and allow for future
> > changes by having common function for this.
> >
> > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> > ---
> >   lib/librte_ether/rte_ethdev.c | 36 ++++++++++++++++++++++++++++++++++++
> >   lib/librte_ether/rte_ethdev.h | 28 ++++++++++++++++++++++++++++
> >   2 files changed, 64 insertions(+)
> >
> > diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
> > index a524af740f4a..6674500bbc4a 100644
> > --- a/lib/librte_ether/rte_ethdev.c
> > +++ b/lib/librte_ether/rte_ethdev.c
> > @@ -1495,6 +1495,42 @@ rte_eth_link_get_nowait(uint16_t port_id, struct rte_eth_link *eth_link)
> >   	}
> >   }
> >   
> > +int
> > +_rte_eth_linkstatus_set(struct rte_eth_dev *dev,
> > +		       const struct rte_eth_link *new_link)
> > +{
> > +	volatile uint64_t *dev_link
> > +		 = (volatile uint64_t *)&(dev->data->dev_link);
> > +	union {
> > +		uint64_t val64;
> > +		struct rte_eth_link link;
> > +	} orig;
> > +
> > +	RTE_BUILD_BUG_ON(sizeof(*new_link) != sizeof(uint64_t));
> > +
> > +	orig.val64 = rte_atomic64_exchange(dev_link,
> > +					   *(const uint64_t *)new_link);
> > +
> > +	return (orig.link.link_status == new_link->link_status) ? -1 : 0;  
> 
> It still contradicts to: -1 if link state has changed, 0 if the same.
> BTW, it looks like the return value of the link_update callback is not
> specified (described) and not used. It explains why different drivers
> behave differently and nobody notices it.

It looks like link_status callback could be void.
The only places that use return value from set are code that wants
to log something if status changed.

  reply	other threads:[~2018-01-09 16:29 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-08 17:44 [PATCH v3 00/15] common ethdev linkstatus functions Stephen Hemminger
2018-01-08 17:45 ` [PATCH v3 01/15] eal: introduce atomic exchange operation Stephen Hemminger
2018-01-11 17:01   ` Ferruh Yigit
2018-01-25 23:24     ` Stephen Hemminger
2018-03-08 22:12     ` Stephen Hemminger
2018-01-08 17:45 ` [PATCH v3 02/15] ethdev: add linkstatus get/set helper functions Stephen Hemminger
2018-01-09 10:30   ` Andrew Rybchenko
2018-01-09 16:29     ` Stephen Hemminger [this message]
2018-01-11 17:01       ` Ferruh Yigit
2018-01-08 17:45 ` [PATCH v3 03/15] net/virtio: use eth_linkstatus_set Stephen Hemminger
2018-01-11 17:02   ` Ferruh Yigit
2018-01-08 17:45 ` [PATCH v3 04/15] net/vmxnet3: use rte_eth_linkstatus_set Stephen Hemminger
2018-01-11 17:02   ` Ferruh Yigit
2018-01-08 17:45 ` [PATCH v3 05/15] net/dpaa2: " Stephen Hemminger
2018-01-08 17:45 ` [PATCH v3 06/15] net/nfp: use rte_eth_linkstatus functions Stephen Hemminger
2018-01-08 17:45 ` [PATCH v3 07/15] net/e1000: use rte_eth_linkstatus helpers Stephen Hemminger
2018-01-08 17:45 ` [PATCH v3 08/15] net/ixgbe: use rte_eth_linkstatus functions Stephen Hemminger
2018-01-08 17:45 ` [PATCH v3 09/15] net/sfc: use new " Stephen Hemminger
2018-01-09 10:35   ` Andrew Rybchenko
2018-01-09 16:27     ` Stephen Hemminger
2018-01-09 19:29       ` Andrew Rybchenko
2018-01-08 17:45 ` [PATCH v3 10/15] net/i40e: use " Stephen Hemminger
2018-01-08 17:45 ` [PATCH v3 11/15] net/liquidio: use _rte_eth_linkstatus_set Stephen Hemminger
2018-01-08 17:45 ` [PATCH v3 12/15] net/thunderx: " Stephen Hemminger
2018-01-08 17:45 ` [PATCH v3 13/15] net/szedata: " Stephen Hemminger
2018-01-08 17:45 ` [PATCH v3 14/15] net/octeontx: use rte_eth_linkstatus_set Stephen Hemminger
2018-01-08 17:45 ` [PATCH v3 15/15] net/enic: use _rte_eth_linkstatus_set Stephen Hemminger
2018-01-11 17:06 ` [PATCH v4 01/15] eal: introduce atomic exchange operation Ferruh Yigit
2018-01-11 17:06   ` [PATCH v4 02/15] ethdev: add linkstatus get/set helper functions Ferruh Yigit
2018-01-11 17:06   ` [PATCH v4 03/15] net/virtio: use eth_linkstatus_set Ferruh Yigit
2018-01-11 17:06   ` [PATCH v4 04/15] net/vmxnet3: use rte_eth_linkstatus_set Ferruh Yigit
2018-01-11 17:06   ` [PATCH v4 05/15] net/dpaa2: " Ferruh Yigit
2018-01-16  9:44     ` Shreyansh Jain
2018-01-16  9:57       ` Shreyansh Jain
2018-01-11 17:06   ` [PATCH v4 06/15] net/nfp: use rte_eth_linkstatus functions Ferruh Yigit
2018-01-11 17:06   ` [PATCH v4 07/15] net/e1000: use rte_eth_linkstatus helpers Ferruh Yigit
2018-01-11 17:06   ` [PATCH v4 08/15] net/ixgbe: use rte_eth_linkstatus functions Ferruh Yigit
2018-01-11 17:06   ` [PATCH v4 09/15] net/sfc: use new " Ferruh Yigit
2018-01-12  7:45     ` Andrew Rybchenko
2018-01-11 17:06   ` [PATCH v4 10/15] net/i40e: use " Ferruh Yigit
2018-01-11 17:06   ` [PATCH v4 11/15] net/liquidio: use _rte_eth_linkstatus_set Ferruh Yigit
2018-01-11 17:06   ` [PATCH v4 12/15] net/thunderx: " Ferruh Yigit
2018-01-11 17:06   ` [PATCH v4 13/15] net/szedata: " Ferruh Yigit
2018-01-11 17:06   ` [PATCH v4 14/15] net/octeontx: use rte_eth_linkstatus_set Ferruh Yigit
2018-01-11 17:06   ` [PATCH v4 15/15] net/enic: use _rte_eth_linkstatus_set Ferruh Yigit
2018-01-12 14:05     ` Hyong Youb Kim

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=20180109082902.475cb461@xeon-e3 \
    --to=stephen@networkplumber.org \
    --cc=arybchenko@solarflare.com \
    --cc=dev@dpdk.org \
    /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.