Currently, the code tells us we have 4 pad bytes left in cacheline0
while actually we are 8 bytes short:
struct netdev_dpdk {
union {
OVS_CACHE_LINE_MARKER cacheline0; /* 1 */
struct {
dpdk_port_t port_id; /* 0 2 */
_Bool attached; /* 2 1 */
struct eth_addr hwaddr; /* 4 6 */
int mtu; /* 12 4 */
int socket_id; /* 16 4 */
int buf_size; /* 20 4 */
int max_packet_len; /* 24 4 */
enum dpdk_dev_type type; /* 28 4 */
enum netdev_flags flags; /* 32 4 */
char * devargs; /* 40 8 */
struct dpdk_tx_queue * tx_q; /* 48 8 */
struct rte_eth_link link; /* 56 8 */
int link_reset_cnt; /* 64 4 */
}; /* 72 */
uint8_t pad9[128]; /* 128 */
}; /* 0 128 */
/* --- cacheline 2 boundary (128 bytes) --- */
Re-located one member, link_reset_cnt, and now it's one cache line:
struct netdev_dpdk {
union {
OVS_CACHE_LINE_MARKER cacheline0; /* 1 */
struct {
dpdk_port_t port_id; /* 0 2 */
_Bool attached; /* 2 1 */
struct eth_addr hwaddr; /* 4 6 */
int mtu; /* 12 4 */
int socket_id; /* 16 4 */
int buf_size; /* 20 4 */
int max_packet_len; /* 24 4 */
enum dpdk_dev_type type; /* 28 4 */
enum netdev_flags flags; /* 32 4 */
int link_reset_cnt; /* 36 4 */
char * devargs; /* 40 8 */
struct dpdk_tx_queue * tx_q; /* 48 8 */
struct rte_eth_link link; /* 56 8 */
}; /* 64 */
uint8_t pad9[64]; /* 64 */
}; /* 0 64 */
/* --- cacheline 1 boundary (64 bytes) --- */
Signed-off-by: Eelco Chaudron <[email protected]>
---
lib/netdev-dpdk.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index ee39cbe4a..b14140571 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -363,11 +363,10 @@ struct netdev_dpdk {
int max_packet_len;
enum dpdk_dev_type type;
enum netdev_flags flags;
+ int link_reset_cnt;
char *devargs; /* Device arguments for dpdk ports */
struct dpdk_tx_queue *tx_q;
struct rte_eth_link link;
- int link_reset_cnt;
- /* 4 pad bytes here. */
);
PADDED_MEMBERS_CACHELINE_MARKER(CACHE_LINE_SIZE, cacheline1,
--
2.14.3
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev