mbuf: fix performance with 128-byte cache line
[dpdk.git] / app / test / test_mbuf.c
index 5e8a377..98ff93a 100644 (file)
@@ -333,7 +333,7 @@ testclone_testupdate_testdetach(void)
        struct rte_mbuf *m = NULL;
        struct rte_mbuf *clone = NULL;
        struct rte_mbuf *clone2 = NULL;
-       uint32_t *data;
+       unaligned_uint32_t *data;
 
        /* alloc a mbuf */
        m = rte_pktmbuf_alloc(pktmbuf_pool);
@@ -344,7 +344,7 @@ testclone_testupdate_testdetach(void)
                GOTO_FAIL("Bad length");
 
        rte_pktmbuf_append(m, sizeof(uint32_t));
-       data = rte_pktmbuf_mtod(m, uint32_t *);
+       data = rte_pktmbuf_mtod(m, unaligned_uint32_t *);
        *data = MAGIC_DATA;
 
        /* clone the allocated mbuf */
@@ -352,7 +352,7 @@ testclone_testupdate_testdetach(void)
        if (clone == NULL)
                GOTO_FAIL("cannot clone data\n");
 
-       data = rte_pktmbuf_mtod(clone, uint32_t *);
+       data = rte_pktmbuf_mtod(clone, unaligned_uint32_t *);
        if (*data != MAGIC_DATA)
                GOTO_FAIL("invalid data in clone\n");
 
@@ -369,18 +369,18 @@ testclone_testupdate_testdetach(void)
                GOTO_FAIL("Next Pkt Null\n");
 
        rte_pktmbuf_append(m->next, sizeof(uint32_t));
-       data = rte_pktmbuf_mtod(m->next, uint32_t *);
+       data = rte_pktmbuf_mtod(m->next, unaligned_uint32_t *);
        *data = MAGIC_DATA;
 
        clone = rte_pktmbuf_clone(m, pktmbuf_pool);
        if (clone == NULL)
                GOTO_FAIL("cannot clone data\n");
 
-       data = rte_pktmbuf_mtod(clone, uint32_t *);
+       data = rte_pktmbuf_mtod(clone, unaligned_uint32_t *);
        if (*data != MAGIC_DATA)
                GOTO_FAIL("invalid data in clone\n");
 
-       data = rte_pktmbuf_mtod(clone->next, uint32_t *);
+       data = rte_pktmbuf_mtod(clone->next, unaligned_uint32_t *);
        if (*data != MAGIC_DATA)
                GOTO_FAIL("invalid data in clone->next\n");
 
@@ -396,11 +396,11 @@ testclone_testupdate_testdetach(void)
        if (clone2 == NULL)
                GOTO_FAIL("cannot clone the clone\n");
 
-       data = rte_pktmbuf_mtod(clone2, uint32_t *);
+       data = rte_pktmbuf_mtod(clone2, unaligned_uint32_t *);
        if (*data != MAGIC_DATA)
                GOTO_FAIL("invalid data in clone2\n");
 
-       data = rte_pktmbuf_mtod(clone2->next, uint32_t *);
+       data = rte_pktmbuf_mtod(clone2->next, unaligned_uint32_t *);
        if (*data != MAGIC_DATA)
                GOTO_FAIL("invalid data in clone2->next\n");
 
@@ -594,6 +594,7 @@ test_pktmbuf_pool_ptr(void)
                if (m[i] == NULL) {
                        printf("rte_pktmbuf_alloc() failed (%u)\n", i);
                        ret = -1;
+                       break;
                }
                m[i]->data_off += 64;
        }
@@ -613,6 +614,7 @@ test_pktmbuf_pool_ptr(void)
                if (m[i] == NULL) {
                        printf("rte_pktmbuf_alloc() failed (%u)\n", i);
                        ret = -1;
+                       break;
                }
                if (m[i]->data_off != RTE_PKTMBUF_HEADROOM) {
                        printf("invalid data_off\n");
@@ -694,7 +696,7 @@ test_refcnt_slave(__attribute__((unused)) void *arg)
        printf("%s finished at lcore %u, "
               "number of freed mbufs: %u\n",
               __func__, lcore, free);
-       return (0);
+       return 0;
 }
 
 static void
@@ -768,7 +770,7 @@ test_refcnt_master(void)
        rte_wmb();
 
        printf("%s finished at lcore %u\n", __func__, lcore);
-       return (0);
+       return 0;
 }
 
 #endif
@@ -784,7 +786,7 @@ test_refcnt_mbuf(void)
        if ((lnum = rte_lcore_count()) == 1) {
                printf("skipping %s, number of lcores: %u is not enough\n",
                    __func__, lnum);
-               return (0);
+               return 0;
        }
 
        printf("starting %s, at %u lcores\n", __func__, lnum);
@@ -798,7 +800,7 @@ test_refcnt_mbuf(void)
                                SOCKET_ID_ANY)) == NULL) {
                printf("%s: cannot allocate " MAKE_STRING(refcnt_pool) "\n",
                    __func__);
-               return (-1);
+               return -1;
        }
 
        if (refcnt_mbuf_ring == NULL &&
@@ -807,7 +809,7 @@ test_refcnt_mbuf(void)
                        RING_F_SP_ENQ)) == NULL) {
                printf("%s: cannot allocate " MAKE_STRING(refcnt_mbuf_ring)
                    "\n", __func__);
-               return (-1);
+               return -1;
        }
 
        refcnt_stop_slaves = 0;
@@ -834,7 +836,7 @@ test_refcnt_mbuf(void)
        rte_ring_dump(stdout, refcnt_mbuf_ring);
 
 #endif
-       return (0);
+       return 0;
 }
 
 #include <unistd.h>
@@ -928,7 +930,7 @@ test_failing_mbuf_sanity_check(void)
 static int
 test_mbuf(void)
 {
-       RTE_BUILD_BUG_ON(sizeof(struct rte_mbuf) != RTE_CACHE_LINE_SIZE * 2);
+       RTE_BUILD_BUG_ON(sizeof(struct rte_mbuf) != RTE_CACHE_LINE_MIN_SIZE * 2);
 
        /* create pktmbuf pool if it does not exist */
        if (pktmbuf_pool == NULL) {