net/mlx5: support more tunnel types
[dpdk.git] / drivers / net / ice / base / ice_osdep.h
index 0955f56..8160eb6 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2018 Intel Corporation
+ * Copyright(c) 2018-2021 Intel Corporation
  */
 
 #ifndef _ICE_OSDEP_H_
 #include <rte_cycles.h>
 #include <rte_spinlock.h>
 #include <rte_log.h>
-#include <rte_random.h>
 #include <rte_io.h>
 
+#include "ice_alloc.h"
+
 #include "../ice_logs.h"
 
 #ifndef __INTEL_NET_BASE_OSDEP__
@@ -60,6 +61,15 @@ typedef uint64_t        s64;
 #define __be64          uint64_t
 #endif
 
+/* Avoid macro redefinition warning on Windows */
+#ifdef RTE_EXEC_ENV_WINDOWS
+#ifdef min
+#undef min
+#endif
+#ifdef max
+#undef max
+#endif
+#endif
 #define min(a, b) RTE_MIN(a, b)
 #define max(a, b) RTE_MAX(a, b)
 
@@ -76,6 +86,7 @@ typedef uint64_t        s64;
 #define CPU_TO_BE16(o) rte_cpu_to_be_16(o)
 #define CPU_TO_BE32(o) rte_cpu_to_be_32(o)
 #define CPU_TO_BE64(o) rte_cpu_to_be_64(o)
+#define BE16_TO_CPU(o) rte_be_to_cpu_16(o)
 
 #define NTOHS(a) rte_be_to_cpu_16(a)
 #define NTOHL(a) rte_be_to_cpu_32(a)
@@ -162,6 +173,7 @@ do {                                                                        \
 #endif
 
 #define ICE_PCI_REG_WRITE(reg, value) writel(value, reg)
+#define ICE_PCI_REG_WC_WRITE(reg, value) rte_write32_wc(value, reg)
 
 #define ICE_READ_REG(hw, reg)         rd32(hw, reg)
 #define ICE_WRITE_REG(hw, reg, value) wr32(hw, reg, value)
@@ -188,12 +200,11 @@ struct ice_virt_mem {
 } __rte_packed;
 
 #define ice_malloc(h, s)    rte_zmalloc(NULL, s, 0)
-#define ice_calloc(h, c, s) rte_zmalloc(NULL, (c) * (s), 0)
+#define ice_calloc(h, c, s) rte_calloc(NULL, c, s, 0)
 #define ice_free(h, m)         rte_free(m)
 
 #define ice_memset(a, b, c, d) memset((a), (b), (c))
 #define ice_memcpy(a, b, c, d) rte_memcpy((a), (b), (c))
-#define ice_memdup(a, b, c, d) rte_memcpy(ice_malloc(a, c), b, c)
 
 /* SW spinlock */
 struct ice_lock {
@@ -225,17 +236,32 @@ ice_destroy_lock(__rte_unused struct ice_lock *sp)
 
 struct ice_hw;
 
+static __rte_always_inline void *
+ice_memdup(__rte_unused struct ice_hw *hw, const void *src, size_t size,
+          __rte_unused enum ice_memcpy_type dir)
+{
+       void *p;
+
+       p = ice_malloc(hw, size);
+       if (p)
+               rte_memcpy(p, src, size);
+
+       return p;
+}
+
 static inline void *
 ice_alloc_dma_mem(__rte_unused struct ice_hw *hw,
                  struct ice_dma_mem *mem, u64 size)
 {
+       static uint64_t ice_dma_memzone_id;
        const struct rte_memzone *mz = NULL;
        char z_name[RTE_MEMZONE_NAMESIZE];
 
        if (!mem)
                return NULL;
 
-       snprintf(z_name, sizeof(z_name), "ice_dma_%"PRIu64, rte_rand());
+       snprintf(z_name, sizeof(z_name), "ice_dma_%" PRIu64,
+               __atomic_fetch_add(&ice_dma_memzone_id, 1, __ATOMIC_RELAXED));
        mz = rte_memzone_reserve_bounded(z_name, size, SOCKET_ID_ANY, 0,
                                         0, RTE_PGSIZE_2M);
        if (!mz)
@@ -243,7 +269,7 @@ ice_alloc_dma_mem(__rte_unused struct ice_hw *hw,
 
        mem->size = size;
        mem->va = mz->addr;
-       mem->pa = mz->phys_addr;
+       mem->pa = mz->iova;
        mem->zone = (const void *)mz;
        PMD_DRV_LOG(DEBUG, "memzone %s allocated with physical address: "
                    "%"PRIu64, mz->name, mem->pa);