[dpdk-dev] [PATCH] Fix KNI compiling issue on IBM Power
Chao Zhu
chaozhu at linux.vnet.ibm.com
Thu Dec 4 11:14:08 CET 2014
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
More information about the dev
mailing list