DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@intel.com>
To: Stephen Hemminger <stephen@networkplumber.org>,
	Andrew Rybchenko <arybchenko@solarflare.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v3 02/15] ethdev: add linkstatus get/set helper functions
Date: Thu, 11 Jan 2018 17:01:40 +0000	[thread overview]
Message-ID: <77fb3f8f-ab2f-a038-69e1-032878cdf782@intel.com> (raw)
In-Reply-To: <20180109082902.475cb461@xeon-e3>

On 1/9/2018 4:29 PM, Stephen Hemminger wrote:
> 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>

<...>

>>> +int
>>> +_rte_eth_linkstatus_set(struct rte_eth_dev *dev,
>>> +		       const struct rte_eth_link *new_link)

I see "_rte" prefix is used to say this is internal only but this is not the
syntax for other internal APIs, only there is one using this syntax, so may be
confusing to have a mix of them.

"@internal" marker in function comment already saying that this is internal.
Also I send a patch to separate public APIs and PMD APIs to different files,
hopefully that will also help clarifying target of the APIs.

And although these two new APIs are internal, they need to be in .map file for
shared library case.

>>> +{
>>> +	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.

+1, function documentation in header file and this conflicts, one needs fixing.

>> 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.

When a set function returns -1/0, it looks like it returns set status. Returning
if link status changes seems odd to me. What about returning original link
struct, so PMD may get this information if they want.

  reply	other threads:[~2018-01-11 17:01 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-08 17:44 [dpdk-dev] [PATCH v3 00/15] common ethdev linkstatus functions Stephen Hemminger
2018-01-08 17:45 ` [dpdk-dev] [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 ` [dpdk-dev] [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
2018-01-11 17:01       ` Ferruh Yigit [this message]
2018-01-08 17:45 ` [dpdk-dev] [PATCH v3 03/15] net/virtio: use eth_linkstatus_set Stephen Hemminger
2018-01-11 17:02   ` Ferruh Yigit
2018-01-08 17:45 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v3 05/15] net/dpaa2: " Stephen Hemminger
2018-01-08 17:45 ` [dpdk-dev] [PATCH v3 06/15] net/nfp: use rte_eth_linkstatus functions Stephen Hemminger
2018-01-08 17:45 ` [dpdk-dev] [PATCH v3 07/15] net/e1000: use rte_eth_linkstatus helpers Stephen Hemminger
2018-01-08 17:45 ` [dpdk-dev] [PATCH v3 08/15] net/ixgbe: use rte_eth_linkstatus functions Stephen Hemminger
2018-01-08 17:45 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v3 10/15] net/i40e: use " Stephen Hemminger
2018-01-08 17:45 ` [dpdk-dev] [PATCH v3 11/15] net/liquidio: use _rte_eth_linkstatus_set Stephen Hemminger
2018-01-08 17:45 ` [dpdk-dev] [PATCH v3 12/15] net/thunderx: " Stephen Hemminger
2018-01-08 17:45 ` [dpdk-dev] [PATCH v3 13/15] net/szedata: " Stephen Hemminger
2018-01-08 17:45 ` [dpdk-dev] [PATCH v3 14/15] net/octeontx: use rte_eth_linkstatus_set Stephen Hemminger
2018-01-08 17:45 ` [dpdk-dev] [PATCH v3 15/15] net/enic: use _rte_eth_linkstatus_set Stephen Hemminger
2018-01-11 17:06 ` [dpdk-dev] [PATCH v4 01/15] eal: introduce atomic exchange operation Ferruh Yigit
2018-01-11 17:06   ` [dpdk-dev] [PATCH v4 02/15] ethdev: add linkstatus get/set helper functions Ferruh Yigit
2018-01-11 17:06   ` [dpdk-dev] [PATCH v4 03/15] net/virtio: use eth_linkstatus_set Ferruh Yigit
2018-01-11 17:06   ` [dpdk-dev] [PATCH v4 04/15] net/vmxnet3: use rte_eth_linkstatus_set Ferruh Yigit
2018-01-11 17:06   ` [dpdk-dev] [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   ` [dpdk-dev] [PATCH v4 06/15] net/nfp: use rte_eth_linkstatus functions Ferruh Yigit
2018-01-11 17:06   ` [dpdk-dev] [PATCH v4 07/15] net/e1000: use rte_eth_linkstatus helpers Ferruh Yigit
2018-01-11 17:06   ` [dpdk-dev] [PATCH v4 08/15] net/ixgbe: use rte_eth_linkstatus functions Ferruh Yigit
2018-01-11 17:06   ` [dpdk-dev] [PATCH v4 09/15] net/sfc: use new " Ferruh Yigit
2018-01-12  7:45     ` Andrew Rybchenko
2018-01-11 17:06   ` [dpdk-dev] [PATCH v4 10/15] net/i40e: use " Ferruh Yigit
2018-01-11 17:06   ` [dpdk-dev] [PATCH v4 11/15] net/liquidio: use _rte_eth_linkstatus_set Ferruh Yigit
2018-01-11 17:06   ` [dpdk-dev] [PATCH v4 12/15] net/thunderx: " Ferruh Yigit
2018-01-11 17:06   ` [dpdk-dev] [PATCH v4 13/15] net/szedata: " Ferruh Yigit
2018-01-11 17:06   ` [dpdk-dev] [PATCH v4 14/15] net/octeontx: use rte_eth_linkstatus_set Ferruh Yigit
2018-01-11 17:06   ` [dpdk-dev] [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=77fb3f8f-ab2f-a038-69e1-032878cdf782@intel.com \
    --to=ferruh.yigit@intel.com \
    --cc=arybchenko@solarflare.com \
    --cc=dev@dpdk.org \
    --cc=stephen@networkplumber.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).