From: Thomas Monjalon <thomas@monjalon.net>
To: Andrew Rybchenko <arybchenko@solarflare.com>
Cc: dev@dpdk.org, gaetan.rivet@6wind.com, ophirmu@mellanox.com,
ferruh.yigit@intel.com
Subject: Re: [PATCH v2 2/6] ethdev: add iterator to match devargs input
Date: Tue, 09 Oct 2018 11:49:26 +0200 [thread overview]
Message-ID: <1711996.UYlBJmHL7p@xps> (raw)
In-Reply-To: <8b6df6a2-93ea-396f-c35e-31ae710c30c9@solarflare.com>
09/10/2018 11:31, Andrew Rybchenko:
> On 10/9/18 3:16 AM, Thomas Monjalon wrote:
> > if (str != NULL) {
> > - kvargs = rte_kvargs_parse(str, eth_params_keys);
> > + if (str[0] == '+') /* no validation of keys */
> > + str ++;
>
> As I understand it should be no space before ++
Yes, I ran checkpatch after sending the patches :(
[...]
> > + /*
> > + * Assume parameters of old syntax can match only at ethdev level.
> > + * Extra parameters will be ignored, thanks to "+" prefix.
> > + */
> > + str_size = strlen(devargs.args) + 2;
> > + cls_str = malloc(str_size);
> > + if (cls_str == NULL) {
> > + ret = -ENOMEM;
> > + goto error;
> > + }
> > + ret = snprintf(cls_str, str_size, "+%s", devargs.args);
> > + if (ret < 0) {
>
> As I understand we expect ret == str_size - 1 here. May be it makes sent
> to harden the check.
No strong opinion. OK I'll change the check.
> > + ret = -EINVAL;
> > + goto error;
> > + }
> > + iter->cls_str = cls_str;
> > + free(devargs.args); /* allocated by rte_devargs_parse() */
> > + devargs.args = NULL;
> > +
> > + iter->bus = devargs.bus;
> > + if (iter->bus->dev_iterate == NULL) {
> > + ret = -ENOTSUP;
> > + goto error;
> > + }
> > +
> > + /* Convert bus args to new syntax for use with new API dev_iterate. */
> > + if (strcmp(iter->bus->name, "vdev") == 0)
> > + bus_param_key = "name";
> > + else if (strcmp(iter->bus->name, "pci") == 0)
> > + bus_param_key = "addr";
>
> I thought that if one branch has curly brackets other branches should
> have curly brackets as well.
Yes, I don't like this coding rule but I will change.
> > + else {
> > + ret = -ENOTSUP;
> > + goto error;
> > + }
> > + str_size = strlen(bus_param_key) + strlen(devargs.name) + 2;
> > + bus_str = malloc(str_size);
> > + if (bus_str == NULL) {
> > + ret = -ENOMEM;
> > + goto error;
> > + }
> > + ret = snprintf(bus_str, str_size, "%s=%s",
> > + bus_param_key, devargs.name);
> > + if (ret < 0) {
>
> May be it makes sense to make the check more strict: ret != str_size - 1
OK
> > + ret = -EINVAL;
> > + goto error;
> > + }
[...]
> > +void __rte_experimental
> > +rte_eth_iterator_free(struct rte_dev_iterator *iter)
>
> Yes, I know that the name is suggested by me, but maybe
> it should be rte_eth_iterator_fini() or _cleanup() as pair to _init.
Yes, you're right, it is not freeing the whole structure.
I will name it "cleanup", and will use memset to reset all fields.
> > +{
> > + free(RTE_CAST_FIELD(iter, bus_str, char *)); /* workaround const */
> > + iter->bus_str = NULL;
> > + free(RTE_CAST_FIELD(iter, cls_str, char *)); /* workaround const */
> > + iter->cls_str = NULL;
> > +}
[...]
> > +/**
> > + * @warning
> > + * @b EXPERIMENTAL: this API may change without prior notice.
> > + *
> > + * Free some allocated fields of the iterator.
> > + *
> > + * This function is automatically called by rte_eth_iterator_next()
> > + * on the last iteration (i.e. when no more matching port is found).
> > + *
>
> May be it makes sense to mention that it is safe to call it twice.
> It could be simpler to use it taking the possibility into account.
OK, good idea.
> > + * @param iter
> > + * Device iterator handle initialized by rte_eth_iterator_init().
> > + * The fields bus_str and cls_str are freed if needed.
> > + */
> > +__rte_experimental
> > +void rte_eth_iterator_free(struct rte_dev_iterator *iter);
[...]
> > --- a/lib/librte_ethdev/rte_ethdev_version.map
> > +++ b/lib/librte_ethdev/rte_ethdev_version.map
> > @@ -237,6 +237,8 @@ EXPERIMENTAL {
> > rte_eth_dev_owner_unset;
> > rte_eth_dev_rx_offload_name;
> > rte_eth_dev_tx_offload_name;
> > + rte_eth_iterator_init;
> > + rte_eth_iterator_next;
>
> rte_eth_iterator_free() or renamed
Yes, good catch!
As usual, thanks for the good review Andrew.
next prev parent reply other threads:[~2018-10-09 9:49 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-07 22:25 [PATCH 0/5] replace attach/detach functions Thomas Monjalon
2018-10-07 22:25 ` [PATCH 1/5] bus/vdev: add iteration filter on name Thomas Monjalon
2018-10-08 6:46 ` Andrew Rybchenko
2018-10-08 7:47 ` Thomas Monjalon
2018-10-07 22:25 ` [PATCH 2/5] ethdev: add an iterator to match some devargs input Thomas Monjalon
2018-10-08 7:06 ` Andrew Rybchenko
2018-10-08 7:58 ` Thomas Monjalon
2018-10-07 22:25 ` [PATCH 3/5] ethdev: allow iterating with only class filter Thomas Monjalon
2018-10-08 7:20 ` Andrew Rybchenko
2018-10-08 8:07 ` Thomas Monjalon
2018-10-08 9:13 ` Andrew Rybchenko
2018-10-07 22:25 ` [PATCH 4/5] ethdev: remove deprecated attach/detach functions Thomas Monjalon
2018-10-08 7:28 ` Andrew Rybchenko
2018-10-08 8:09 ` Thomas Monjalon
2018-10-07 22:25 ` [PATCH 5/5] eal: " Thomas Monjalon
2018-10-09 0:16 ` [PATCH v2 0/6] replace " Thomas Monjalon
2018-10-09 0:16 ` [PATCH v2 1/6] bus/vdev: add iteration filter on name Thomas Monjalon
2018-10-09 9:17 ` Andrew Rybchenko
2018-10-09 0:16 ` [PATCH v2 2/6] ethdev: add iterator to match devargs input Thomas Monjalon
2018-10-09 9:31 ` Andrew Rybchenko
2018-10-09 9:49 ` Thomas Monjalon [this message]
2018-10-09 0:16 ` [PATCH v2 3/6] ethdev: allow iterating with pure class filter Thomas Monjalon
2018-10-09 9:40 ` Andrew Rybchenko
2018-10-09 0:16 ` [PATCH v2 4/6] doc: replace doxygen example in contribution guide Thomas Monjalon
2018-10-09 9:41 ` Andrew Rybchenko
2018-10-09 0:16 ` [PATCH v2 5/6] ethdev: remove deprecated attach/detach functions Thomas Monjalon
2018-10-09 9:43 ` Andrew Rybchenko
2018-10-09 0:16 ` [PATCH v2 6/6] eal: " Thomas Monjalon
2018-10-09 9:44 ` Andrew Rybchenko
2018-10-09 13:34 ` [PATCH v3 0/6] replace " Thomas Monjalon
2018-10-09 13:34 ` [PATCH v3 1/6] bus/vdev: add iteration filter on name Thomas Monjalon
2018-10-09 13:34 ` [PATCH v3 2/6] ethdev: add iterator to match devargs input Thomas Monjalon
2018-10-09 14:17 ` Thomas Monjalon
2018-10-09 13:34 ` [PATCH v3 3/6] ethdev: allow iterating with pure class filter Thomas Monjalon
2018-10-09 13:34 ` [PATCH v3 4/6] doc: replace doxygen example in contribution guide Thomas Monjalon
2018-10-09 13:34 ` [PATCH v3 5/6] ethdev: remove deprecated attach/detach functions Thomas Monjalon
2018-10-09 13:34 ` [PATCH v3 6/6] eal: " Thomas Monjalon
2018-10-09 22:33 ` [PATCH v4 0/6] replace " Thomas Monjalon
2018-10-09 22:33 ` [PATCH v4 1/6] bus/vdev: add iteration filter on name Thomas Monjalon
2018-10-09 22:33 ` [PATCH v4 2/6] ethdev: add iterator to match devargs input Thomas Monjalon
2018-10-16 10:58 ` Ferruh Yigit
2018-10-16 12:06 ` Thomas Monjalon
2018-10-09 22:33 ` [PATCH v4 3/6] ethdev: allow iterating with pure class filter Thomas Monjalon
2018-10-09 22:33 ` [PATCH v4 4/6] doc: replace doxygen example in contribution guide Thomas Monjalon
2018-10-09 22:33 ` [PATCH v4 5/6] ethdev: remove deprecated attach/detach functions Thomas Monjalon
2018-10-16 11:03 ` Ferruh Yigit
2018-10-16 12:12 ` Thomas Monjalon
2018-10-09 22:33 ` [PATCH v4 6/6] eal: " Thomas Monjalon
2018-10-18 1:35 ` [PATCH v5 0/7] replace " Thomas Monjalon
2018-10-18 1:35 ` [PATCH v5 1/7] bus/vdev: add iteration filter on name Thomas Monjalon
2018-10-18 1:35 ` [PATCH v5 2/7] ethdev: add iterator to match devargs input Thomas Monjalon
2018-10-18 1:35 ` [PATCH v5 3/7] ethdev: allow iterating with pure class filter Thomas Monjalon
2018-10-18 1:35 ` [PATCH v5 4/7] doc: replace doxygen example in contribution guide Thomas Monjalon
2018-10-18 1:35 ` [PATCH v5 5/7] ethdev: remove deprecated attach/detach functions Thomas Monjalon
2018-10-18 1:35 ` [PATCH v5 6/7] eal: " Thomas Monjalon
2018-10-18 1:35 ` [PATCH v5 7/7] app/testpmd: check not detaching device twice Thomas Monjalon
2018-10-18 1:45 ` Thomas Monjalon
2018-10-22 12:31 ` [PATCH v6 0/7] replace attach/detach functions Thomas Monjalon
2018-10-22 12:31 ` [PATCH v6 1/7] bus/vdev: add iteration filter on name Thomas Monjalon
2018-10-22 12:31 ` [PATCH v6 2/7] ethdev: add iterator to match devargs input Thomas Monjalon
2018-10-22 12:31 ` [PATCH v6 3/7] ethdev: allow iterating with pure class filter Thomas Monjalon
2018-10-22 12:31 ` [PATCH v6 4/7] doc: replace doxygen example in contribution guide Thomas Monjalon
2018-10-22 12:31 ` [PATCH v6 5/7] ethdev: remove deprecated attach/detach functions Thomas Monjalon
2018-10-22 12:31 ` [PATCH v6 6/7] eal: " Thomas Monjalon
2018-10-22 12:31 ` [PATCH v6 7/7] app/testpmd: check not detaching device twice Thomas Monjalon
2018-10-22 15:11 ` [PATCH v6 0/7] replace attach/detach functions Iremonger, Bernard
2018-10-22 15:38 ` Thomas Monjalon
2018-10-23 8:28 ` [PATCH v7 " Thomas Monjalon
2018-10-23 8:28 ` [PATCH v7 1/7] bus/vdev: add iteration filter on name Thomas Monjalon
2018-10-23 8:28 ` [PATCH v7 2/7] ethdev: add iterator to match devargs input Thomas Monjalon
2018-10-23 8:28 ` [PATCH v7 3/7] ethdev: allow iterating with pure class filter Thomas Monjalon
2018-10-23 8:28 ` [PATCH v7 4/7] doc: replace doxygen example in contribution guide Thomas Monjalon
2018-10-23 8:28 ` [PATCH v7 5/7] ethdev: remove deprecated attach/detach functions Thomas Monjalon
2018-10-23 8:28 ` [PATCH v7 6/7] eal: " Thomas Monjalon
2018-10-23 8:28 ` [PATCH v7 7/7] app/testpmd: check not detaching device twice Thomas Monjalon
2018-10-23 10:01 ` Iremonger, Bernard
2018-10-23 12:03 ` Thomas Monjalon
2018-10-23 12:13 ` Thomas Monjalon
2018-10-23 12:37 ` Thomas Monjalon
2018-10-23 14:06 ` Ferruh Yigit
2018-10-23 12:39 ` Iremonger, Bernard
2018-10-23 14:06 ` [PATCH v7 0/7] replace attach/detach functions Ferruh Yigit
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=1711996.UYlBJmHL7p@xps \
--to=thomas@monjalon.net \
--cc=arybchenko@solarflare.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=gaetan.rivet@6wind.com \
--cc=ophirmu@mellanox.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.