git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mbuf: use 2 bytes for port and nb segments
[dpdk.git]
/
lib
/
librte_eal
/
linuxapp
/
eal
/
include
/
exec-env
/
rte_kni_common.h
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
ab022bd
..
2ac879f
100644
(file)
--- 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
@@
-61,6
+61,9
@@
#ifdef __KERNEL__
#include <linux/if.h>
#ifdef __KERNEL__
#include <linux/if.h>
+#define RTE_STD_C11
+#else
+#include <rte_common.h>
#endif
/**
#endif
/**
@@
-68,6
+71,8
@@
*/
#define RTE_KNI_NAMESIZE 32
*/
#define RTE_KNI_NAMESIZE 32
+#define RTE_CACHE_LINE_MIN_SIZE 64
+
/*
* Request id.
*/
/*
* Request id.
*/
@@
-83,6
+88,7
@@
enum rte_kni_req_id {
*/
struct rte_kni_request {
uint32_t req_id; /**< Request id */
*/
struct rte_kni_request {
uint32_t req_id; /**< Request id */
+ RTE_STD_C11
union {
uint32_t new_mtu; /**< New MTU */
uint8_t if_up; /**< 1: interface up, 0: interface down */
union {
uint32_t new_mtu; /**< New MTU */
uint8_t if_up; /**< 1: interface up, 0: interface down */
@@
-100,7
+106,7
@@
struct rte_kni_fifo {
volatile unsigned read; /**< Next position to be read */
unsigned len; /**< Circular buffer length */
unsigned elem_size; /**< Pointer size - for 32/64 bit OS */
volatile unsigned read; /**< Next position to be read */
unsigned len; /**< Circular buffer length */
unsigned elem_size; /**< Pointer size - for 32/64 bit OS */
- void *
volatile buffer[0];
/**< The buffer contains mbuf pointers */
+ void *
volatile buffer[];
/**< The buffer contains mbuf pointers */
};
/*
};
/*
@@
-108,18
+114,22
@@
struct rte_kni_fifo {
* Padding is necessary to assure the offsets of these fields
*/
struct rte_kni_mbuf {
* Padding is necessary to assure the offsets of these fields
*/
struct rte_kni_mbuf {
- void *buf_addr;
-
char pad0[10]
;
+ void *buf_addr
__attribute__((__aligned__(RTE_CACHE_LINE_SIZE)))
;
+
uint64_t buf_physaddr
;
uint16_t data_off; /**< Start address of data in segment buffer. */
uint16_t data_off; /**< Start address of data in segment buffer. */
- char pad1[4];
+ char pad1[2];
+ uint16_t nb_segs; /**< Number of segments. */
+ char pad4[2];
uint64_t ol_flags; /**< Offload features. */
uint64_t ol_flags; /**< Offload features. */
- char pad2[2];
- uint16_t data_len; /**< Amount of data in segment buffer. */
+ char pad2[4];
uint32_t pkt_len; /**< Total pkt len: sum of all segment data_len. */
uint32_t pkt_len; /**< Total pkt len: sum of all segment data_len. */
- char pad3[8];
+ uint16_t data_len; /**< Amount of data in segment buffer. */
+
+ /* fields on second cache line */
+ char pad3[8] __attribute__((__aligned__(RTE_CACHE_LINE_MIN_SIZE)));
void *pool;
void *next;
void *pool;
void *next;
-}
__attribute__((__aligned__(64)))
;
+};
/*
* Struct used to create a KNI device. Passed to the kernel in IOCTL call
/*
* Struct used to create a KNI device. Passed to the kernel in IOCTL call
@@
-153,6
+163,7
@@
struct rte_kni_device_info {
uint16_t group_id; /**< Group ID */
uint32_t core_id; /**< core ID to bind for kernel thread */
uint16_t group_id; /**< Group ID */
uint32_t core_id; /**< core ID to bind for kernel thread */
+ __extension__
uint8_t force_bind : 1; /**< Flag for kernel thread binding */
/* mbuf size */
uint8_t force_bind : 1; /**< Flag for kernel thread binding */
/* mbuf size */