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: [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 [RFC PATCH 0/2] ethdev: add port speed capability bitmap Marc Sune
2015-05-11 23:45 ` [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 ` [RFC PATCH 2/2] Filling speed capability bitmaps in the PMDs Marc Sune
2015-05-25 16:32 ` [RFC PATCH 0/2] ethdev: add port speed capability bitmap Marc Sune
2015-05-26 19:50 ` [PATCH v2 " Marc Sune
2015-05-26 19:50 ` [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 ` [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 ` [PATCH v3 0/2] ethdev: add port speed capability bitmap Marc Sune
2015-08-28 23:20 ` [PATCH v3 1/2] Added ETH_SPEED_ bitmap in rte_eth_dev_info Marc Sune
2015-08-28 23:20 ` [PATCH v3 2/2] Filling speed capability bitmaps in the PMDs Marc Sune
2015-08-29 0:16 ` [PATCH v4 0/2] ethdev: add port speed capability bitmap Marc Sune
2015-08-29 0:16 ` [PATCH v4 1/2] Added ETH_SPEED_ bitmap in rte_eth_dev_info Marc Sune
2015-08-29 0:16 ` [PATCH v4 2/2] Filling speed capability bitmaps in the PMDs Marc Sune
2015-09-07 20:52 ` [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 ` [PATCH v5 0/4] ethdev: add speed capabilities and refactor link API Marc Sune
2015-10-04 21:12 ` [PATCH v5 1/4] ethdev: Added ETH_SPEED_CAP bitmap for ports Marc Sune
2015-10-04 21:12 ` [PATCH v5 2/4] ethdev: Fill speed capability bitmaps in the PMDs Marc Sune
2015-10-04 21:12 ` [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 ` [PATCH v5 4/4] doc: update with link changes Marc Sune
2015-10-04 21:21 ` [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 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.