net/axgbe: fix PCI ID to distinguish v1000 vs e3000

Message ID 20211110114519.8216-1-Arsalan_Awan@mentor.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series net/axgbe: fix PCI ID to distinguish v1000 vs e3000 |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/github-robot: build success github build: passed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS

Commit Message

Awan, Arsalan Nov. 10, 2021, 11:45 a.m. UTC
  The RV PCI Root Complex Device is not visible to DPDK on the PCI bus
via pci_search_device on some OSs including Ubuntu and Yocto. This
makes it impossible to determine which machine DPDK/axgbe is running
on. As a result, DPDK/axgbe does not work on v1000.

Let's use the Raven Internal PCIe GPP Bridge ID that DPDK can see on
the PCI bus that exists on the v1000 to differentiate between RV AXGBE
and SNOWY AXGBE, and set the registers accordingly. This fixes DPDK
not working on v1000 platform.

Signed-off-by: Arsalan H. Awan <Arsalan_Awan@mentor.com>
---
 drivers/net/axgbe/axgbe_ethdev.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
  

Comments

Namburu, Chandu-babu Nov. 12, 2021, 2:48 p.m. UTC | #1
[AMD Official Use Only]

Hi Arsalan Awan,

Thank you for sharing the patch. DPDK not working on V1000 is regression due to "bus/pci: optimize bus scan" patch. As RV Root Complex device does not have any Linux kernel driver assigned, this device is removed from PCI scan list and not found using pcie_search_device() routine.

Patch submitted is potential fix for the issue, but we are checking if this is the best way to fix regression. Will update you soon on the fix shared.

Regards,
Chandu

-----Original Message-----
From: Arsalan H. Awan <Arsalan_Awan@mentor.com>
Sent: Wednesday, November 10, 2021 5:15 PM
To: dev@dpdk.org
Cc: Namburu, Chandu-babu <chandu@amd.com>; Somalapuram, Amaranath <Amaranath.Somalapuram@amd.com>; Sebastian, Selwin <Selwin.Sebastian@amd.com>; Giriyapura, Maheshwaramurthy <Maheshwaramurthy.Giriyapura@amd.com>; Arsalan H. Awan <Arsalan_Awan@mentor.com>
Subject: [PATCH] net/axgbe: fix PCI ID to distinguish v1000 vs e3000

The RV PCI Root Complex Device is not visible to DPDK on the PCI bus via pci_search_device on some OSs including Ubuntu and Yocto. This makes it impossible to determine which machine DPDK/axgbe is running on. As a result, DPDK/axgbe does not work on v1000.

Let's use the Raven Internal PCIe GPP Bridge ID that DPDK can see on the PCI bus that exists on the v1000 to differentiate between RV AXGBE and SNOWY AXGBE, and set the registers accordingly. This fixes DPDK not working on v1000 platform.

Signed-off-by: Arsalan H. Awan <Arsalan_Awan@mentor.com>
---
 drivers/net/axgbe/axgbe_ethdev.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c
