X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=o-du%2Fphy.git;a=blobdiff_plain;f=wls_lib%2Fwls_lib_dpdk.c;fp=wls_lib%2Fwls_lib_dpdk.c;h=dcabfb8dec4ea22143d4044981fe3c2e96619cae;hp=2da223765eb475d8eeb4771571d66f85835b7520;hb=70d9d920dd4e575f085f1f1a9050fefd1c10e127;hpb=331df2273a6667941167c9bcc141a517369bdf43 diff --git a/wls_lib/wls_lib_dpdk.c b/wls_lib/wls_lib_dpdk.c index 2da2237..dcabfb8 100644 --- a/wls_lib/wls_lib_dpdk.c +++ b/wls_lib/wls_lib_dpdk.c @@ -130,36 +130,11 @@ static inline int wls_check_ctx1(void *h) return 0; } -static int wls_VirtToPhys(const void* virtAddr, uint64_t* physAddr) +static int wls_VirtToIova(const void* virtAddr, uint64_t* iovaAddr) { - int mapFd; - uint64_t page; - unsigned int pageSize; - unsigned long virtualPageNumber; - - mapFd = open("/proc/self/pagemap", O_RDONLY); - if (mapFd < 0) { - PLIB_ERR("Could't open pagemap file\n"); + *iovaAddr = rte_mem_virt2iova(virtAddr); + if (*iovaAddr==RTE_BAD_IOVA) return -1; - } - - /*get standard page size*/ - pageSize = getpagesize(); - - virtualPageNumber = (unsigned long) virtAddr / pageSize; - - lseek(mapFd, virtualPageNumber * sizeof (uint64_t), SEEK_SET); - - if (read(mapFd, &page, sizeof (uint64_t)) < 0) { - close(mapFd); - PLIB_ERR("Could't read pagemap file\n"); - return -1; - } - - *physAddr = ((page & 0x007fffffffffffffULL) * pageSize); - - close(mapFd); - return 0; } @@ -801,7 +776,7 @@ void* WLS_Alloc(void* h, unsigned int size) inorder to get pagemap*/ *(unsigned char*) pHugePageTlb[count].pageVa = 1; - if (wls_VirtToPhys((uint64_t*) pHugePageTlb[count].pageVa, + if (wls_VirtToIova((uint64_t*) pHugePageTlb[count].pageVa, &pHugePageTlb[count].pagePa) == -1) { PLIB_ERR("Virtual to physical conversion failed\n"); return NULL;