[ovs-dev] [PATCH] netdev-dpdk: round up mbuf_size to cache_line_size

Santosh Shukla santosh.shukla at caviumnetworks.com
Wed May 31 13:08:12 UTC 2017


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.shukla at 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



More information about the dev mailing list