From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Blunck Subject: Re: [PATCH v4 18/23] ethdev: Helper to map to struct rte_pci_device Date: Fri, 23 Dec 2016 11:27:33 +0100 Message-ID: References: <1482332986-7599-1-git-send-email-jblunck@infradead.org> <2253386.A4pj8ELuPQ@xps13> <4070328.Wvu0M6jAFZ@xps13> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Cc: dev@dpdk.org, Shreyansh Jain , David Marchand , Stephen Hemminger To: Thomas Monjalon Return-path: Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by dpdk.org (Postfix) with ESMTP id A70BC10E06 for ; Fri, 23 Dec 2016 11:27:34 +0100 (CET) Received: by mail-wm0-f65.google.com with SMTP id u144so40749555wmu.0 for ; Fri, 23 Dec 2016 02:27:34 -0800 (PST) In-Reply-To: <4070328.Wvu0M6jAFZ@xps13> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Fri, Dec 23, 2016 at 9:30 AM, Thomas Monjalon wrote: > 2016-12-22 19:13, Jan Blunck: >> On Thu, Dec 22, 2016 at 4:21 PM, Thomas Monjalon >> 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. 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.