From: Shreyansh Jain <shreyansh.jain@nxp.com>
To: "Gaëtan Rivet" <gaetan.rivet@6wind.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v11 11/25] eal/dev: implement device iteration
Date: Fri, 13 Jul 2018 12:36:50 +0530 [thread overview]
Message-ID: <993bb4f2-b73a-ab38-53bf-420b9552f107@nxp.com> (raw)
In-Reply-To: <20180712150832.lmict7bn3exkyh2u@bidouze.vm.6wind.com>
(I am not reducing the thread as it contains quite interesting
discussion - so, you might have to fish for inline comments...)
On Thursday 12 July 2018 08:38 PM, Gaëtan Rivet wrote:
> Hi Shreyansh,
>
> On Thu, Jul 12, 2018 at 04:28:27PM +0530, Shreyansh Jain wrote:
>> On Thursday 12 July 2018 03:15 AM, Gaetan Rivet wrote:
>>> Use the iteration hooks in the abstraction layers to perform the
>>> requested filtering on the internal device lists.
>>>
>>> Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
>>> ---
>>> lib/librte_eal/common/eal_common_dev.c | 168 ++++++++++++++++++++++++
>>> lib/librte_eal/common/include/rte_dev.h | 26 ++++
>>> lib/librte_eal/rte_eal_version.map | 1 +
>>> 3 files changed, 195 insertions(+)
>>>
>>> diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c
>>> index 63e329bd8..b78845f02 100644
>>> --- a/lib/librte_eal/common/eal_common_dev.c
>>> +++ b/lib/librte_eal/common/eal_common_dev.c
>>> @@ -45,6 +45,28 @@ static struct dev_event_cb_list dev_event_cbs;
>>> /* spinlock for device callbacks */
>>> static rte_spinlock_t dev_event_lock = RTE_SPINLOCK_INITIALIZER;
>>> +struct dev_next_ctx {
>>> + struct rte_dev_iterator *it;
>>> + const char *bus_str;
>>> + const char *cls_str;
>>> +};
>>> +
>>> +#define CTX(it, bus_str, cls_str) \
>>> + (&(const struct dev_next_ctx){ \
>>> + .it = it, \
>>> + .bus_str = bus_str, \
>>> + .cls_str = cls_str, \
>>> + })
>>> +
>>> +#define ITCTX(ptr) \
>>> + (((struct dev_next_ctx *)(intptr_t)ptr)->it)
>>> +
>>> +#define BUSCTX(ptr) \
>>> + (((struct dev_next_ctx *)(intptr_t)ptr)->bus_str)
>>> +
>>> +#define CLSCTX(ptr) \
>>> + (((struct dev_next_ctx *)(intptr_t)ptr)->cls_str)
>>> +
>>> static int cmp_detached_dev_name(const struct rte_device *dev,
>>> const void *_name)
>>> {
>>> @@ -398,3 +420,149 @@ rte_dev_iterator_init(struct rte_dev_iterator *it,
>>> get_out:
>>> return -rte_errno;
>>> }
>>> +
>>> +static char *
>>> +dev_str_sane_copy(const char *str)
>>> +{
>>> + size_t end;
>>> + char *copy;
>>> +
>>> + end = strcspn(str, ",/");
>>> + if (str[end] == ',') {
>>> + copy = strdup(&str[end + 1]);
>>> + } else {
>>> + /* '/' or '\0' */
>>> + copy = strdup("");
>>> + }
>>
>> Though it doesn't change anything functionally, if you can separate blocks
>> of if-else with new lines, it really makes it easier to read.
>> Like here...
>>
>
> sure,
>
>>> + if (copy == NULL) {
>>> + rte_errno = ENOMEM;
>>> + } else {
>>> + char *slash;
>>> +
>>> + slash = strchr(copy, '/');
>>> + if (slash != NULL)
>>> + slash[0] = '\0';
>>> + }
>>> + return copy;
>>> +}
>>> +
>>> +static int
>>> +class_next_dev_cmp(const struct rte_class *cls,
>>> + const void *ctx)
>>> +{
>>> + struct rte_dev_iterator *it;
>>> + const char *cls_str = NULL;
>>> + void *dev;
>>> +
>>> + if (cls->dev_iterate == NULL)
>>> + return 1;
>>> + it = ITCTX(ctx);
>>> + cls_str = CLSCTX(ctx);
>>> + dev = it->class_device;
>>> + /* it->cls_str != NULL means a class
>>> + * was specified in the devstr.
>>> + */
>>> + if (it->cls_str != NULL && cls != it->cls)
>>> + return 1;
>>> + /* If an error occurred previously,
>>> + * no need to test further.
>>> + */
>>> + if (rte_errno != 0)
>>> + return -1;
>>
>> I am guessing here by '..error occurred previously..' you mean sane_copy. If
>> so, why wait until this point to return? Anyway the caller (rte_bus_find,
>> probably) would only look for '0' or non-zero.
>>
>
> No, rte_errno could be set by a bus / class implementation, for any
> error occurring during a call to dev_iterate: maybe a device was lost
> (hotplugged), etc. The return value of dev_iterate() cannot transmit an
> error as not matching a filter is not an error. The only error channel
> is rte_errno.
>
> sane_copy was already checked before and should be cleared at this
> point.
>
>>> + dev = cls->dev_iterate(dev, cls_str, it);
>>> + it->class_device = dev;
>>> + return dev == NULL;
>>> +}
>>> +
>>> +static int
>>> +bus_next_dev_cmp(const struct rte_bus *bus,
>>> + const void *ctx)
>>> +{
>>> + struct rte_device *dev = NULL;
>>> + struct rte_class *cls = NULL;
>>> + struct rte_dev_iterator *it;
>>> + const char *bus_str = NULL;
>>> +
>>> + if (bus->dev_iterate == NULL)
>>> + return 1;
>>> + it = ITCTX(ctx);
>>> + bus_str = BUSCTX(ctx);
>>> + dev = it->device;
>>> + /* it->bus_str != NULL means a bus
>>> + * was specified in the devstr.
>>> + */
>>> + if (it->bus_str != NULL && bus != it->bus)
>>> + return 1;
>>> + /* If an error occurred previously,
>>> + * no need to test further.
>>> + */
>>> + if (rte_errno != 0)
>>> + return -1;
>>> + if (it->cls_str == NULL) {
>>> + dev = bus->dev_iterate(dev, bus_str, it);
>>> + goto end;
>>
>> This is slightly confusing. If it->cls_str == NULL, you do
>> bus->dev_iterate... but
>>
>>> + }
>>> + /* cls_str != NULL */
>>> + if (dev == NULL) {
>>> +next_dev_on_bus:
>>> + dev = bus->dev_iterate(dev, bus_str, it);
>>
>> When cls_str!=NULL, you still do bus->dev_iterate...
>> So, maybe they are OR case resulting in check of dev==NULL and return (as
>> being done right now by jumping to out)...?
>>
>
> Yes, this iteration is pretty complex.
>
> The best way to walk through it is to define the possible cases:
>
> 1. Iterating on one bus:
>
> if (bus_str != NULL && cls_str == NULL)
>
> Simplest case. You got one bus, no classes.
> Just call the current bus dev_iterate() callback, then report
> the result (whether NULL or not).
>
> 2. Iterating on one bus and one class:
>
> if (bus_str != NULL && cls_str != NULL)
>
> Possible states are:
>
> a. We are starting the iteration: dev is NULL.
> Iterate on the current bus.
>
> If device is not NULL anymore, iterate on the class.
> To ensure we stay on the same class, set cls to the previous class
> and call rte_class_find();
>
> If device is still NULL, return 1 to iterate on the next bus.
>
> b. We are in the middle of an iteration: dev is not NULL.
> We start iterating on the class to find a possible second instance
> of the same device in the class (e.g. mlx devices with multiple
> eth ports per PCI devices). If none is found, we
> come back to bus->dev_iterate() (bypassing the dev == NULL check),
> restarting this (b) cycle as many times as necessary.
> If the result is NULL, the iteration is finished.
>
> 3. Iterating on one class:
>
> if (bus_str == NULL && cls_str != NULL)
>
> The most complex case. Same as (2), however we start by the first
> bus, and if a device is NULL we will continue onto the next bus
> within the loop line 554 (within rte_dev_iterator_next).
>
This, above, is most useful. I had missed out the case (b) above
entirely. I will re-review with this in mind. Thanks for writing this.
>
> The core of the complexity here lies in the next_dev_on_bus cycle
> described in 2.b.
>
>> And, how can bus iterate over a 'null' device?
>>
>
> A NULL device means that we are starting the iteration: a bus will give
> its first device.
>
>>> + it->device = dev;
>>> + }
>>> + if (dev == NULL)
>>> + return 1;
>>
>> Maybe, this check should move in the if(dev==NULL) above - that way, it can
>> in path of 'next_dev_on_bus' yet do the same as function as its current
>> location.
>>
>
> Yes
>
>>> + if (it->cls != NULL)
>>
>> In what case would (it->cls_str == NULL) but (it->cls != NULL)?
>>
>
> When one rte_device was used to spawn several class_devices: multiple
> adapters per PCI addresses for example.
>
> However, in this case, given that the matching would be useless, we skip
> the class matching process and only return the rte_device. This single
> rte_device is not returned multiple times.
>
> However, if someone was giving:
>
> bus=pci,id=00:02.0/class=eth
> (str_sane_copy would set cls_str to "" here)
>
> Then, if 00:02.0 had spawned several eth ports, it would be returned
> once for each instance.
>
> This is a pretty ambiguous case. I'm not sure of the best way to deal with
> it. My decision here was to simplify the iteration if possible, as I
> considered that someone that did not care for the class properties would
> not care about counting the instances of the bus device. maybe I'm
> wrong.
Frankly, I have nothing extra to add as a use-case. For your approach of
'simple is better': +1
>
>>> + cls = TAILQ_PREV(it->cls, rte_class_list, next);
>>> + cls = rte_class_find(cls, class_next_dev_cmp, ctx);
>>> + if (cls != NULL) {
>>> + it->cls = cls;
>>> + goto end;
>>> + }
>>> + goto next_dev_on_bus;
>>
>> Maybe I have completely mixed your intention of this function. So, if you
>> still find the above comments naive - maybe you can tell me what you are
>> attempting here?
>> Is it: find next bus and stop if no class specified. find next class as
>> well, iff that too was specified?
>>
>> Reason I am confused is that bus_next_dev_cmp attempts to compare both - bus
>> and class, yet class_next_dev_cmp simply stops by comparing class only.
>>
>
> You are right: bus comparator will produce an iteration on the bus
> devices, then on the class devices iff class is specified.
>
> Thus the class comparator only has to iterate on class, because we
> called it from the bus iterator.
>
>>> +end:
>>> + it->device = dev;
>>> + return dev == NULL;
>>> +}
>>
>> A new line should be added here - start of a new function.
>>
>
> yes
>
>
> I'm pretty sorry about this code, to be honest.
> This is a nasty piece with a lot of states to care for.
Actually, the cases that you have mentioned above indeed requires a
complex logic. I am not sure I have any suggestion to make it simpler.
I will read again based on what you have explained.
>
> At least it works. I'd like to have the properties integrated so that
> developpers can add their own quickly. In the meantime I could rework
> this function. But simple is not easy.
>
Problem is that the 18.08 window is almost closed - I though I could
review it within the window but now I am not confident. Maybe someone
else too can look through the PCI/VDEV part after this patch..
next prev parent reply other threads:[~2018-07-13 7:07 UTC|newest]
Thread overview: 364+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-15 17:49 [dpdk-dev] [PATCH v1 00/18] Device querying Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 01/18] eal: introduce dtor macros Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 02/18] eal: introduce device class abstraction Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 03/18] eal/class: register destructor Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 04/18] eal: add lightweight kvarg parsing utility Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 05/18] eal/dev: add device iterator interface Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 06/18] eal/dev: implement device iteration initialization Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 07/18] eal/class: add device iteration Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 08/18] eal/bus: " Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 09/18] eal/dev: implement " Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 10/18] ethdev: register ether layer as a class Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 11/18] ethdev: add device matching field name Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 12/18] bus/pci: fix find device implementation Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 13/18] bus/pci: implement device iteration and comparison Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 14/18] bus/pci: add device matching field id Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 15/18] bus/vdev: fix find device implementation Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 16/18] bus/vdev: implement device iteration Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 17/18] bus/vdev: add device matching field driver Gaetan Rivet
2018-03-15 17:49 ` [dpdk-dev] [PATCH v1 18/18] app/testpmd: add show device command Gaetan Rivet
2018-03-19 11:33 ` Gaëtan Rivet
2018-03-20 17:51 ` [dpdk-dev] [PATCH v1 00/18] Device querying Gaëtan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 " Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 01/18] eal: introduce dtor macros Gaetan Rivet
2018-03-22 11:35 ` Neil Horman
2018-03-22 13:51 ` Neil Horman
2018-03-22 15:56 ` Gaëtan Rivet
2018-03-22 15:58 ` [dpdk-dev] [PATCH] eal: list acceptable init priorities Gaetan Rivet
2018-03-23 0:40 ` Neil Horman
2018-03-23 0:38 ` [dpdk-dev] [PATCH v2 01/18] eal: introduce dtor macros Neil Horman
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 02/18] eal: introduce device class abstraction Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 03/18] eal/class: register destructor Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 04/18] eal: add lightweight kvarg parsing utility Gaetan Rivet
2018-03-21 17:32 ` Wiles, Keith
2018-03-21 17:58 ` Gaëtan Rivet
2018-03-22 14:10 ` Neil Horman
2018-03-22 16:27 ` Gaëtan Rivet
2018-03-23 0:53 ` Neil Horman
2018-03-23 9:31 ` Gaëtan Rivet
2018-03-23 11:54 ` Neil Horman
2018-03-23 13:12 ` Gaëtan Rivet
2018-03-23 18:45 ` [dpdk-dev] [PATCH 1/2] kvargs: the life of the party Gaetan Rivet
2018-03-23 18:45 ` [dpdk-dev] [PATCH 2/2] dev: use rte_kvargs Gaetan Rivet
2018-03-26 11:38 ` Neil Horman
2018-03-26 13:59 ` Gaëtan Rivet
2018-03-26 15:14 ` Wiles, Keith
2018-03-26 11:23 ` [dpdk-dev] [PATCH v2 04/18] eal: add lightweight kvarg parsing utility Neil Horman
2018-03-23 13:15 ` Wiles, Keith
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 05/18] eal/dev: add device iterator interface Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 06/18] eal/class: add device iteration Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 07/18] eal/bus: " Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 08/18] eal/dev: implement device iteration initialization Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 09/18] eal/dev: implement device iteration Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 10/18] bus/pci: fix find device implementation Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 11/18] bus/pci: implement device iteration and comparison Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 12/18] bus/pci: add device matching field id Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 13/18] bus/vdev: fix find device implementation Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 14/18] bus/vdev: implement device iteration Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 15/18] bus/vdev: add device matching field driver Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 16/18] ethdev: register ether layer as a class Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 17/18] ethdev: add device matching field name Gaetan Rivet
2018-03-21 17:15 ` [dpdk-dev] [PATCH v2 18/18] app/testpmd: add show device command Gaetan Rivet
2018-03-22 11:31 ` [dpdk-dev] [PATCH v2 00/18] Device querying Bruce Richardson
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 00/20] " Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 01/20] kvargs: remove rte log dependency Gaetan Rivet
2018-03-27 18:19 ` Neil Horman
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 02/20] kvargs: build before EAL Gaetan Rivet
2018-03-27 9:12 ` Bruce Richardson
2018-03-27 9:53 ` Gaëtan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 03/20] eal: list acceptable init priorities Gaetan Rivet
2018-03-27 7:18 ` Shreyansh Jain
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 04/20] eal: introduce dtor macros Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 05/20] eal: introduce device class abstraction Gaetan Rivet
2018-03-27 8:38 ` Shreyansh Jain
2018-03-27 9:51 ` Gaëtan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 06/20] eal/class: register destructor Gaetan Rivet
2018-03-27 8:42 ` Shreyansh Jain
2018-03-27 8:49 ` Gaëtan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 07/20] eal/dev: add device iterator interface Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 08/20] eal/class: add device iteration Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 09/20] eal/bus: " Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 10/20] eal/dev: implement device iteration initialization Gaetan Rivet
2018-03-27 11:47 ` Neil Horman
2018-03-27 12:40 ` Gaëtan Rivet
2018-03-27 13:04 ` Gaëtan Rivet
2018-03-27 20:23 ` Gaëtan Rivet
2018-03-27 23:26 ` Neil Horman
2018-03-28 12:48 ` Gaëtan Rivet
2018-03-27 13:08 ` Wiles, Keith
2018-03-27 18:26 ` Neil Horman
2018-03-27 20:20 ` Gaëtan Rivet
2018-03-27 20:28 ` Bruce Richardson
2018-03-27 20:35 ` Gaëtan Rivet
2018-03-27 20:48 ` Richardson, Bruce
2018-03-27 23:53 ` Neil Horman
2018-03-28 8:10 ` Gaëtan Rivet
2018-03-28 11:17 ` Neil Horman
2018-04-22 22:29 ` Thomas Monjalon
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 11/20] eal/dev: implement device iteration Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 12/20] bus/pci: fix find device implementation Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 13/20] bus/pci: implement device iteration and comparison Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 14/20] bus/pci: add device matching field id Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 15/20] bus/vdev: fix find device implementation Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 16/20] bus/vdev: implement device iteration Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 17/20] bus/vdev: add device matching field driver Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 18/20] ethdev: register ether layer as a class Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 19/20] ethdev: add device matching field name Gaetan Rivet
2018-03-26 23:18 ` [dpdk-dev] [PATCH v3 20/20] app/testpmd: add show device command Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 00/20] Device querying Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 01/20] kvargs: build before EAL Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 02/20] eal: list acceptable init priorities Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 03/20] eal: introduce dtor macros Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 04/20] eal: introduce device class abstraction Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 05/20] eal/class: register destructor Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 06/20] eal/dev: add device iterator interface Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 07/20] eal/class: add device iteration Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 08/20] eal/bus: " Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 09/20] eal/dev: implement device iteration initialization Gaetan Rivet
2018-03-30 15:22 ` Wiles, Keith
2018-03-30 15:53 ` Gaëtan Rivet
2018-03-30 16:22 ` Wiles, Keith
2018-03-31 15:33 ` Gaëtan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 10/20] eal/dev: implement device iteration Gaetan Rivet
2018-04-09 7:28 ` Matan Azrad
2018-04-09 8:16 ` Gaëtan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 11/20] kvargs: add generic string matching callback Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 12/20] bus/pci: fix find device implementation Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 13/20] bus/pci: implement device iteration and comparison Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 14/20] bus/pci: add device matching field id Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 15/20] bus/vdev: fix find device implementation Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 16/20] bus/vdev: implement device iteration Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 17/20] bus/vdev: add device matching field driver Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 18/20] ethdev: register ether layer as a class Gaetan Rivet
2018-04-09 7:41 ` Matan Azrad
2018-04-09 7:47 ` Gaëtan Rivet
2018-04-09 7:58 ` Matan Azrad
2018-04-09 8:12 ` Gaëtan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 19/20] ethdev: add device matching field name Gaetan Rivet
2018-03-29 21:23 ` [dpdk-dev] [PATCH v4 20/20] app/testpmd: add show device command Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 00/21] Device querying Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 01/21] kvargs: build before EAL Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 02/21] eal: list acceptable init priorities Gaetan Rivet
2018-04-12 11:28 ` Neil Horman
2018-04-12 21:57 ` Gaëtan Rivet
2018-04-13 11:42 ` Neil Horman
2018-04-13 12:52 ` Shreyansh Jain
2018-04-13 12:55 ` Gaëtan Rivet
2018-04-14 18:45 ` Neil Horman
2018-04-15 15:13 ` Gaëtan Rivet
2018-04-16 11:31 ` Neil Horman
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 03/21] eal: introduce dtor macros Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 04/21] eal: introduce device class abstraction Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 05/21] eal/class: register destructor Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 06/21] eal/dev: add device iterator interface Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 07/21] eal/class: add device iteration Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 08/21] eal/bus: " Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 09/21] eal/dev: implement device iteration initialization Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 10/21] eal/dev: implement device iteration Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 11/21] kvargs: add generic string matching callback Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 12/21] bus/pci: fix find device implementation Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 13/21] bus/pci: implement device iteration and comparison Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 14/21] bus/pci: add device matching field id Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 15/21] bus/vdev: fix find device implementation Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 16/21] bus/vdev: implement device iteration Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 17/21] bus/vdev: add device matching field driver Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 18/21] ethdev: add private generic device iterator Gaetan Rivet
2018-04-11 8:41 ` Gaëtan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 19/21] ethdev: register ether layer as a class Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 20/21] ethdev: add device matching field name Gaetan Rivet
2018-04-11 0:04 ` [dpdk-dev] [PATCH v5 21/21] app/testpmd: add show device command Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 00/22] Device querying Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 01/22] kvargs: build before EAL Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 02/22] eal: list acceptable init priorities Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 03/22] eal: add last init priority Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 04/22] eal: introduce dtor macros Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 05/22] eal: introduce device class abstraction Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 06/22] eal/class: register destructor Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 07/22] eal/dev: add device iterator interface Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 08/22] eal/class: add device iteration Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 09/22] eal/bus: " Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 10/22] eal/dev: implement device iteration initialization Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 11/22] eal/dev: implement device iteration Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 12/22] kvargs: add generic string matching callback Gaetan Rivet
2018-04-13 14:49 ` Shreyansh Jain
2018-04-13 15:06 ` Gaëtan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 13/22] bus/pci: fix find device implementation Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 14/22] bus/pci: implement device iteration and comparison Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 15/22] bus/pci: add device matching field id Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 16/22] bus/vdev: fix find device implementation Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 17/22] bus/vdev: implement device iteration Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 18/22] bus/vdev: add device matching field driver Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 19/22] ethdev: add private generic device iterator Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 20/22] ethdev: register ether layer as a class Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 21/22] ethdev: add device matching field name Gaetan Rivet
2018-04-13 13:22 ` [dpdk-dev] [PATCH v6 22/22] app/testpmd: add show device command Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 00/22] Device querying Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 01/22] kvargs: build before EAL Gaetan Rivet
2018-06-14 14:10 ` Bruce Richardson
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 02/22] eal: list acceptable init priorities Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 03/22] eal: add last init priority Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 04/22] eal: introduce dtor macros Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 05/22] eal: introduce device class abstraction Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 06/22] eal/class: register destructor Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 07/22] eal/dev: add device iterator interface Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 08/22] eal/class: add device iteration Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 09/22] eal/bus: " Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 10/22] eal/dev: implement device iteration initialization Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 11/22] eal/dev: implement device iteration Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 12/22] kvargs: add generic string matching callback Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 13/22] bus/pci: fix find device implementation Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 14/22] bus/pci: implement device iteration and comparison Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 15/22] bus/pci: add device matching field id Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 16/22] bus/vdev: fix find device implementation Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 17/22] bus/vdev: implement device iteration Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 18/22] bus/vdev: add device matching field driver Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 19/22] ethdev: add private generic device iterator Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 20/22] ethdev: register ether layer as a class Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 21/22] ethdev: add device matching field name Gaetan Rivet
2018-04-15 15:07 ` [dpdk-dev] [PATCH v7 22/22] app/testpmd: add show device command Gaetan Rivet
2018-06-14 10:59 ` Iremonger, Bernard
2018-06-14 11:35 ` Gaëtan Rivet
2018-04-22 22:54 ` [dpdk-dev] [PATCH v7 00/22] Device querying Thomas Monjalon
2018-04-24 10:03 ` Gaëtan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 00/21] " Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 01/21] devargs: add non-variadic parsing function Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 02/21] kvargs: build before EAL Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 03/21] kvargs: introduce a more flexible parsing function Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 04/21] eal: introduce dtor macros Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 05/21] eal: introduce device class abstraction Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 06/21] eal/class: register destructor Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 07/21] devargs: add function to parse device layers Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 08/21] eal/dev: add device iterator interface Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 09/21] eal/class: add device iteration Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 10/21] eal/bus: " Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 11/21] eal/dev: implement device iteration initialization Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 12/21] eal/dev: implement device iteration Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 13/21] kvargs: add generic string matching callback Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 14/21] bus/pci: implement device iteration and comparison Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 15/21] bus/pci: add device matching field id Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 16/21] bus/vdev: implement device iteration Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 17/21] bus/vdev: add device matching field driver Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 18/21] ethdev: add private generic device iterator Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 19/21] ethdev: register ether layer as a class Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 20/21] ethdev: add device matching field name Gaetan Rivet
2018-06-26 16:56 ` [dpdk-dev] [PATCH v8 21/21] app/testpmd: add show device command Gaetan Rivet
2018-06-28 10:03 ` Iremonger, Bernard
2018-06-28 10:09 ` Gaëtan Rivet
2018-06-28 11:28 ` Iremonger, Bernard
2018-06-28 11:56 ` Gaëtan Rivet
2018-06-27 10:55 ` [dpdk-dev] [PATCH v8 00/21] Device querying Bruce Richardson
2018-06-27 11:29 ` Gaëtan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 00/27] " Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 01/27] devargs: add non-variadic parsing function Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 02/27] kvargs: remove error logs Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 03/27] kvargs: build before EAL Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 04/27] kvargs: introduce a more flexible parsing function Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 05/27] eal: introduce dtor macros Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 06/27] eal: introduce device class abstraction Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 07/27] eal/class: register destructor Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 08/27] devargs: add function to parse device layers Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 09/27] eal/dev: add device iterator interface Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 10/27] eal/class: add device iteration Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 11/27] eal/bus: " Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 12/27] eal/dev: implement device iteration initialization Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 13/27] eal/dev: implement device iteration Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 14/27] kvargs: add generic string matching callback Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 15/27] bus/pci: implement device iteration and comparison Gaetan Rivet
2018-07-03 22:14 ` [dpdk-dev] [PATCH v9 16/27] bus/pci: add device matching field id Gaetan Rivet
2018-07-03 22:15 ` [dpdk-dev] [PATCH v9 17/27] bus/vdev: implement device iteration Gaetan Rivet
2018-07-03 22:15 ` [dpdk-dev] [PATCH v9 18/27] bus/vdev: add device matching field driver Gaetan Rivet
2018-07-03 22:15 ` [dpdk-dev] [PATCH v9 19/27] ethdev: add private generic device iterator Gaetan Rivet
2018-07-03 22:15 ` [dpdk-dev] [PATCH v9 20/27] ethdev: register ether layer as a class Gaetan Rivet
2018-07-04 12:20 ` Andrew Rybchenko
2018-07-05 9:36 ` Gaëtan Rivet
2018-07-05 11:13 ` Bruce Richardson
2018-07-05 11:54 ` Gaëtan Rivet
2018-07-03 22:15 ` [dpdk-dev] [PATCH v9 21/27] ethdev: add device matching field name Gaetan Rivet
2018-07-03 22:15 ` [dpdk-dev] [PATCH v9 22/27] app/testpmd: add show device command Gaetan Rivet
2018-07-03 22:15 ` [dpdk-dev] [PATCH v9 23/27] bus/pci: pre-process declarative PCI devargs Gaetan Rivet
2018-07-03 22:15 ` [dpdk-dev] [PATCH v9 24/27] bus/vdev: pre-process declarative vdev devargs Gaetan Rivet
2018-07-03 22:15 ` [dpdk-dev] [PATCH v9 25/27] bus/pci: process declarative PCI devargs Gaetan Rivet
2018-07-03 22:15 ` [dpdk-dev] [PATCH v9 26/27] ethdev: process declarative eth devargs Gaetan Rivet
2018-07-03 22:15 ` [dpdk-dev] [PATCH v9 27/27] eal: add generic dev parameter Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 00/27] Device querying Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 01/27] devargs: add non-variadic parsing function Gaetan Rivet
2018-07-05 14:44 ` Thomas Monjalon
2018-07-11 11:46 ` Shreyansh Jain
2018-07-11 12:01 ` Gaëtan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 02/27] kvargs: remove error logs Gaetan Rivet
2018-07-05 21:51 ` Thomas Monjalon
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 03/27] kvargs: build before EAL Gaetan Rivet
2018-07-05 21:50 ` Thomas Monjalon
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 04/27] kvargs: introduce a more flexible parsing function Gaetan Rivet
2018-07-05 22:00 ` Thomas Monjalon
2018-07-11 11:55 ` Shreyansh Jain
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 05/27] eal: introduce dtor macros Gaetan Rivet
2018-07-06 4:17 ` Shreyansh Jain
2018-07-10 11:40 ` Thomas Monjalon
2018-07-10 12:56 ` Gaëtan Rivet
2018-07-10 13:06 ` Thomas Monjalon
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 06/27] eal: introduce device class abstraction Gaetan Rivet
2018-07-11 8:10 ` Thomas Monjalon
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 07/27] eal/class: register destructor Gaetan Rivet
2018-07-11 8:12 ` Thomas Monjalon
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 08/27] devargs: add function to parse device layers Gaetan Rivet
2018-07-11 8:19 ` Thomas Monjalon
2018-07-11 8:41 ` Gaëtan Rivet
2018-07-11 9:30 ` Thomas Monjalon
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 09/27] eal/dev: add device iterator interface Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 10/27] eal/class: add device iteration Gaetan Rivet
2018-07-11 9:47 ` Thomas Monjalon
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 11/27] eal/bus: " Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 12/27] eal/dev: implement device iteration initialization Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 13/27] eal/dev: implement device iteration Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 14/27] kvargs: add generic string matching callback Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 15/27] bus/pci: implement device iteration and comparison Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 16/27] bus/pci: add device matching field id Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 17/27] bus/vdev: implement device iteration Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 18/27] bus/vdev: add device matching field driver Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 19/27] ethdev: add private generic device iterator Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 20/27] ethdev: register ether layer as a class Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 21/27] ethdev: add device matching field name Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 22/27] app/testpmd: add show device command Gaetan Rivet
2018-07-10 14:45 ` Iremonger, Bernard
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 23/27] bus/pci: pre-process declarative PCI devargs Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 24/27] bus/vdev: pre-process declarative vdev devargs Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 25/27] bus/pci: process declarative PCI devargs Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 26/27] ethdev: process declarative eth devargs Gaetan Rivet
2018-07-05 11:48 ` [dpdk-dev] [PATCH v10 27/27] eal: add generic dev parameter Gaetan Rivet
2018-07-11 21:44 ` [dpdk-dev] [PATCH v11 00/25] Device querying Gaetan Rivet
2018-07-11 21:44 ` [dpdk-dev] [PATCH v11 01/25] devargs: use rte-log functions Gaetan Rivet
2018-07-11 21:44 ` [dpdk-dev] [PATCH v11 02/25] devargs: add non-variadic parsing function Gaetan Rivet
2018-07-11 21:44 ` [dpdk-dev] [PATCH v11 03/25] kvargs: remove error logs Gaetan Rivet
2018-07-11 21:44 ` [dpdk-dev] [PATCH v11 04/25] kvargs: build before EAL Gaetan Rivet
2018-07-11 21:44 ` [dpdk-dev] [PATCH v11 05/25] kvargs: introduce a more flexible parsing function Gaetan Rivet
2018-07-11 21:44 ` [dpdk-dev] [PATCH v11 06/25] eal: introduce dtor macros Gaetan Rivet
2018-07-11 21:44 ` [dpdk-dev] [PATCH v11 07/25] eal: introduce device class abstraction Gaetan Rivet
2018-07-12 6:49 ` Shreyansh Jain
2018-07-12 7:41 ` Gaëtan Rivet
2018-07-14 10:35 ` Thomas Monjalon
2018-07-14 6:37 ` Thomas Monjalon
2018-07-11 21:44 ` [dpdk-dev] [PATCH v11 08/25] devargs: add function to parse device layers Gaetan Rivet
2018-07-12 9:48 ` Shreyansh Jain
2018-07-14 10:30 ` Thomas Monjalon
2018-07-11 21:44 ` [dpdk-dev] [PATCH v11 09/25] eal/dev: add device iterator interface Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 10/25] eal/dev: implement device iteration initialization Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 11/25] eal/dev: implement device iteration Gaetan Rivet
2018-07-12 10:58 ` Shreyansh Jain
2018-07-12 15:08 ` Gaëtan Rivet
2018-07-13 7:06 ` Shreyansh Jain [this message]
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 12/25] kvargs: add generic string matching callback Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 13/25] bus/pci: implement device iteration and comparison Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 14/25] bus/pci: add device matching field id Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 15/25] bus/vdev: implement device iteration Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 16/25] bus/vdev: add device matching field driver Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 17/25] ethdev: add private generic device iterator Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 18/25] ethdev: register ether layer as a class Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 19/25] ethdev: add device matching field name Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 20/25] app/testpmd: add show device command Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 21/25] bus/pci: pre-process declarative PCI devargs Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 22/25] bus/vdev: pre-process declarative vdev devargs Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 23/25] bus/pci: process declarative PCI devargs Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 24/25] ethdev: process declarative eth devargs Gaetan Rivet
2018-07-11 21:45 ` [dpdk-dev] [PATCH v11 25/25] eal: add generic dev parameter Gaetan Rivet
2018-07-15 21:54 ` [dpdk-dev] [PATCH v11 00/25] Device querying Thomas Monjalon
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=993bb4f2-b73a-ab38-53bf-420b9552f107@nxp.com \
--to=shreyansh.jain@nxp.com \
--cc=dev@dpdk.org \
--cc=gaetan.rivet@6wind.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).