index 7d40c18a86..7b1b46990f 100644
--- a/drivers/net/axgbe/axgbe_ethdev.c
+++ b/drivers/net/axgbe/axgbe_ethdev.c
@@ -170,7 +170,7 @@ static const struct axgbe_xstats axgbe_xstats_strings[] = {

 /* The set of PCI devices this driver supports */
 #define AMD_PCI_VENDOR_ID       0x1022
-#define AMD_PCI_RV_ROOT_COMPLEX_ID     0x15d0
+#define AMD_PCI_RV_INTERNAL_PCIE_GPP_BRIDGE_ID 0x15db
 #define AMD_PCI_AXGBE_DEVICE_V2A 0x1458  #define AMD_PCI_AXGBE_DEVICE_V2B 0x1459

@@ -2178,9 +2178,9 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
        pdata->pci_dev = pci_dev;

        /*
-        * Use root complex device ID to differentiate RV AXGBE vs SNOWY AXGBE
+        * Use Raven Internal PCIe GPP Bridge device ID to differentiate RV
+AXGBE vs SNOWY AXGBE
         */
-       if (pci_search_device(AMD_PCI_RV_ROOT_COMPLEX_ID)) {
+       if (pci_search_device(AMD_PCI_RV_INTERNAL_PCIE_GPP_BRIDGE_ID)) {
                pdata->xpcs_window_def_reg = PCS_V2_RV_WINDOW_DEF;
                pdata->xpcs_window_sel_reg = PCS_V2_RV_WINDOW_SELECT;
        } else {
--
2.17.1
  
Awan, Arsalan Nov. 15, 2021, 10:15 a.m. UTC | #2
Thanks, Chandu!

Appreciate you guys looking into this!

Looking forward to hear from you soon.

Thanks and regards,
Arsalan
  
Awan, Arsalan Nov. 25, 2021, 8:11 a.m. UTC | #3
Hi Chandu,

Do we have an update on this?

Can we go ahead with this patch for now as it does not break anything else, but fixes the problem.

DPDK will be working fine as is on the e3000.

This patch only adjusts the code for the v1000 and it works fine and there isn't a difference in the approach of fixing the problem compared to that being done currently to distinguish between the two platforms i.e. e3000 & v1000.

Hoping to hear from you soon.

Thanks,
Arsalan
  
Namburu, Chandu-babu Nov. 25, 2021, 8:23 a.m. UTC | #4
[Public]

Hi Arsalan,

We have identified fix for this issue and will submit the patch for community review asap.

Thanks,
Chandu

-----Original Message-----
From: Awan, Arsalan <Arsalan_Awan@mentor.com>
Sent: Thursday, November 25, 2021 1:42 PM
To: Namburu, Chandu-babu <chandu@amd.com>; dev@dpdk.org
Cc: Somalapuram, Amaranath <Amaranath.Somalapuram@amd.com>; Sebastian, Selwin <Selwin.Sebastian@amd.com>; Giriyapura, Maheshwaramurthy <Maheshwaramurthy.Giriyapura@amd.com>
Subject: Re: [PATCH] net/axgbe: fix PCI ID to distinguish v1000 vs e3000

Hi Chandu,

Do we have an update on this?

Can we go ahead with this patch for now as it does not break anything else, but fixes the problem.

DPDK will be working fine as is on the e3000.

This patch only adjusts the code for the v1000 and it works fine and there isn't a difference in the approach of fixing the problem compared to that being done currently to distinguish between the two platforms i.e. e3000 & v1000.

Hoping to hear from you soon.

Thanks,
Arsalan
  
Awan, Arsalan Nov. 25, 2021, 9:06 a.m. UTC | #5
Thanks, Chandu!

This will help a lot!

Regards,
Arsalan
  
Namburu, Chandu-babu Nov. 26, 2021, 10:35 a.m. UTC | #6
[Public]

Hi Arsalan,

I have submitted new patch to community review and looped you in. Please share your comments.

https://patches.dpdk.org/project/dpdk/list/?series=20788

Regards,
Chandu

-----Original Message-----
From: Awan, Arsalan <Arsalan_Awan@mentor.com>
Sent: Thursday, November 25, 2021 2:37 PM
To: Namburu, Chandu-babu <chandu@amd.com>; dev@dpdk.org
Cc: Somalapuram, Amaranath <Amaranath.Somalapuram@amd.com>; Sebastian, Selwin <Selwin.Sebastian@amd.com>; Giriyapura, Maheshwaramurthy <Maheshwaramurthy.Giriyapura@amd.com>
Subject: Re: [PATCH] net/axgbe: fix PCI ID to distinguish v1000 vs e3000

Thanks, Chandu!

This will help a lot!

Regards,
Arsalan
  
Awan, Arsalan Dec. 1, 2021, 8:48 a.m. UTC | #7
Hi Chandu,

I have provided my comments on your patch acknowledging your solution as a better approach than this one.

Thanks and regards,
Arsalan
  
Namburu, Chandu-babu Dec. 2, 2021, 5:52 a.m. UTC | #8
[Public]

Hi Arsalan,

Thank you for your comments. 

Regards,
Chandu
-----Original Message-----
From: Awan, Arsalan <Arsalan_Awan@mentor.com> 
Sent: Wednesday, December 1, 2021 2:19 PM
To: Namburu, Chandu-babu <chandu@amd.com>; dev@dpdk.org
Cc: Somalapuram, Amaranath <Amaranath.Somalapuram@amd.com>; Sebastian, Selwin <Selwin.Sebastian@amd.com>; Giriyapura, Maheshwaramurthy <Maheshwaramurthy.Giriyapura@amd.com>
Subject: Re: [PATCH] net/axgbe: fix PCI ID to distinguish v1000 vs e3000

Hi Chandu,

I have provided my comments on your patch acknowledging your solution as a better approach than this one.

Thanks and regards,
Arsalan
  

Patch

diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c
index 7d40c18a86..7b1b46990f 100644
--- a/drivers/net/axgbe/axgbe_ethdev.c
+++ b/drivers/net/axgbe/axgbe_ethdev.c
@@ -170,7 +170,7 @@  static const struct axgbe_xstats axgbe_xstats_strings[] = {
 
 /* The set of PCI devices this driver supports */
 #define AMD_PCI_VENDOR_ID       0x1022
-#define AMD_PCI_RV_ROOT_COMPLEX_ID	0x15d0
+#define AMD_PCI_RV_INTERNAL_PCIE_GPP_BRIDGE_ID	0x15db
 #define AMD_PCI_AXGBE_DEVICE_V2A 0x1458
 #define AMD_PCI_AXGBE_DEVICE_V2B 0x1459
 
@@ -2178,9 +2178,9 @@  eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
 	pdata->pci_dev = pci_dev;
 
 	/*
-	 * Use root complex device ID to differentiate RV AXGBE vs SNOWY AXGBE
+	 * Use Raven Internal PCIe GPP Bridge device ID to differentiate RV AXGBE vs SNOWY AXGBE
 	 */
-	if (pci_search_device(AMD_PCI_RV_ROOT_COMPLEX_ID)) {
+	if (pci_search_device(AMD_PCI_RV_INTERNAL_PCIE_GPP_BRIDGE_ID)) {
 		pdata->xpcs_window_def_reg = PCS_V2_RV_WINDOW_DEF;
 		pdata->xpcs_window_sel_reg = PCS_V2_RV_WINDOW_SELECT;
 	} else {