Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/external/bsd/ena-com adapt for NetBSD



details:   https://anonhg.NetBSD.org/src/rev/e481bed63eca
branches:  trunk
changeset: 319156:e481bed63eca
user:      jdolecek <jdolecek%NetBSD.org@localhost>
date:      Sat May 19 08:59:38 2018 +0000

description:
adapt for NetBSD

diffstat:

 sys/external/bsd/ena-com/ena_plat.h |  105 ++++++++++++++++-------------------
 1 files changed, 48 insertions(+), 57 deletions(-)

diffs (221 lines):

diff -r f1aaab18e43b -r e481bed63eca sys/external/bsd/ena-com/ena_plat.h
--- a/sys/external/bsd/ena-com/ena_plat.h       Sat May 19 08:56:05 2018 +0000
+++ b/sys/external/bsd/ena-com/ena_plat.h       Sat May 19 08:59:38 2018 +0000
@@ -35,7 +35,10 @@
 #define ENA_PLAT_H_
 
 #include <sys/cdefs.h>
+#if 0
 __FBSDID("$FreeBSD: head/sys/contrib/ena-com/ena_plat.h 333453 2018-05-10 09:25:51Z mw $");
+#endif
+__KERNEL_RCSID(0, "$NetBSD: ena_plat.h,v 1.2 2018/05/19 08:59:38 jdolecek Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -48,45 +51,29 @@
 #include <sys/malloc.h>
 #include <sys/mbuf.h>
 #include <sys/module.h>
-#include <sys/rman.h>
 #include <sys/proc.h>
-#include <sys/smp.h>
 #include <sys/socket.h>
 #include <sys/sockio.h>
 #include <sys/sysctl.h>
-#include <sys/taskqueue.h>
-#include <sys/eventhandler.h>
 #include <sys/types.h>
-#include <sys/timetc.h>
-#include <sys/cdefs.h>
+#include <sys/bus.h>
+#include <sys/atomic.h>
 
-#include <machine/atomic.h>
-#include <machine/bus.h>
-#include <machine/in_cksum.h>
-#include <machine/pcpu.h>
-#include <machine/resource.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/if_media.h>
+#include <net/if_ether.h>
 
 #include <net/bpf.h>
-#include <net/ethernet.h>
-#include <net/if.h>
-#include <net/if_var.h>
-#include <net/if_arp.h>
-#include <net/if_dl.h>
-#include <net/if_media.h>
 
-#include <net/if_types.h>
-#include <net/if_vlan_var.h>
+#include <net/rss_config.h>
 
-#include <netinet/in_systm.h>
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-#include <netinet/ip.h>
-#include <netinet/ip6.h>
-#include <netinet/tcp.h>
-#include <netinet/tcp_lro.h>
-#include <netinet/udp.h>
+#include <netinet/in.h>                        /* XXX for struct ip */
+#include <netinet/in_systm.h>          /* XXX for struct ip */
+#include <netinet/ip.h>                        /* XXX for struct ip */
+#include <netinet/ip6.h>               /* XXX for struct ip6_hdr */
+#include <netinet/tcp.h>               /* XXX for struct tcphdr */
 
-#include <dev/led/led.h>
 #include <dev/pci/pcivar.h>
 #include <dev/pci/pcireg.h>
 
@@ -114,8 +101,8 @@
        } while (0)
 
 #define ena_trace(level, fmt, args...)                         \
