*/
#define RTE_KNI_NAMESIZE 32
+#ifndef RTE_CACHE_LINE_SIZE
+#define RTE_CACHE_LINE_SIZE 64 /**< Cache line size. */
+#endif
+
/*
* Request id.
*/
* Padding is necessary to assure the offsets of these fields
*/
struct rte_kni_mbuf {
- void *buf_addr;
+ 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];
- uint16_t ol_flags; /**< Offload features. */
- char pad2[8];
+ uint64_t ol_flags; /**< Offload features. */
+#ifdef RTE_NEXT_ABI
+ char pad2[4];
+ uint32_t pkt_len; /**< Total pkt len: sum of all segment data_len. */
+ uint16_t data_len; /**< Amount of data in segment buffer. */
+#else
+ char pad2[2];
uint16_t data_len; /**< Amount of data in segment buffer. */
uint32_t pkt_len; /**< Total pkt len: sum of all segment data_len. */
- char pad3[8];
+#endif
+
+ /* fields on second cache line */
+ char pad3[8] __attribute__((__aligned__(RTE_CACHE_LINE_SIZE)));
void *pool;
void *next;
-} __attribute__((__aligned__(64)));
+};
/*
* Struct used to create a KNI device. Passed to the kernel in IOCTL call