Imported Upstream version 16.07-rc1
[deb_dpdk.git] / lib / librte_kni / rte_kni.c
index ea9baf4..3028fd4 100644 (file)
@@ -323,6 +323,7 @@ rte_kni_alloc(struct rte_mempool *pktmbuf_pool,
        char intf_name[RTE_KNI_NAMESIZE];
        char mz_name[RTE_MEMZONE_NAMESIZE];
        const struct rte_memzone *mz;
+       const struct rte_mempool *mp;
        struct rte_kni_memzone_slot *slot = NULL;
 
        if (!pktmbuf_pool || !conf || !conf->name[0])
@@ -415,12 +416,17 @@ rte_kni_alloc(struct rte_mempool *pktmbuf_pool,
 
 
        /* MBUF mempool */
-       snprintf(mz_name, sizeof(mz_name), RTE_MEMPOOL_OBJ_NAME,
+       snprintf(mz_name, sizeof(mz_name), RTE_MEMPOOL_MZ_FORMAT,
                pktmbuf_pool->name);
        mz = rte_memzone_lookup(mz_name);
        KNI_MEM_CHECK(mz == NULL);
-       dev_info.mbuf_va = mz->addr;
-       dev_info.mbuf_phys = mz->phys_addr;
+       mp = (struct rte_mempool *)mz->addr;
+       /* KNI currently requires to have only one memory chunk */
+       if (mp->nb_mem_chunks != 1)
+               goto kni_fail;
+
+       dev_info.mbuf_va = STAILQ_FIRST(&mp->mem_list)->addr;
+       dev_info.mbuf_phys = STAILQ_FIRST(&mp->mem_list)->phys_addr;
        ctx->pktmbuf_pool = pktmbuf_pool;
        ctx->group_id = conf->group_id;
        ctx->slot_id = slot->id;