From: Adrien Mazarguil <adrien.mazarguil@6wind.com>
To: Marc Sune <marcdevel@gmail.com>
Cc: dev@dpdk.org, "Morten Brørup" <mb@smartsharesystems.com>
Subject: Re: [dpdk-dev] [PATCH v4 0/2] ethdev: add port speed capability bitmap
Date: Wed, 16 Sep 2015 16:41:45 +0200 [thread overview]
Message-ID: <20150916144145.GB4924@6wind.com> (raw)
In-Reply-To: <CA+3n-TrbpDn=N4VC36wckcbW-C768Pqc3Kto6RhSNs1ucPhgyg@mail.gmail.com>
On Tue, Sep 15, 2015 at 11:20:03PM +0200, Marc Sune wrote:
> Adrien,
>
> 2015-09-15 12:04 GMT+02:00 Adrien Mazarguil <adrien.mazarguil@6wind.com>:
[...]
> > It's not so much about the way PMDs recover link information, rather about
> > the amount of changes required to switch to a bit-field API for the current
> > link speed with no clear advantage.
>
>
> See below; these are trivial changes.
>
> > All PMDs must be modified, the initial
> > set of patches isn't complete in this regard.
> >
>
> Thanks for pointing out this. There are a couple missing.
>
[...]
> > I think Nelio was using mlx4 as an example, all PMDs have their own
> > particular method to recover it and several must perform calculations to
> > get
> > the final value. Using integers for this task is certainly easier than
> > going
> > through bit-field conversions.
> >
>
> Drivers have their *own* way to extract the link speed from the HW, because
> the way is stored is anyway HW specific. That a driver encodes their link
> speed as a numeric value is just a coincidence, and the exception.
I concede that most non-virtual drivers (including all Intel drivers) only
perform conversions between bit-field values, for those it's just a matter
of updating a macro name in a succession of if/else or switch/case
statements which is indeed trivial.
Exceptions are currently af_packet, bnx2x, bonding (does not care actually),
enic, mlx4, null, pcap, ring, xenvirt (these last four are purely virtual
and use hard-coded values, no calculations involved but still).
> Specifically, and putting an example of e1000 (which you are right it is
> buggy in v4, see below):
[...]
> Can you please tell me which exact extra conversions are needed on the PMD
> side? It only needs to be fixed:
[...]
> Other drivers, like i40 are already ooing it correctly:
Sure, I was only pointing out the extra work required to make sure all of
them were behaving as expected.
[...]
> > Everyone agrees that a link speed bit-field is useful as an input value to
> > advertise, request and allow a set of speeds. We do not agree with its
> > usage
> > as the current link speed which is often the result of a computation. We
> > aren't talking about performance.
> >
> > A given link cannot be simultaneously at 10 Gbps and 1 Gbps right? Using a
> > bit-field for the current link speed is confusing at best. Output values do
> > not need to be included in the unified API, they are never converted back
> > into enum values.
> >
>
> Although I agree it is unlikely that this would happen, we shouldn't
> anticipate what users will do, so in either approach you would need utility
> functions to translate from numerical to bitmap and viceversa.
Yes, obviously.
> > I'm stressing again the fact that doing so would require a changes in all
> > applications that use the current speed and in PMDs for no good reason.
>
> Well any change in the API will. This patch (v1,v2) started as speed caps
> only, and now we are refactoring the link API. How much code has to be
> changed or how is easier for PMDs is irrelevant IMHO. What matters is if
> the API makes sense for the user.
>
> And for that you are probably right; it might be more comprehensible to
> have "a" speed value as a result of rte_eth_get_link(), provided that we
> give utility functions to go back and forth from numerical constants and
> bitmap constants (both have to be defined then in rte_eth.h).
I fully agree with this.
Which means ETH_LINK_SPEED_* macros can be dropped (as in your patchset) and
replaced with a function or a macro that simply converts their ETH_SPEED_*
counterparts to integer values. That way we don't have to keep two confusing
sets of macros.
Probably obvious but in the reverse function, I suggest returning
ETH_SPEED_UNKNOWN for invalid values instead of the nearest match.
About struct rte_eth_link, Nelio intends to submit a patch to store
link_speed in a uint32_t for 100+Gbps links and update a few PMDs affected
by the change. Perhaps his patch should be included in your patchset?
--
Adrien Mazarguil
6WIND
next prev parent reply other threads:[~2015-09-16 14:42 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-11 23:45 [dpdk-dev] [RFC PATCH " Marc Sune
2015-05-11 23:45 ` [dpdk-dev] [RFC PATCH 1/2] Added ETH_SPEED_CAP bitmap in rte_eth_dev_info Marc Sune
2015-05-25 17:46 ` Stephen Hemminger
2015-05-26 8:41 ` Marc Sune
2015-05-26 15:03 ` Stephen Hemminger
2015-05-26 15:09 ` Marc Sune
2015-05-11 23:45 ` [dpdk-dev] [RFC PATCH 2/2] Filling speed capability bitmaps in the PMDs Marc Sune
2015-05-25 16:32 ` [dpdk-dev] [RFC PATCH 0/2] ethdev: add port speed capability bitmap Marc Sune
2015-05-26 19:50 ` [dpdk-dev] [PATCH v2 " Marc Sune
2015-05-26 19:50 ` [dpdk-dev] [PATCH v2 1/2] Added ETH_SPEED_CAP bitmap in rte_eth_dev_info Marc Sune
2015-05-27 4:02 ` Thomas Monjalon
2015-05-27 9:15 ` Marc Sune
2015-05-29 18:23 ` Thomas Monjalon
2015-06-08 8:50 ` Marc Sune
2015-06-11 9:08 ` Thomas Monjalon
2015-06-11 14:35 ` Marc Sune
2015-05-26 19:50 ` [dpdk-dev] [PATCH v2 2/2] Filling speed capability bitmaps in the PMDs Marc Sune
2015-05-26 21:20 ` Igor Ryzhov
2015-05-27 8:59 ` Marc Sune
2015-08-28 23:20 ` [dpdk-dev] [PATCH v3 0/2] ethdev: add port speed capability bitmap Marc Sune
2015-08-28 23:20 ` [dpdk-dev] [PATCH v3 1/2] Added ETH_SPEED_ bitmap in rte_eth_dev_info Marc Sune
2015-08-28 23:20 ` [dpdk-dev] [PATCH v3 2/2] Filling speed capability bitmaps in the PMDs Marc Sune
2015-08-29 0:16 ` [dpdk-dev] [PATCH v4 0/2] ethdev: add port speed capability bitmap Marc Sune
2015-08-29 0:16 ` [dpdk-dev] [PATCH v4 1/2] Added ETH_SPEED_ bitmap in rte_eth_dev_info Marc Sune
2015-08-29 0:16 ` [dpdk-dev] [PATCH v4 2/2] Filling speed capability bitmaps in the PMDs Marc Sune
2015-09-07 20:52 ` [dpdk-dev] [PATCH v4 0/2] ethdev: add port speed capability bitmap Marc Sune
2015-09-08 10:03 ` Nélio Laranjeiro
2015-09-08 20:26 ` Marc Sune
2015-09-09 13:10 ` Nélio Laranjeiro
2015-09-09 13:33 ` Thomas Monjalon
2015-09-13 19:14 ` Marc Sune
2015-09-13 21:18 ` Thomas Monjalon
2015-09-14 10:02 ` Nélio Laranjeiro
2015-09-14 10:52 ` Morten Brørup
2015-09-14 21:33 ` Marc Sune
2015-09-14 22:50 ` Morten Brørup
2015-09-15 8:25 ` Nélio Laranjeiro
2015-09-15 8:48 ` Marc Sune
2015-09-15 9:39 ` Morten Brørup
2015-09-15 10:04 ` Adrien Mazarguil
2015-09-15 10:24 ` Morten Brørup
2015-09-15 21:20 ` Marc Sune
2015-09-16 14:41 ` Adrien Mazarguil [this message]
2015-09-15 7:05 ` Thomas Monjalon
2015-09-15 7:33 ` Morten Brørup
2015-09-15 9:06 ` Morten Brørup
2015-10-04 21:12 ` [dpdk-dev] [PATCH v5 0/4] ethdev: add speed capabilities and refactor link API Marc Sune
2015-10-04 21:12 ` [dpdk-dev] [PATCH v5 1/4] ethdev: Added ETH_SPEED_CAP bitmap for ports Marc Sune
2015-10-04 21:12 ` [dpdk-dev] [PATCH v5 2/4] ethdev: Fill speed capability bitmaps in the PMDs Marc Sune
2015-10-04 21:12 ` [dpdk-dev] [PATCH v5 3/4] ethdev: redesign link speed config API Marc Sune
2015-10-05 10:59 ` Neil Horman
2015-10-07 13:31 ` Marc Sune
2015-10-06 13:48 ` Nélio Laranjeiro
2015-10-07 13:37 ` Marc Sune
2016-01-28 17:33 ` Harish Patil
2016-02-02 2:20 ` Stephen Hemminger
2016-02-02 22:30 ` Marc
2016-02-11 15:27 ` Nélio Laranjeiro
2016-02-11 23:23 ` Marc
2015-10-04 21:12 ` [dpdk-dev] [PATCH v5 4/4] doc: update with link changes Marc Sune
2015-10-04 21:21 ` [dpdk-dev] [PATCH v5 0/4] ethdev: add speed capabilities and refactor link API Marc Sune
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=20150916144145.GB4924@6wind.com \
--to=adrien.mazarguil@6wind.com \
--cc=dev@dpdk.org \
--cc=marcdevel@gmail.com \
--cc=mb@smartsharesystems.com \
/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).