All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Monjalon <thomas.monjalon@6wind.com>
To: Jan Blunck <jblunck@infradead.org>
Cc: dev@dpdk.org, Shreyansh Jain <shreyansh.jain@nxp.com>,
	David Marchand <david.marchand@6wind.com>,
	Stephen Hemminger <stephen@networkplumber.org>
Subject: Re: [PATCH v4 18/23] ethdev: Helper to map to struct rte_pci_device
Date: Fri, 23 Dec 2016 13:47:42 +0100	[thread overview]
Message-ID: <1921808.Bo5Y97VPPb@xps13> (raw)
In-Reply-To: <CALe+Z02otUPPtS7_X+5myUeZVVdhs==wX8SMbCuFV-FMoWx0kw@mail.gmail.com>

2016-12-23 11:27, Jan Blunck:
> On Fri, Dec 23, 2016 at 9:30 AM, Thomas Monjalon
> <thomas.monjalon@6wind.com> wrote:
> > 2016-12-22 19:13, Jan Blunck:
> >> On Thu, Dec 22, 2016 at 4:21 PM, Thomas Monjalon
> >> <thomas.monjalon@6wind.com> wrote:
> >> > 2016-12-21 16:09, Jan Blunck:
> >> >> PCI drivers could use this helper instead of directly accessing fields of
> >> >> rte_eth_dev to map to rte_pci_device.
> >> > [...]
> >> >> +/**
> >> >> + * @internal
> >> >> + * Helper for drivers that need to convert from rte_eth_dev to rte_pci_device.
> >> >> + */
> >> >> +static inline struct rte_pci_device *__attribute__((always_inline))
> >> >> +rte_eth_dev_to_pci(struct rte_eth_dev *eth_dev)
> >> >> +{
> >> >> +     return eth_dev->pci_dev;
> >> >> +}
> >> >
> >> > Why adding this function instead of just using DEV_PCI_DEV(eth_dev->device)?
> >> >
> >> > I think we must try to avoid any PCI (or other bus) reference inside ethdev.h.
> >>
> >> David requested to move it from rte_pci.h to rte_ethdev.h.
> >>
> >> It could get forward declared here if one doesn't use it. On the other
> >> hand the rte_pci.h would be required to include rte_ethdev.h if we
> >> move it.
> >
> > I think there is a misunderstanding.
> > I was just suggesting to drop this function.
> 
> But that would undo the whole purpose of adding a helper. The purpose
> of the helper is to map from ethdev to the low-level rte_pci_device.
> If we remove this helper all users still need to know how to map to
> the embedded device structure. What you ask for also means that the
> patch "ethdev: Decouple struct rte_eth_dev from struct rte_pci_device"
> needs to change all users of the DEV_PCI_DEV() instead of changing the
> helper introduced in this patch.

Yes, using RTE_PCI_DEV(eth_dev->device) instead of rte_eth_dev_to_pci(eth_dev).
Is it a problem to know that the field name is "device" to access the
underlying device characteristics?

> Let me summarize the workable options from my perspective:
> 1. helper macro to map from eth_dev to pci_dev in rte_pci.h
> 2. helper inline function to map from eth_dev to pci_dev in rte_ethdev.h
> 3. put helpers into new header file rte_ethdrv.h
> 
> I'm still in favor of the first option but David suggested to remove
> it from eal. I could also counter the type-safety argument from
> Stephen by adding a type check to it.

