Some pmd driver(e.g: vNIC thunderx PMD) want mbuf_size to be multiple of cache_line_size. With out this fix, Netdev-dpdk initialization would simply fail for those drivers.
Signed-off-by: Santosh Shukla <santosh.shu...@caviumnetworks.com> --- - Tested arm64/ThunderX platform for vNIC pmd, - Topology: phy-phy and phy-vm - Tested x86 platform for XL710/i40e pmd. lib/netdev-dpdk.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 9941f884f..1952a5cec 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -76,9 +76,12 @@ static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 20); #define MTU_TO_MAX_FRAME_LEN(mtu) ((mtu) + ETHER_HDR_MAX_LEN) #define FRAME_LEN_TO_MTU(frame_len) ((frame_len) \ - ETHER_HDR_LEN - ETHER_CRC_LEN) -#define MBUF_SIZE(mtu) (MTU_TO_MAX_FRAME_LEN(mtu) \ +#define _MBUF_SIZE(mtu) (MTU_TO_MAX_FRAME_LEN(mtu) \ + sizeof(struct dp_packet) \ + RTE_PKTMBUF_HEADROOM) +#define MBUF_SIZE(mtu) ROUND_UP((_MBUF_SIZE(mtu)), \ + RTE_CACHE_LINE_SIZE) + #define NETDEV_DPDK_MBUF_ALIGN 1024 #define NETDEV_DPDK_MAX_PKT_LEN 9728 @@ -495,7 +498,7 @@ dpdk_mp_create(int socket_id, int mtu) MP_CACHE_SZ, sizeof (struct dp_packet) - sizeof (struct rte_mbuf), - MBUF_SIZE(mtu) + MBUF_SIZE(dmp->mtu) - sizeof(struct dp_packet), socket_id); if (dmp->mp) { -- 2.11.0 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev