rte_mempool_ops_get_count is not exported by DPDK so it means it
cannot be used by OVS when using DPDK as a shared library.
It was only being used for extra paranoid, things might change in
the future mode anyway, so remove it and just use rte_mempool_full.
The mempools are still removed later and are checked to see
that the buffers are back in it. Previously the mempools were removed
straight away and there was no checking.
Fixes: c77f6920deba ("netdev-dpdk: Free mempool only when no in-use mbufs.")
Reported-by: Timothy Redaelli <[email protected]>
Reported-by: Markos Chandras <[email protected]>
Signed-off-by: Kevin Traynor <[email protected]>
---
lib/netdev-dpdk.c | 20 +-------------------
1 file changed, 1 insertion(+), 19 deletions(-)
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index 52d8fe6..8adb95d 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -596,22 +596,4 @@ dpdk_mp_create(int socket_id, int mtu)
}
-static int
-dpdk_mp_full(const struct rte_mempool *mp) OVS_REQUIRES(dpdk_mp_mutex)
-{
- unsigned ring_count;
- /* This logic is needed because rte_mempool_full() is not guaranteed to
- * be atomic and mbufs could be moved from mempool cache --> mempool ring
- * during the call. However, as no mbufs will be taken from the mempool
- * at this time, we can work around it by also checking the ring entries
- * separately and ensuring that they have not changed.
- */
- ring_count = rte_mempool_ops_get_count(mp);
- if (rte_mempool_full(mp) && rte_mempool_ops_get_count(mp) == ring_count) {
- return 1;
- }
-
- return 0;
-}
-
/* Free unused mempools. */
static void
@@ -621,5 +603,5 @@ dpdk_mp_sweep(void) OVS_REQUIRES(dpdk_mp_mutex)
LIST_FOR_EACH_SAFE (dmp, next, list_node, &dpdk_mp_list) {
- if (!dmp->refcount && dpdk_mp_full(dmp->mp)) {
+ if (!dmp->refcount && rte_mempool_full(dmp->mp)) {
VLOG_DBG("Freeing mempool \"%s\"", dmp->mp->name);
ovs_list_remove(&dmp->list_node);
--
1.8.3.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev