net/nfp: avoid sysfs resource file access

Message ID 1530019540-27680-1-git-send-email-alejandro.lucero@netronome.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers
Series net/nfp: avoid sysfs resource file access |

Checks

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

Commit Message

Alejandro Lucero June 26, 2018, 1:25 p.m. UTC
  Getting the bar size is required for NFP CPP interface configuration.
However, this information can be obtained from the VFIO or UIO driver
instead of accessing the sysfs resource file.

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c | 27 +++++----------------------
 1 file changed, 5 insertions(+), 22 deletions(-)
  

Comments

Ferruh Yigit June 27, 2018, 2:27 p.m. UTC | #1
On 6/26/2018 2:25 PM, Alejandro Lucero wrote:
> Getting the bar size is required for NFP CPP interface configuration.
> However, this information can be obtained from the VFIO or UIO driver
> instead of accessing the sysfs resource file.
> 
> Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
> ---
>  drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c | 27 +++++----------------------
>  1 file changed, 5 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c
> index 2a1ec96..b0beb8d 100644
> --- a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c
> +++ b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c
> @@ -762,33 +762,16 @@ struct nfp6000_area_priv {
>  }
>  
>  static int
> -nfp6000_set_barsz(struct nfp_pcie_user *desc)
> +nfp6000_set_barsz(struct rte_pci_device *dev, struct nfp_pcie_user *desc)

Need to update caller of this function.

>  {
> -	char tmp_str[80];
> -	unsigned long start, end, flags, tmp;
> -	int i;
> -	FILE *fp;
> -
> -	snprintf(tmp_str, sizeof(tmp_str), "%s/%s/resource", PCI_DEVICES,
> -		 desc->busdev);
> -
> -	fp = fopen(tmp_str, "r");
> -	if (!fp)
> -		return -1;
> +	unsigned long tmp;
> +	int i = 0;
>  
> -	if (fscanf(fp, "0x%lx 0x%lx 0x%lx", &start, &end, &flags) == 0) {
> -		printf("error reading resource file for bar size\n");
> -		fclose(fp);
> -		return -1;
> -	}
> +	tmp = dev->mem_resource[0].len;
>  
> -	if (fclose(fp) == -1)
> -		return -1;
> -
> -	tmp = (end - start) + 1;
> -	i = 0;
>  	while (tmp >>= 1)
>  		i++;
> +
>  	desc->barsz = i;
>  	return 0;
>  }
>
  
Ferruh Yigit June 27, 2018, 2:31 p.m. UTC | #2
On 6/27/2018 3:27 PM, Ferruh Yigit wrote:
> On 6/26/2018 2:25 PM, Alejandro Lucero wrote:
>> Getting the bar size is required for NFP CPP interface configuration.
>> However, this information can be obtained from the VFIO or UIO driver
>> instead of accessing the sysfs resource file.
>>
>> Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
>> ---
>>  drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c | 27 +++++----------------------
>>  1 file changed, 5 insertions(+), 22 deletions(-)
>>
>> diff --git a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c
>> index 2a1ec96..b0beb8d 100644
>> --- a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c
>> +++ b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c
>> @@ -762,33 +762,16 @@ struct nfp6000_area_priv {
>>  }
>>  
>>  static int
>> -nfp6000_set_barsz(struct nfp_pcie_user *desc)
>> +nfp6000_set_barsz(struct rte_pci_device *dev, struct nfp_pcie_user *desc)
> 
> Need to update caller of this function.

I can see the that it has been modified in other patch [1], I will move the
change from other patch to here, please double check and confirm the final commits.

[1]
https://patches.dpdk.org/patch/41573/

> 
>>  {
>> -	char tmp_str[80];
>> -	unsigned long start, end, flags, tmp;
>> -	int i;
>> -	FILE *fp;
>> -
>> -	snprintf(tmp_str, sizeof(tmp_str), "%s/%s/resource", PCI_DEVICES,
>> -		 desc->busdev);
>> -
>> -	fp = fopen(tmp_str, "r");
>> -	if (!fp)
>> -		return -1;
>> +	unsigned long tmp;
>> +	int i = 0;
>>  
>> -	if (fscanf(fp, "0x%lx 0x%lx 0x%lx", &start, &end, &flags) == 0) {
>> -		printf("error reading resource file for bar size\n");
>> -		fclose(fp);
>> -		return -1;
>> -	}
>> +	tmp = dev->mem_resource[0].len;
>>  
>> -	if (fclose(fp) == -1)
>> -		return -1;
>> -
>> -	tmp = (end - start) + 1;
>> -	i = 0;
>>  	while (tmp >>= 1)
>>  		i++;
>> +
>>  	desc->barsz = i;
>>  	return 0;
>>  }
>>
>
  
Ferruh Yigit June 27, 2018, 2:56 p.m. UTC | #3
On 6/26/2018 2:25 PM, Alejandro Lucero wrote:
> Getting the bar size is required for NFP CPP interface configuration.
> However, this information can be obtained from the VFIO or UIO driver
> instead of accessing the sysfs resource file.
> 
> Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>

Applied to dpdk-next-net/master, thanks.

(With applying commented change, please double check)
  
Alejandro Lucero June 27, 2018, 3:15 p.m. UTC | #4
On Wed, Jun 27, 2018 at 3:56 PM, Ferruh Yigit <ferruh.yigit@intel.com>
wrote:

> On 6/26/2018 2:25 PM, Alejandro Lucero wrote:
> > Getting the bar size is required for NFP CPP interface configuration.
> > However, this information can be obtained from the VFIO or UIO driver
> > instead of accessing the sysfs resource file.
> >
> > Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
>
> Applied to dpdk-next-net/master, thanks.
>
> (With applying commented change, please double check)
>

Hi Ferruh,

Yes, that change seems good.

Thanks!
  

Patch

diff --git a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c
index 2a1ec96..b0beb8d 100644
--- a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c
+++ b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c
@@ -762,33 +762,16 @@  struct nfp6000_area_priv {
 }
 
 static int
-nfp6000_set_barsz(struct nfp_pcie_user *desc)
+nfp6000_set_barsz(struct rte_pci_device *dev, struct nfp_pcie_user *desc)
 {
-	char tmp_str[80];
-	unsigned long start, end, flags, tmp;
-	int i;
-	FILE *fp;
-
-	snprintf(tmp_str, sizeof(tmp_str), "%s/%s/resource", PCI_DEVICES,
-		 desc->busdev);
-
-	fp = fopen(tmp_str, "r");
-	if (!fp)
-		return -1;
+	unsigned long tmp;
+	int i = 0;
 
-	if (fscanf(fp, "0x%lx 0x%lx 0x%lx", &start, &end, &flags) == 0) {
-		printf("error reading resource file for bar size\n");
-		fclose(fp);
-		return -1;
-	}
+	tmp = dev->mem_resource[0].len;
 
-	if (fclose(fp) == -1)
-		return -1;
-
-	tmp = (end - start) + 1;
-	i = 0;
 	while (tmp >>= 1)
 		i++;
+
 	desc->barsz = i;
 	return 0;
 }