Because of different cache line size, the alignment of struct rte_kni_mbuf in rte_kni_common.h doesn't work on IBM Power. This patch changed from 64 to RTE_CACHE_LINE_SIZE micro to do the alignment.
Signed-off-by: Chao Zhu <chaozhu at linux.vnet.ibm.com> --- .../linuxapp/eal/include/exec-env/rte_kni_common.h | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/librte_eal/linuxapp/eal/include/exec-env/rte_kni_common.h b/lib/librte_eal/linuxapp/eal/include/exec-env/rte_kni_common.h index e548161..6fc6442 100644 --- a/lib/librte_eal/linuxapp/eal/include/exec-env/rte_kni_common.h +++ b/lib/librte_eal/linuxapp/eal/include/exec-env/rte_kni_common.h @@ -67,6 +67,9 @@ * KNI name is part of memzone name. */ #define RTE_KNI_NAMESIZE 32 +#ifndef RTE_CACHE_LINE_SIZE +#define RTE_CACHE_LINE_SIZE 64 /**< Cache line size. */ +#endif /* * Request id. @@ -108,7 +111,7 @@ struct rte_kni_fifo { * Padding is necessary to assure the offsets of these fields */ struct rte_kni_mbuf { - void *buf_addr __attribute__((__aligned__(64))); + void *buf_addr __attribute__((__aligned__(RTE_CACHE_LINE_SIZE))); char pad0[10]; uint16_t data_off; /**< Start address of data in segment buffer. */ char pad1[4]; @@ -118,7 +121,7 @@ struct rte_kni_mbuf { uint32_t pkt_len; /**< Total pkt len: sum of all segment data_len. */ /* fields on second cache line */ - char pad3[8] __attribute__((__aligned__(64))); + char pad3[8] __attribute__((__aligned__(RTE_CACHE_LINE_SIZE))); void *pool; void *next; }; -- 1.7.1