env/dpdk: use rte_virt2iova instead of rte_virt2phys for DPDK 17.11

DPDK 17.11-rc3 switched to IOVA-centric
addressing. The old API is still available,
but is deprecated.

Change-Id: I7b54a1e626e39368acd2190dec725dbf30c7a5de
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/387654
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/387911
This commit is contained in:
Dariusz Stojaczyk 2017-11-15 14:59:50 +01:00 committed by Jim Harris
parent 2779cead22
commit 7eafc71956
2 changed files with 17 additions and 2 deletions

View File

@ -42,12 +42,22 @@
#include <rte_memzone.h>
#include <rte_version.h>
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;
}

View File

@ -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)