[prev in list] [next in list] [prev in thread] [next in thread]
List: dpdk-users
Subject: Re: [dpdk-users] Getting pci id using port id with latest DPDK
From: Shreyansh Jain <shreyansh.jain () nxp ! com>
Date: 2017-03-23 9:16:56
Message-ID: VI1PR0401MB24647270B85BE5B3A32F9E7D903F0 () VI1PR0401MB2464 ! eurprd04 ! prod ! outlook ! com
[Download RAW message or body]
> -----Original Message-----
> From: users [mailto:users-bounces@dpdk.org] On Behalf Of Mike Shang
> Sent: Thursday, March 23, 2017 1:17 PM
> To: users@dpdk.org
> Subject: [dpdk-users] Getting pci id using port id with latest DPDK
>
> Hi,
> I have legacy code that needs to get pci id using port id in order to make
> different config for different pci device. In the past, we can do that with
> a simple call to rte_eth_dev_info_get() and look into the pci_dev file in
> rte_eth_dev_info structure. But with latest DPDK, rte_eth_dev_info_get() no
> longer fills pci_dev after this commit (
> http://dpdk.org/browse/dpdk/commit/lib/librte_ether/rte_ethdev.c?id=ae34410a8
> a8aff1b8382e16fcc89353648355be0
> ) Looks like the developers wanted to decouple pci device from a general
> device.
Yes, that is right. The idea is to remove 'PCI' dependency on the librte layer and \
push that as drivers' scope (anywhere other than generic lib layer). (At least from \
those APIs which are not PCI specific)
> Under such condition, how can I get the needed pci id from port id ? I scan
> all function listed in rte_ethdev.h but didn't find such function. Maybe
> there an indirect to do that? as a last resort, I can patch the dpdk source
> code to make rte_eth_dev_info_get() fill pci_dev again but that may be the
> last thing I would consider.....
You are saying that for the device you are using this field is not populated? For \
example, if you look at drivers/net/ixgbe/ixgbe_ethdev.c:
--->8---
3313 static void
3314 ixgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
3315 {
3316 struct rte_pci_device *pci_dev = IXGBE_DEV_TO_PCI(dev);
3317 struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
3318 struct rte_eth_conf *dev_conf = &dev->data->dev_conf;
3319
3320 dev_info->pci_dev = pci_dev;
--->8---
dev_info->pci_dev is being filled by the IXGBE driver.
Can you confirm which driver you are using which doesn't fill this information?
(I am on top of tree: 84aac97b4)
Also, see the commit ae34410a8a8aff1b8382e16fcc89353648355be0
--->8---
commit ae34410a8a8aff1b8382e16fcc89353648355be0
Author: Jan Blunck <jblunck@infradead.org>
Date: Fri Dec 23 16:58:10 2016 +0100
ethdev: move info filling of PCI into drivers
Only the drivers itself can decide if it could fill PCI information fields
of dev_info.
Signed-off-by: Jan Blunck <jblunck@infradead.org>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
...
...
diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c
index fd95136..7237bcc 100644
--- a/drivers/net/bnx2x/bnx2x_ethdev.c
+++ b/drivers/net/bnx2x/bnx2x_ethdev.c
@@ -431,6 +431,7 @@ static void
bnx2x_dev_infos_get(struct rte_eth_dev *dev, __rte_unused struct rte_eth_dev_info \
*dev_info) {
struct bnx2x_softc *sc = dev->data->dev_private;
+ dev_info->pci_dev = dev->pci_dev;
dev_info->max_rx_queues = sc->max_rx_queues;
dev_info->max_tx_queues = sc->max_tx_queues;
--->8---
-
Shreyansh
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic