Thanks for this, Eelco.
(Sorry for the double email, missed the ML on the first one.)
On 25/04/2018 16:48, Eelco Chaudron wrote:
Currently, the code tells us we have 4 pad bytes left in cacheline0
while actually we are 8 bytes short:
This was caused by commit 5e925cc ("netdev-dpdk: DPDK v17.11 upgrade"),
where the dpdk_port_t typedef was changed from uint8_t to uint16_t,
messing up the alignment.
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]>
Acked-by: Tiago Lam <[email protected]>
Tiago
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev