net/bnxt: add dpool allocator for EM allocation
[dpdk.git] / drivers / net / mlx5 / mlx5_mr.c
index 2014936..0c5403e 100644 (file)
@@ -16,6 +16,7 @@
 #include "mlx5_mr.h"
 #include "mlx5_rxtx.h"
 #include "mlx5_rx.h"
+#include "mlx5_tx.h"
 
 struct mr_find_contig_memsegs_data {
        uintptr_t addr;
@@ -106,18 +107,13 @@ mlx5_mr_mem_event_free_cb(struct mlx5_dev_ctx_shared *sh,
        if (rebuild) {
                mlx5_mr_rebuild_cache(&sh->share_cache);
                /*
-                * Flush local caches by propagating invalidation across cores.
-                * rte_smp_wmb() is enough to synchronize this event. If one of
-                * freed memsegs is seen by other core, that means the memseg
-                * has been allocated by allocator, which will come after this
-                * free call. Therefore, this store instruction (incrementing
-                * generation below) will be guaranteed to be seen by other core
-                * before the core sees the newly allocated memory.
+                * No explicit wmb is needed after updating dev_gen due to
+                * store-release ordering in unlock that provides the
+                * implicit barrier at the software visible level.
                 */
                ++sh->share_cache.dev_gen;
                DRV_LOG(DEBUG, "broadcasting local cache flush, gen=%d",
                      sh->share_cache.dev_gen);
-               rte_smp_wmb();
        }
        rte_rwlock_write_unlock(&sh->share_cache.rwlock);
 }
@@ -410,18 +406,13 @@ mlx5_dma_unmap(struct rte_pci_device *pdev, void *addr,
              (void *)mr);
        mlx5_mr_rebuild_cache(&sh->share_cache);
        /*
-        * Flush local caches by propagating invalidation across cores.
-        * rte_smp_wmb() is enough to synchronize this event. If one of
-        * freed memsegs is seen by other core, that means the memseg
-        * has been allocated by allocator, which will come after this
-        * free call. Therefore, this store instruction (incrementing
-        * generation below) will be guaranteed to be seen by other core
-        * before the core sees the newly allocated memory.
+        * No explicit wmb is needed after updating dev_gen due to
+        * store-release ordering in unlock that provides the
+        * implicit barrier at the software visible level.
         */
        ++sh->share_cache.dev_gen;
        DRV_LOG(DEBUG, "broadcasting local cache flush, gen=%d",
              sh->share_cache.dev_gen);
-       rte_smp_wmb();
        rte_rwlock_read_unlock(&sh->share_cache.rwlock);
        return 0;
 }