Thread (12 messages) 12 messages, 5 authors, 2022-01-17

RE: [PATCH v1] net/axgbe: use PCI root complex device to distinguish AMD hardware

From: Namburu, Chandu-babu <hidden>
Date: 2021-12-02 05:53:21

[Public]

Hi David Marchand,

Thank you for your comments. Will change patch and submit v2 for review

Regards,
Chandu

-----Original Message-----
From: David Marchand <redacted> 
Sent: Wednesday, December 1, 2021 2:31 PM
To: Namburu, Chandu-babu <redacted>
Cc: dev <redacted>; Sebastian, Selwin <redacted>; Arsalan_Awan@mentor.com; Yigit, Ferruh <redacted>
Subject: Re: [PATCH v1] net/axgbe: use PCI root complex device to distinguish AMD hardware

On Fri, Nov 26, 2021 at 11:24 AM Chandubabu Namburu [off-list ref] wrote:
"bus/pci: optimize bus scan" broke axgbe on V1000/R1000.
RV root complex pci device does not have any kernel driver assigned so 
it is removed from pci scan list which is used in
"net/axgbe: add a HW quirk for register definitions"

Get root complex device id directly from pci sysfs instead of pci scan 
list
Please end the sentences with a '.'.

As you described, this change is a fix.
Please add a Fixes: tag and Cc: stable@dpdk.org in the commitlog if you think it should be backported to LTS releases.
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdoc.dpdk.org%2Fguides%2Fcontributing%2Fpatches.html%23patch-for-stable-releases&amp;data=04%7C01%7Cchandu%40amd.com%7C6618c303ecb146be0b5908d9b4a91c01%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637739460691977618%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=piC1U%2BPcPP2A0xwM3%2FA5qDUFXNLAj2SrLBywTFc3DFM%3D&amp;reserved=0

quoted hunk ↗ jump to hunk
Signed-off-by: Chandubabu Namburu <redacted>
---
 drivers/net/axgbe/axgbe_ethdev.c | 39 
++++++++++++++++----------------
 1 file changed, 20 insertions(+), 19 deletions(-)
diff --git a/drivers/net/axgbe/axgbe_ethdev.c 
b/drivers/net/axgbe/axgbe_ethdev.c
index 9cd056d04a..26babde354 100644
--- a/drivers/net/axgbe/axgbe_ethdev.c
+++ b/drivers/net/axgbe/axgbe_ethdev.c
@@ -10,6 +10,8 @@
 #include "axgbe_regs.h"
 #include "rte_time.h"

+#include "eal_filesystem.h"
+
 static int eth_axgbe_dev_init(struct rte_eth_dev *eth_dev);  static 
int  axgbe_dev_configure(struct rte_eth_dev *dev);  static int  
axgbe_dev_start(struct rte_eth_dev *dev); @@ -1923,28 +1925,27 @@ 
static void axgbe_default_config(struct axgbe_port *pdata)
        pdata->power_down = 0;
 }

-static int
-pci_device_cmp(const struct rte_device *dev, const void *_pci_id)
+/*
+ * Return PCI root complex device id on success else 0  */ static 
+uint16_t
+get_pci_rc_devid(void)
 {
-       const struct rte_pci_device *pdev = RTE_DEV_TO_PCI_CONST(dev);
-       const struct rte_pci_id *pcid = _pci_id;
+       char pci_sysfs[PATH_MAX];
+       const struct rte_pci_addr pci_rc_addr = {0, 0, 0, 0};
+       unsigned long device_id;

-       if (pdev->id.vendor_id == AMD_PCI_VENDOR_ID &&
-                       pdev->id.device_id == pcid->device_id)
-               return 0;
-       return 1;
-}
+       snprintf(pci_sysfs, sizeof(pci_sysfs), "%s/" PCI_PRI_FMT "/device",
+                rte_pci_get_sysfs_path(), pci_rc_addr.domain,
+                pci_rc_addr.bus, pci_rc_addr.devid, 
+ pci_rc_addr.function);
The use of rte_pci_get_sysfs_path() and in general is ugly because it only works for Linux.
We could come up with a better API in the pci bus, but I don't think it is worth it atm.

We can live with your implementation since this driver is only compiled on Linux.


--
David Marchand
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help