From: Shahaf Shuler <shahafs@mellanox.com>
To: "Gaëtan Rivet" <gaetan.rivet@6wind.com>
Cc: "anatoly.burakov@intel.com" <anatoly.burakov@intel.com>,
Yongseok Koh <yskoh@mellanox.com>,
Thomas Monjalon <thomas@monjalon.net>,
"ferruh.yigit@intel.com" <ferruh.yigit@intel.com>,
"nhorman@tuxdriver.com" <nhorman@tuxdriver.com>,
"dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH 5/6] net/mlx5: support PCI device DMA map and unmap
Date: Thu, 21 Feb 2019 09:21:02 +0000 [thread overview]
Message-ID: <AM0PR0502MB3795CC68AD031A10B024F2D8C37E0@AM0PR0502MB3795.eurprd05.prod.outlook.com> (raw)
In-Reply-To: <20190214102145.hyveguazu3f64sji@bidouze.vm.6wind.com>
Thursday, February 14, 2019 12:22 PM, Gaëtan Rivet:
> Subject: Re: [PATCH 5/6] net/mlx5: support PCI device DMA map and unmap
>
> On Wed, Feb 13, 2019 at 07:11:35PM +0000, Shahaf Shuler wrote:
> > Wednesday, February 13, 2019 1:44 PM, Gaëtan Rivet:
> > > Subject: Re: [PATCH 5/6] net/mlx5: support PCI device DMA map and
> > > unmap
> > >
> > > On Wed, Feb 13, 2019 at 12:35:04PM +0100, Gaëtan Rivet wrote:
> > > > On Wed, Feb 13, 2019 at 11:10:25AM +0200, Shahaf Shuler wrote:
> > > > > The implementation reuses the external memory registration work
> > > > > done
> >
> > [..]
> >
> > > > > +
> > > > > + /**
> > > > > + * We really need to iterate all eth devices regardless of
> > > > > + * their owner.
> > > > > + */
> > > > > + while (port_id < RTE_MAX_ETHPORTS) {
> > > > > + port_id = rte_eth_find_next(port_id);
> > > > > + if (port_id >= RTE_MAX_ETHPORTS)
> > > > > + break;
> > > > > + dev = &rte_eth_devices[port_id];
> > > > > + drv_name = dev->device->driver->name;
> > > > > + if (!strncmp(drv_name, MLX5_DRIVER_NAME,
> > > > > + sizeof(MLX5_DRIVER_NAME) + 1) &&
> > > > > + pdev == RTE_DEV_TO_PCI(dev->device)) {
> > > > > + /* found the PCI device. */
> > > > > + return dev;
> > > > > + }
> > > > > + }
> > > > > + return NULL;
> > > > > +}
> > > >
> > > > Might I interest you in the new API?
> >
> > Good suggestion, will have a look on it in depth.
> >
> > > >
> > > > {
> > > > struct rte_dev_iterator it;
> > > > struct rte_device *dev;
> > > >
> > > > RTE_DEV_FOREACH(dev, "class=eth", &it)
> > > > if (dev == &pdev->device)
> > > > return it.class_device;
> > > > return NULL;
> > > > }
> > > >
> > >
> > > On that note, this could be in the PCI bus instead?
Looking in more depth into it. it looks like ethdev is the only device class which register its type.
So putting a generic iterator for every class on the PCI bus looks an overkill to me at this point.
I think I will take the above suggestion to replace the internal PMD code.
> >
> > We can put it on the PCI bus, but it would mean the PCI bus will not be
> device agnostic.
> > Currently, I couldn't find any reference to eth_dev on the PCI bus, besides
> a single macro which convert to pci device that doesn't really do type checks.
> >
> > Having it in, would mean the PCI will need start to distinguish between
> ethdev, crypto dev and what ever devices exists on its bus.
> >
>
> I think it's worth thinking about it.
> It can stay class-agnostic:
>
> void *
> rte_pci_device_class(struct rte_pci_device *pdev, const char *class)
> {
> char devstr[15+strlen(class)];
> struct rte_dev_iterator it;
> struct rte_device *dev;
>
> snprintf(devstr, sizeof(devstr), "bus=pci/class=%s", class);
> RTE_DEV_FOREACH(dev, devstr, &it)
> if (dev == &pdev->device)
> return it.class_device;
> return NULL;
> }
>
> (not a fan of the stack VLA but whatever.)
> then:
>
> eth_dev = rte_pci_device_class(pdev, "eth");
>
> Whichever type of device could be returned. Only limit is that you have to
> know beforehand what is the device type of the PCI device you are querying
> about, but that's necessary anyway.
>
> And if it was instead a crypto dev, it would return NULL.
>
> --
> Gaëtan Rivet
> 6WIND
next prev parent reply other threads:[~2019-02-21 9:21 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-13 9:10 [dpdk-dev] [PATCH 0/6] introduce DMA memory mapping for external memory Shahaf Shuler
2019-02-13 9:10 ` [dpdk-dev] [PATCH 1/6] vfio: allow DMA map of memory for the default vfio fd Shahaf Shuler
2019-02-13 9:45 ` Gaëtan Rivet
2019-02-13 11:38 ` Gaëtan Rivet
2019-02-13 15:23 ` Shahaf Shuler
2019-02-13 14:41 ` Burakov, Anatoly
2019-02-13 9:10 ` [dpdk-dev] [PATCH 2/6] vfio: don't fail to DMA map if memory is already mapped Shahaf Shuler
2019-02-13 9:58 ` Gaëtan Rivet
2019-02-13 19:52 ` Shahaf Shuler
2019-02-13 9:10 ` [dpdk-dev] [PATCH 3/6] bus: introduce DMA memory mapping for external memory Shahaf Shuler
2019-02-13 11:17 ` Gaëtan Rivet
2019-02-13 19:07 ` Shahaf Shuler
2019-02-14 14:00 ` Gaëtan Rivet
2019-02-17 6:23 ` Shahaf Shuler
2019-02-13 9:10 ` [dpdk-dev] [PATCH 4/6] net/mlx5: refactor external memory registration Shahaf Shuler
2019-02-13 9:10 ` [dpdk-dev] [PATCH 5/6] net/mlx5: support PCI device DMA map and unmap Shahaf Shuler
2019-02-13 11:35 ` Gaëtan Rivet
2019-02-13 11:44 ` Gaëtan Rivet
2019-02-13 19:11 ` Shahaf Shuler
2019-02-14 10:21 ` Gaëtan Rivet
2019-02-21 9:21 ` Shahaf Shuler [this message]
2019-02-13 9:10 ` [dpdk-dev] [PATCH 6/6] doc: deprecate VFIO DMA map APIs Shahaf Shuler
2019-02-13 11:43 ` [dpdk-dev] [PATCH 0/6] introduce DMA memory mapping for external memory Alejandro Lucero
2019-02-13 19:24 ` Shahaf Shuler
2019-02-14 10:19 ` Burakov, Anatoly
2019-02-14 13:28 ` Shahaf Shuler
2019-02-14 16:19 ` Burakov, Anatoly
2019-02-17 6:18 ` Shahaf Shuler
2019-02-18 12:21 ` Burakov, Anatoly
2019-02-14 12:22 ` Alejandro Lucero
2019-02-14 12:27 ` Alejandro Lucero
2019-02-14 13:41 ` Shahaf Shuler
2019-02-14 16:43 ` Burakov, Anatoly
2019-02-21 14:50 ` [dpdk-dev] [PATCH v2 " Shahaf Shuler
2019-03-05 13:59 ` [dpdk-dev] [PATCH v3 " Shahaf Shuler
2019-03-10 8:27 ` [dpdk-dev] [PATCH v4 " Shahaf Shuler
2019-03-10 8:27 ` [dpdk-dev] [PATCH v4 1/6] vfio: allow DMA map of memory for the default vfio fd Shahaf Shuler
2019-03-30 0:23 ` Thomas Monjalon
2019-03-30 0:23 ` Thomas Monjalon
2019-03-30 14:29 ` Thomas Monjalon
2019-03-30 14:29 ` Thomas Monjalon
2019-03-10 8:27 ` [dpdk-dev] [PATCH v4 2/6] vfio: don't fail to DMA map if memory is already mapped Shahaf Shuler
2019-03-10 8:28 ` [dpdk-dev] [PATCH v4 3/6] bus: introduce device level DMA memory mapping Shahaf Shuler
2019-03-11 10:19 ` Burakov, Anatoly
2019-03-13 9:56 ` Thomas Monjalon
2019-03-13 11:12 ` Shahaf Shuler
2019-03-13 11:19 ` Thomas Monjalon
2019-03-13 11:47 ` Burakov, Anatoly
2019-03-30 14:36 ` Thomas Monjalon
2019-03-30 14:36 ` Thomas Monjalon
2019-03-10 8:28 ` [dpdk-dev] [PATCH v4 4/6] net/mlx5: refactor external memory registration Shahaf Shuler
2019-03-10 8:28 ` [dpdk-dev] [PATCH v4 5/6] net/mlx5: support PCI device DMA map and unmap Shahaf Shuler
2019-03-10 8:28 ` [dpdk-dev] [PATCH v4 6/6] doc: deprecation notice for VFIO DMA map APIs Shahaf Shuler
2019-03-11 10:20 ` Burakov, Anatoly
2019-03-11 17:35 ` Rami Rosen
2019-10-01 15:20 ` David Marchand
2019-10-02 4:53 ` Shahaf Shuler
2019-10-02 7:51 ` David Marchand
2019-03-11 9:27 ` [dpdk-dev] [PATCH v4 0/6] introduce DMA memory mapping for external memory Gaëtan Rivet
2019-03-30 14:40 ` Thomas Monjalon
2019-03-30 14:40 ` Thomas Monjalon
2019-03-05 13:59 ` [dpdk-dev] [PATCH v3 1/6] vfio: allow DMA map of memory for the default vfio fd Shahaf Shuler
2019-03-05 13:59 ` [dpdk-dev] [PATCH v3 2/6] vfio: don't fail to DMA map if memory is already mapped Shahaf Shuler
2019-03-05 13:59 ` [dpdk-dev] [PATCH v3 3/6] bus: introduce device level DMA memory mapping Shahaf Shuler
2019-03-05 16:35 ` Burakov, Anatoly
2019-03-05 13:59 ` [dpdk-dev] [PATCH v3 4/6] net/mlx5: refactor external memory registration Shahaf Shuler
2019-03-05 13:59 ` [dpdk-dev] [PATCH v3 5/6] net/mlx5: support PCI device DMA map and unmap Shahaf Shuler
2019-03-05 13:59 ` [dpdk-dev] [PATCH v3 6/6] doc: deprecation notice for VFIO DMA map APIs Shahaf Shuler
2019-02-21 14:50 ` [dpdk-dev] [PATCH v2 1/6] vfio: allow DMA map of memory for the default vfio fd Shahaf Shuler
2019-02-28 11:56 ` Burakov, Anatoly
2019-02-21 14:50 ` [dpdk-dev] [PATCH v2 2/6] vfio: don't fail to DMA map if memory is already mapped Shahaf Shuler
2019-02-28 11:58 ` Burakov, Anatoly
2019-02-21 14:50 ` [dpdk-dev] [PATCH v2 3/6] bus: introduce device level DMA memory mapping Shahaf Shuler
2019-02-28 12:14 ` Burakov, Anatoly
2019-02-28 14:41 ` Burakov, Anatoly
2019-02-21 14:50 ` [dpdk-dev] [PATCH v2 4/6] net/mlx5: refactor external memory registration Shahaf Shuler
2019-02-21 14:50 ` [dpdk-dev] [PATCH v2 5/6] net/mlx5: support PCI device DMA map and unmap Shahaf Shuler
2019-02-21 14:50 ` [dpdk-dev] [PATCH v2 6/6] doc: deprecate VFIO DMA map APIs Shahaf Shuler
2019-02-21 15:50 ` David Marchand
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=AM0PR0502MB3795CC68AD031A10B024F2D8C37E0@AM0PR0502MB3795.eurprd05.prod.outlook.com \
--to=shahafs@mellanox.com \
--cc=anatoly.burakov@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=gaetan.rivet@6wind.com \
--cc=nhorman@tuxdriver.com \
--cc=thomas@monjalon.net \
--cc=yskoh@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 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).