diff --git a/lib/env_dpdk/env.c b/lib/env_dpdk/env.c index cf0ab2812..716a9ca95 100644 --- a/lib/env_dpdk/env.c +++ b/lib/env_dpdk/env.c @@ -42,12 +42,22 @@ #include #include +static uint64_t +virt_to_phys(void *vaddr) +{ +#if RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 3) + return rte_malloc_virt2iova(vaddr); +#else + return rte_malloc_virt2phy(vaddr); +#endif +} + void * spdk_dma_malloc_socket(size_t size, size_t align, uint64_t *phys_addr, int socket_id) { void *buf = rte_malloc_socket(NULL, size, align, socket_id); if (buf && phys_addr) { - *phys_addr = rte_malloc_virt2phy(buf); + *phys_addr = virt_to_phys(buf); } return buf; } @@ -79,7 +89,7 @@ spdk_dma_realloc(void *buf, size_t size, size_t align, uint64_t *phys_addr) { void *new_buf = rte_realloc(buf, size, align); if (new_buf && phys_addr) { - *phys_addr = rte_malloc_virt2phy(new_buf); + *phys_addr = virt_to_phys(new_buf); } return new_buf; } diff --git a/lib/iscsi/iscsi_subsystem.c b/lib/iscsi/iscsi_subsystem.c index 01487d30d..466c5042e 100644 --- a/lib/iscsi/iscsi_subsystem.c +++ b/lib/iscsi/iscsi_subsystem.c @@ -316,7 +316,12 @@ spdk_mobj_ctor(struct rte_mempool *mp, __attribute__((unused)) void *arg, * right before the 512B aligned buffer area. */ phys_addr = (uint64_t *)m->buf - 1; + +#if RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 3) + *phys_addr = rte_mempool_virt2iova(m) + off; +#else *phys_addr = rte_mempool_virt2phy(mp, m) + off; +#endif } #define PDU_POOL_SIZE(iscsi) (iscsi->MaxConnections * NUM_PDU_PER_CONNECTION)