net/enic: support scatter Rx in MTU update
[dpdk.git] / drivers / net / xenvirt / rte_xen_lib.c
index 5900b53..6c9a1d4 100644 (file)
@@ -115,8 +115,8 @@ get_phys_map(void *va, phys_addr_t pa[], uint32_t pg_num, uint32_t pg_sz)
                        (rc = pread(fd, pa, nb, ofs)) < 0 ||
                        (rc -= nb) != 0) {
                RTE_LOG(ERR, PMD, "%s: failed read of %u bytes from \'%s\' "
-                       "at offset %zu, error code: %d\n",
-                       __func__, nb, PAGEMAP_FNAME, ofs, errno);
+                       "at offset %lu, error code: %d\n",
+                       __func__, nb, PAGEMAP_FNAME, (unsigned long)ofs, errno);
                rc = ENOENT;
        }
 
@@ -362,7 +362,7 @@ grant_node_create(uint32_t pg_num, uint32_t *gref_arr, phys_addr_t *pa_arr, char
        uint32_t pg_shift;
        void *ptr = NULL;
        uint32_t count, entries_per_pg;
-       uint32_t i, j = 0, k = 0;;
+       uint32_t i, j = 0, k = 0;
        uint32_t *gref_tmp;
        int first = 1;
        char tmp_str[PATH_MAX] = {0};
@@ -423,6 +423,7 @@ grant_gntalloc_mbuf_pool(struct rte_mempool *mpool, uint32_t pg_num, uint32_t *g
 {
        char key_str[PATH_MAX] = {0};
        char val_str[PATH_MAX] = {0};
+       void *mempool_obj_va;
 
        if (grant_node_create(pg_num, gref_arr, pa_arr, val_str, sizeof(val_str))) {
                return -1;
@@ -437,7 +438,14 @@ grant_gntalloc_mbuf_pool(struct rte_mempool *mpool, uint32_t pg_num, uint32_t *g
        if (snprintf(key_str, sizeof(key_str),
                DPDK_XENSTORE_PATH"%d"MEMPOOL_VA_XENSTORE_STR, mempool_idx) == -1)
                return -1;
-       if (snprintf(val_str, sizeof(val_str), "%"PRIxPTR, (uintptr_t)mpool->elt_va_start) == -1)
+       if (mpool->nb_mem_chunks != 1) {
+               RTE_LOG(ERR, PMD,
+                       "mempool with more than 1 chunk is not supported\n");
+               return -1;
+       }
+       mempool_obj_va = STAILQ_FIRST(&mpool->mem_list)->addr;
+       if (snprintf(val_str, sizeof(val_str), "%"PRIxPTR,
+                       (uintptr_t)mempool_obj_va) == -1)
                return -1;
        if (xenstore_write(key_str, val_str) == -1)
                return -1;