[dpdk-dev,v1] drivers/net/ena: Copy PCI info to rte_eth_dev

Message ID 20180116190606.20208-1-sodey@rbbn.com (mailing list archive)
State Rejected, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues

Commit Message

Dey, Souvik Jan. 16, 2018, 7:06 p.m. UTC
  From: Souvik Dey <sodey@rbbn.com>

We need to add the pci_dev info to the rte_eth_dev structure
during the eth_ena_dev_init. Informantions like driver_name
and numa_node will not be populated otherwise.

Signed-off-by: Souvik Dey <sodey@rbbn.com>

---

 drivers/net/ena/ena_ethdev.c | 2 ++
 1 file changed, 2 insertions(+)
  

Comments

Ferruh Yigit Jan. 16, 2018, 7:16 p.m. UTC | #1
On 1/16/2018 7:06 PM, sodey@rbbn.com wrote:
> From: Souvik Dey <sodey@rbbn.com>
> 
> We need to add the pci_dev info to the rte_eth_dev structure
> during the eth_ena_dev_init. Informantions like driver_name
> and numa_node will not be populated otherwise.

stacktrace is like:

eth_ena_pci_probe
  rte_eth_dev_pci_generic_probe
    rte_eth_dev_pci_allocate
      rte_eth_copy_pci_info
    eth_ena_dev_init

So, before eth_ena_dev_init() called,  rte_eth_copy_pci_info() already should be
called and eth_dev updated with pci_dev info. And you shouldn't need this patch.

Do you observe any missing data in eth_dev?

> 
> Signed-off-by: Souvik Dey <sodey@rbbn.com>
> 
> ---
> 
>  drivers/net/ena/ena_ethdev.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
> index ac0803d..329cb29 100644
> --- a/drivers/net/ena/ena_ethdev.c
> +++ b/drivers/net/ena/ena_ethdev.c
> @@ -1270,6 +1270,8 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
>  		     pci_dev->addr.devid,
>  		     pci_dev->addr.function);
>  
> +	rte_eth_copy_pci_info(eth_dev, pci_dev);
> +
>  	adapter->regs = pci_dev->mem_resource[ENA_REGS_BAR].addr;
>  	adapter->dev_mem_base = pci_dev->mem_resource[ENA_MEM_BAR].addr;
>  
>
  
Dey, Souvik Jan. 17, 2018, 8:49 p.m. UTC | #2
Hi Yigit,
	I was testing with 16.11.2 dpdk version did found that few data were missing in the rte_eth_dev like the driver.name. Then tried to update my stream and check the handling and found the same missing. So raised the below patch. Now on double checking it looks like my pull from master failed and due to that I missed the below flow. 
 Yes, I cross checked and all the data is getting populated properly in the rte_eth_dev structure from the rte_pci_device. The below is not needed any more and can be removed. 
Thanks for pointing it out.

--
Regards,
Souvik


-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ferruh Yigit

Sent: Tuesday, January 16, 2018 2:17 PM
To: Dey, Souvik <sodey@rbbn.com>; jan@semihalf.com; jpa@semihalf.com; netanel@amazon.com; evgenys@amazon.com
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v1] drivers/net/ena: Copy PCI info to rte_eth_dev

On 1/16/2018 7:06 PM, sodey@rbbn.com wrote:
> From: Souvik Dey <sodey@rbbn.com>

> 

> We need to add the pci_dev info to the rte_eth_dev structure during 

> the eth_ena_dev_init. Informantions like driver_name and numa_node 

> will not be populated otherwise.


stacktrace is like:

eth_ena_pci_probe
  rte_eth_dev_pci_generic_probe
    rte_eth_dev_pci_allocate
      rte_eth_copy_pci_info
    eth_ena_dev_init

So, before eth_ena_dev_init() called,  rte_eth_copy_pci_info() already should be called and eth_dev updated with pci_dev info. And you shouldn't need this patch.

Do you observe any missing data in eth_dev?

> 

> Signed-off-by: Souvik Dey <sodey@rbbn.com>

> 

> ---

> 

>  drivers/net/ena/ena_ethdev.c | 2 ++

>  1 file changed, 2 insertions(+)

> 

> diff --git a/drivers/net/ena/ena_ethdev.c 

> b/drivers/net/ena/ena_ethdev.c index ac0803d..329cb29 100644

> --- a/drivers/net/ena/ena_ethdev.c

> +++ b/drivers/net/ena/ena_ethdev.c

> @@ -1270,6 +1270,8 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)

>  		     pci_dev->addr.devid,

>  		     pci_dev->addr.function);

>  

> +	rte_eth_copy_pci_info(eth_dev, pci_dev);

> +

>  	adapter->regs = pci_dev->mem_resource[ENA_REGS_BAR].addr;

>  	adapter->dev_mem_base = pci_dev->mem_resource[ENA_MEM_BAR].addr;

>  

>
  

Patch

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index ac0803d..329cb29 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -1270,6 +1270,8 @@  static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
 		     pci_dev->addr.devid,
 		     pci_dev->addr.function);
 
+	rte_eth_copy_pci_info(eth_dev, pci_dev);
+
 	adapter->regs = pci_dev->mem_resource[ENA_REGS_BAR].addr;
 	adapter->dev_mem_base = pci_dev->mem_resource[ENA_MEM_BAR].addr;