From 4c27985f05e6351c407c27fdfdf78b4070d9b485 Mon Sep 17 00:00:00 2001 From: Alejandro Lucero Date: Tue, 26 Jun 2018 14:25:40 +0100 Subject: [PATCH] net/nfp: avoid sysfs resource file access 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 --- drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c | 29 +++++----------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c index 2a1ec9647e..ca50474bc6 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 @@ nfp6000_set_serial(struct rte_pci_device *dev, struct nfp_cpp *cpp) } 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; } @@ -841,7 +824,7 @@ nfp6000_init(struct nfp_cpp *cpp, struct rte_pci_device *dev) return -1; if (nfp6000_set_serial(dev, cpp) < 0) return -1; - if (nfp6000_set_barsz(desc) < 0) + if (nfp6000_set_barsz(dev, desc) < 0) return -1; desc->cfg = (char *)mmap(0, 1 << (desc->barsz - 3), -- 2.20.1