My proposal is:
4. no helper, use eth_dev->device

  reply	other threads:[~2016-12-23 12:47 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-21 15:09 [PATCH v4 00/23] Decouple ethdev from PCI device Jan Blunck
2016-12-21 15:09 ` [PATCH v4 01/23] eal: define container_of macro Jan Blunck
2016-12-21 15:09 ` [PATCH v4 02/23] eal: Allow passing const rte_intr_handle Jan Blunck
2016-12-21 15:09 ` [PATCH v4 03/23] rte_device: make driver pointer const Jan Blunck
2016-12-22  7:18   ` Shreyansh Jain
2016-12-21 15:09 ` [PATCH v4 04/23] pmd: remove useless reset of dev_info->dev_pci Jan Blunck
2016-12-21 15:09 ` [PATCH v4 05/23] e1000: localize mapping from eth_dev to pci Jan Blunck
2016-12-21 15:09 ` [PATCH v4 06/23] ixgbe: localize mapping from eth_dev to pci_device Jan Blunck
2016-12-21 15:09 ` [PATCH v4 07/23] i40e: localize mapping of eth_dev to pci Jan Blunck
2016-12-21 15:09 ` [PATCH v4 08/23] broadcom: localize mapping from " Jan Blunck
2016-12-21 15:09 ` [PATCH v4 09/23] virtio: Don't fill dev_info->driver_name Jan Blunck
2016-12-21 15:09 ` [PATCH v4 10/23] virtio: Add vtpci_intr_handle() helper to get rte_intr_handle Jan Blunck
2016-12-21 20:08   ` Stephen Hemminger
2016-12-23 11:04     ` Jan Blunck
2016-12-21 15:09 ` [PATCH v4 11/23] virtio: Don't depend on struct rte_eth_dev's pci_dev Jan Blunck
2016-12-21 15:09 ` [PATCH v4 12/23] bnx2x: localize mapping from eth_dev to pci Jan Blunck
2016-12-21 16:35   ` Harish Patil
2016-12-21 15:09 ` [PATCH v4 13/23] fm10k: " Jan Blunck
2016-12-21 15:09 ` [PATCH v4 14/23] qede: localize mapping of " Jan Blunck
2016-12-21 16:35   ` Harish Patil
2016-12-21 15:09 ` [PATCH v4 15/23] szedata2: localize handling of pci resources Jan Blunck
2016-12-21 15:09 ` [PATCH v4 16/23] nfp: localize rte_pci_device handling Jan Blunck
2016-12-21 15:09 ` [PATCH v4 17/23] vmxnet3: use eth_dev->data->drv_name instead of pci_drv name Jan Blunck
2016-12-21 15:09 ` [PATCH v4 18/23] ethdev: Helper to map to struct rte_pci_device Jan Blunck
2016-12-22 15:21   ` Thomas Monjalon
2016-12-22 18:13     ` Jan Blunck
2016-12-23  8:30       ` Thomas Monjalon
2016-12-23 10:27         ` Jan Blunck
2016-12-23 12:47           ` Thomas Monjalon [this message]
2016-12-21 15:09 ` [PATCH v4 19/23] drivers: Replace per-PMD macros with rte_eth_dev_to_pci() helper Jan Blunck
2016-12-21 15:09 ` [PATCH v4 20/23] drivers: Use " Jan Blunck
2016-12-21 15:09 ` [PATCH v4 21/23] ethdev: Move filling of rte_eth_dev_info->pci_dev to dev_infos_get() Jan Blunck
2016-12-21 20:09   ` Stephen Hemminger
2016-12-22  8:11     ` Shreyansh Jain
2016-12-23 10:50       ` Jan Blunck
2016-12-23 11:11         ` Shreyansh Jain
2016-12-23 11:27           ` Jan Blunck
2016-12-23 11:39             ` Shreyansh Jain
2016-12-21 15:09 ` [PATCH v4 22/23] ethdev: Decouple interrupt handling from PCI device Jan Blunck
2016-12-22 15:13   ` Thomas Monjalon
2016-12-22 18:26     ` Jan Blunck
2016-12-21 15:09 ` [PATCH v4 23/23] ethdev: Decouple struct rte_eth_dev from struct rte_pci_device Jan Blunck
2016-12-22 15:22   ` Thomas Monjalon
2016-12-22 15:26 ` [PATCH v4 00/23] Decouple ethdev from PCI device Thomas Monjalon
2016-12-23 14:28   ` Thomas Monjalon
2016-12-23 15:57 ` [PATCH v5 00/20] " Jan Blunck
2016-12-25 22:33   ` Thomas Monjalon
2017-01-03 12:20     ` Ferruh Yigit
2017-01-06 10:07       ` Andrew Rybchenko
2017-01-03 12:24     ` Ferruh Yigit
2017-01-03 14:06       ` Thomas Monjalon
2017-01-03 14:40         ` Ferruh Yigit
2016-12-23 15:57 ` [PATCH v5 01/20] eal: define container_of macro Jan Blunck
2016-12-23 15:57 ` [PATCH v5 02/20] eal: Allow passing const rte_intr_handle Jan Blunck
2017-01-17  4:42   ` Tan, Jianfeng
2016-12-23 15:57 ` [PATCH v5 03/20] rte_device: make driver pointer const Jan Blunck
2016-12-23 16:19   ` Thomas Monjalon
2016-12-23 22:08   ` Stephen Hemminger
2016-12-23 15:57 ` [PATCH v5 04/20] pmd: remove useless reset of dev_info->dev_pci Jan Blunck
2016-12-23 15:57 ` [PATCH v5 05/20] e1000: localize mapping from eth_dev to pci Jan Blunck
2016-12-23 16:20   ` Thomas Monjalon
2016-12-23 22:06   ` Stephen Hemminger
2016-12-23 15:57 ` [PATCH v5 06/20] ixgbe: localize mapping from eth_dev to pci_device Jan Blunck
2016-12-23 15:57 ` [PATCH v5 07/20] i40e: localize mapping of eth_dev to pci Jan Blunck
2016-12-23 15:57 ` [PATCH v5 08/20] broadcom: localize mapping from " Jan Blunck
2016-12-23 15:58 ` [PATCH v5 09/20] virtio: Don't fill dev_info->driver_name Jan Blunck
2016-12-23 15:58 ` [PATCH v5 10/20] virtio: Add vtpci_intr_handle() helper to get rte_intr_handle Jan Blunck
2016-12-23 15:58 ` [PATCH v5 11/20] virtio: Don't depend on struct rte_eth_dev's pci_dev Jan Blunck
2016-12-23 15:58 ` [PATCH v5 12/20] bnx2x: localize mapping from eth_dev to pci Jan Blunck
2016-12-23 15:58 ` [PATCH v5 13/20] fm10k: " Jan Blunck
2016-12-23 15:58 ` [PATCH v5 14/20] qede: localize mapping of " Jan Blunck
2016-12-23 15:58 ` [PATCH v5 15/20] szedata2: localize handling of pci resources Jan Blunck
2016-12-23 18:31   ` Thomas Monjalon
2016-12-23 15:58 ` [PATCH v5 16/20] nfp: localize rte_pci_device handling Jan Blunck
2016-12-23 15:58 ` [PATCH v5 17/20] vmxnet3: use eth_dev->data->drv_name instead of pci_drv name Jan Blunck
2016-12-23 15:58 ` [PATCH v5 18/20] ethdev: Decouple interrupt handling from PCI device Jan Blunck
2016-12-23 15:58 ` [PATCH v5 19/20] ethdev: Move dev_info filling of PCI information into drivers Jan Blunck
2016-12-23 18:45   ` Thomas Monjalon
2016-12-23 15:58 ` [PATCH v5 20/20] ethdev: Decouple from PCI device Jan Blunck
2016-12-23 16:17   ` Thomas Monjalon
2016-12-23 16:20     ` Jan Blunck

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=1921808.Bo5Y97VPPb@xps13 \
    --to=thomas.monjalon@6wind.com \
    --cc=david.marchand@6wind.com \
    --cc=dev@dpdk.org \
    --cc=jblunck@infradead.org \
    --cc=shreyansh.jain@nxp.com \
    --cc=stephen@networkplumber.org \
    /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.