-       ena_trace_raw(level, "%s() [TID:%d]: "                  \
-           fmt " \n", __func__, curthread->td_tid, ##args)
+       ena_trace_raw(level, "%s() [LID:%d]: "                  \
+           fmt " \n", __func__, curlwp->l_lid, ##args)
 
 
 #define ena_trc_dbg(format, arg...)    ena_trace(ENA_DBG, format, ##arg)
@@ -184,11 +171,11 @@
 #define        ENA_COM_PERMISSION      EPERM
 #define ENA_COM_TIMER_EXPIRED  ETIMEDOUT
 
-#define ENA_MSLEEP(x)          pause_sbt("ena", SBT_1MS * (x), SBT_1MS, 0)
+#define ENA_MSLEEP(x)          kpause("enaw", false, mstohz(x), NULL)
 #define ENA_UDELAY(x)          DELAY(x)
 #define ENA_GET_SYSTEM_TIMEOUT(timeout_us) \
-    ((long)cputick2usec(cpu_ticks()) + (timeout_us))
-#define ENA_TIME_EXPIRE(timeout)  ((timeout) < (long)cputick2usec(cpu_ticks()))
+       mstohz(timeout_us * (1000 / 100))       /* XXX assumes 100 ms sleep */
+#define ENA_TIME_EXPIRE(timeout)  ((timeout)-- <= 0)
 #define ENA_MIGHT_SLEEP()
 
 #define min_t(type, _x, _y) ((type)(_x) < (type)(_y) ? (type)(_x) : (type)(_y))
@@ -203,52 +190,51 @@
 #define ENA_MAX8(x,y)  MAX(x, y)
 
 /* Spinlock related methods */
-#define ena_spinlock_t         struct mtx
+#define ena_spinlock_t         kmutex_t
 #define ENA_SPINLOCK_INIT(spinlock)                            \
-       mtx_init(&(spinlock), "ena_spin", NULL, MTX_SPIN)
+       mutex_init(&(spinlock), MUTEX_DEFAULT, IPL_NET)
 #define ENA_SPINLOCK_DESTROY(spinlock)                         \
        do {                                                    \
-               if (mtx_initialized(&(spinlock)))               \
-                   mtx_destroy(&(spinlock));                   \
+               mutex_destroy(&(spinlock));                     \
        } while (0)
 #define ENA_SPINLOCK_LOCK(spinlock, flags)                     \
        do {                                                    \
                (void)(flags);                                  \
-               mtx_lock_spin(&(spinlock));                     \
+               mutex_enter(&(spinlock));                       \
        } while (0)
 #define ENA_SPINLOCK_UNLOCK(spinlock, flags)                   \
        do {                                                    \
                (void)(flags);                                  \
-               mtx_unlock_spin(&(spinlock));                   \
+               mutex_exit(&(spinlock));                        \
        } while (0)
 
 
 /* Wait queue related methods */
-#define ena_wait_event_t struct { struct cv wq; struct mtx mtx; }
+#define ena_wait_event_t struct { kcondvar_t wq; kmutex_t mtx; }
 #define ENA_WAIT_EVENT_INIT(waitqueue)                                 \
        do {                                                            \
-               cv_init(&((waitqueue).wq), "cv");                       \
-               mtx_init(&((waitqueue).mtx), "wq", NULL, MTX_DEF);      \
+               cv_init(&((waitqueue).wq), "enacv");                    \
+               mutex_init(&((waitqueue).mtx), MUTEX_DEFAULT, IPL_NET); \
        } while (0)
 #define ENA_WAIT_EVENT_DESTROY(waitqueue)                              \
        do {                                                            \
                cv_destroy(&((waitqueue).wq));                          \
-               mtx_destroy(&((waitqueue).mtx));                        \
+               mutex_destroy(&((waitqueue).mtx));                      \
        } while (0)
 #define ENA_WAIT_EVENT_CLEAR(waitqueue)                                        \
-       cv_init(&((waitqueue).wq), (waitqueue).wq.cv_description)
+       cv_init(&((waitqueue).wq), "enacv")
 #define ENA_WAIT_EVENT_WAIT(waitqueue, timeout_us)                     \
        do {                                                            \
-               mtx_lock(&((waitqueue).mtx));                           \
+               mutex_enter(&((waitqueue).mtx));                        \
                cv_timedwait(&((waitqueue).wq), &((waitqueue).mtx),     \
                    timeout_us * hz / 1000 / 1000 );                    \
-               mtx_unlock(&((waitqueue).mtx));                         \
+               mutex_exit(&((waitqueue).mtx));                         \
        } while (0)
 #define ENA_WAIT_EVENT_SIGNAL(waitqueue)               \
        do {                                            \
-               mtx_lock(&((waitqueue).mtx));           \
+               mutex_enter(&((waitqueue).mtx));        \
                cv_broadcast(&((waitqueue).wq));        \
-               mtx_unlock(&((waitqueue).mtx));         \
+               mutex_exit(&((waitqueue).mtx));         \
        } while (0)
 
 #define dma_addr_t     bus_addr_t
@@ -258,8 +244,8 @@
 #define u64            uint64_t
 
 typedef struct {
-       bus_addr_t              paddr;
-       caddr_t                 vaddr;
+       paddr_t                 paddr;
+       void                    *vaddr;
         bus_dma_tag_t           tag;
        bus_dmamap_t            map;
         bus_dma_segment_t       seg;
@@ -312,8 +298,8 @@
        do {                                                            \
                (void)size;                                             \
                bus_dmamap_unload((dma).tag, (dma).map);                \
-               bus_dmamem_free((dma).tag, (virt), (dma).map);          \
-               bus_dma_tag_destroy((dma).tag);                         \
+               bus_dmamem_free((dma).tag, &(dma).seg, (dma).nseg);     \
+               bus_dma_tag_destroy((dma).tag); /* XXX remove */        \
                (dma).tag = NULL;                                       \
                (virt) = NULL;                                          \
        } while (0)
@@ -332,7 +318,8 @@
                         (bus_size_t)(offset))
 
 #define ENA_DB_SYNC(mem_handle)        bus_dmamap_sync((mem_handle)->tag,      \
-       (mem_handle)->map, BUS_DMASYNC_PREREAD)
+       (mem_handle)->map, 0, (mem_handle)->map->dm_mapsize,            \
+       BUS_DMASYNC_PREREAD)
 
 #define time_after(a,b)        ((long)((unsigned long)(b) - (unsigned long)(a)) < 0)
 
@@ -357,10 +344,10 @@
 
 #define memcpy_toio memcpy
 
-#define ATOMIC32_INC(I32_PTR)          atomic_add_int(I32_PTR, 1)
-#define ATOMIC32_DEC(I32_PTR)          atomic_add_int(I32_PTR, -1)
-#define ATOMIC32_READ(I32_PTR)                 atomic_load_acq_int(I32_PTR)
-#define ATOMIC32_SET(I32_PTR, VAL)     atomic_store_rel_int(I32_PTR, VAL)
+#define ATOMIC32_INC(I32_PTR)          atomic_inc_32(I32_PTR)
+#define ATOMIC32_DEC(I32_PTR)          atomic_dec_32(I32_PTR)
+#define ATOMIC32_READ(I32_PTR)                 atomic_cas_32(I32_PTR, 0, 0)
+#define ATOMIC32_SET(I32_PTR, VAL)     atomic_swap_32(I32_PTR, VAL)
 
 #define        barrier() __asm__ __volatile__("": : :"memory")
 #define        ACCESS_ONCE(x) (*(volatile __typeof(x) *)&(x))
@@ -374,4 +361,8 @@
 
 #include "ena_defs/ena_includes.h"
 
+#define        rmb()           membar_enter()
+#define        wmb()           membar_exit()
+#define        mb()            membar_sync()
+
 #endif /* ENA_PLAT_H_ */



Home | Main Index | Thread Index | Old Index