BXE: changes sp_state back to a long
[akaros.git] / kern / drivers / net / bxe / bxe.h
index 8b78f3e..c59fa61 100644 (file)
@@ -40,6 +40,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <bitmap.h>
+#include <taskqueue.h>
 
 
 /* MACROS for conversion to AKAROS. Might we want this stuff someday? */
@@ -58,20 +59,13 @@ typedef uintptr_t bus_dmamap_t;
 typedef uintptr_t bus_dma_segment_t;
 typedef uintptr_t bus_space_tag_t;
 typedef uintptr_t vm_offset_t;
-typedef qlock_t ECORE_MUTEX_SPIN;
-typedef qlock_t ECORE_MUTEX;
-typedef qlock_t mtx;
 typedef int device_t;
 // WTF ...
 typedef uint64_t uintmax_t;
-#define mtx_lock(x) qlock(x)
-#define mtx_unlock(x) qunlock(x)
 #define MA_OWNED 0
-#define MTX_ASSERT(lock, thing) assert(0)
+#define mtx_assert(lock, thing) assert(1)
 #define device_printf(ignore, format, args...) printk(format, args)
 
-
-
 #if _BYTE_ORDER == _LITTLE_ENDIAN
 #ifndef LITTLE_ENDIAN
 #define LITTLE_ENDIAN
@@ -523,18 +517,17 @@ struct bxe_sw_tpa_info {
 struct bxe_fastpath {
     /* pointer back to parent structure */
     struct bxe_adapter *sc;
-#warning "need to fix up the mtx"
     qlock_t tx_mtx;
     char       tx_mtx_name[32];
     qlock_t rx_mtx;
     char       rx_mtx_name[32];
-#define BXE_FP_TX_LOCK(fp)        mtx_lock(&fp->tx_mtx)
-#define BXE_FP_TX_UNLOCK(fp)      mtx_unlock(&fp->tx_mtx)
-#define BXE_FP_TX_LOCK_ASSERT(fp) assert(0) /*mtx_assert(&fp->tx_mtx, MA_OWNED)*/
+#define BXE_FP_TX_LOCK(fp)        qlock(&fp->tx_mtx)
+#define BXE_FP_TX_UNLOCK(fp)      qunlock(&fp->tx_mtx)
+#define BXE_FP_TX_LOCK_ASSERT(fp) mtx_assert(&fp->tx_mtx, MA_OWNED)
 
-#define BXE_FP_RX_LOCK(fp)        mtx_lock(&fp->rx_mtx)
-#define BXE_FP_RX_UNLOCK(fp)      mtx_unlock(&fp->rx_mtx)
-#define BXE_FP_RX_LOCK_ASSERT(fp) assert(0) /*mtx_assert(&fp->rx_mtx, MA_OWNED)*/
+#define BXE_FP_RX_LOCK(fp)        qlock(&fp->rx_mtx)
+#define BXE_FP_RX_UNLOCK(fp)      qunlock(&fp->rx_mtx)
+#define BXE_FP_RX_LOCK_ASSERT(fp) mtx_assert(&fp->rx_mtx, MA_OWNED)
 
     /* status block */
     struct bxe_dma                 sb_dma;
@@ -606,13 +599,10 @@ struct bxe_fastpath {
     uint8_t index; /* this is also the 'cid' */
 #define FP_IDX(fp) (fp->index)
 
-#warning "no interrupt taskqueue -- whatever that is"
     /* interrupt taskqueue (fast) */
-  /*
     struct task      tq_task;
     struct taskqueue *tq;
     char             tq_name[32];
-  */
 
     /* ethernet client ID (each fastpath set of RX/TX/CQE is a client) */
     uint8_t cl_id;
@@ -1029,8 +1019,8 @@ struct bxe_port {
        qlock_t phy_mtx;
        char        phy_mtx_name[32];
 
-#define BXE_PHY_LOCK(sc)          mtx_lock(&sc->port.phy_mtx)
-#define BXE_PHY_UNLOCK(sc)        mtx_unlock(&sc->port.phy_mtx)
+#define BXE_PHY_LOCK(sc)          qlock(&sc->port.phy_mtx)
+#define BXE_PHY_UNLOCK(sc)        qunlock(&sc->port.phy_mtx)
 #define BXE_PHY_LOCK_ASSERT(sc)   mtx_assert(&sc->port.phy_mtx, MA_OWNED)
 
     /*
@@ -1269,8 +1259,7 @@ struct bxe_devinfo {
     uint32_t bc_ver;
     char bc_ver_str[32];
     uint32_t mf_cfg_base; /* bootcode shmem address in BAR memory */
-#warning "bxe_mf_info"
-       struct bxe_mf_info mf_info;
+  struct bxe_mf_info mf_info;
 
     int flash_size;
 #define NVRAM_1MB_SIZE      0x20000
@@ -1318,7 +1307,7 @@ enum {
 };
 
 /* Top level device private data structure. */
-#warning "need to fix up device private"
+
 struct bxe_adapter {
        /*
         * First entry must be a pointer to the BSD ifnet struct which
@@ -1328,6 +1317,19 @@ struct bxe_adapter {
        /* OS defined structs */
        struct net_device *netdev;
        struct pci_device *pcidev;
+       /* commonly used Plan 9 driver struct members. */
+       struct ether                            *edev;
+
+       bool                                            active;
+       void                                            *mmio;
+       spinlock_t                                      imlock;                         /* interrupt mask lock */
+       spinlock_t                                      tlock;                          /* transmit lock */
+       qlock_t                                         slock;                          /* stats */
+       qlock_t                                         alock;                          /* attach */
+       struct rendez                           rrendez;                        /* rproc rendez */
+#define Nstatistics 2
+       unsigned int                            statistics[Nstatistics];
+
        //struct net_device_stats net_stats;
 #warning "no ifmedia. "
        // struct ifmedia  ifmedia; /* network interface media structure */
@@ -1380,8 +1382,6 @@ struct bxe_adapter {
 #define CHIP_TQ_STOP   2
 #define CHIP_TQ_REINIT 3
        atomic_t chip_tq_flags;
-#warning "no chip_tq_task or other tasks from here on down"
-#if 0
        struct task            chip_tq_task;
        struct taskqueue       *chip_tq;
        char                   chip_tq_name[32];
@@ -1395,7 +1395,6 @@ struct bxe_adapter {
        struct task      rx_mode_tq_task;
        struct taskqueue *rx_mode_tq;
        char             rx_mode_tq_name[32];
-#endif 
        struct bxe_fastpath fp[MAX_RSS_CHAINS];
        struct bxe_sp_objs  sp_objs[MAX_RSS_CHAINS];
        
@@ -1460,30 +1459,30 @@ struct bxe_adapter {
 #define BXE_CORE_UNLOCK(sc)       sx_xunlock(&sc->core_sx)
 #define BXE_CORE_LOCK_ASSERT(sc)  sx_assert(&sc->core_sx, SA_XLOCKED)
 #else
-#define BXE_CORE_TRYLOCK(sc)      mtx_trylock(&sc->core_mtx)
-#define BXE_CORE_LOCK(sc)         mtx_lock(&sc->core_mtx)
-#define BXE_CORE_UNLOCK(sc)       mtx_unlock(&sc->core_mtx)
+#define BXE_CORE_TRYLOCK(sc)      canqlock(&sc->core_mtx)
+#define BXE_CORE_LOCK(sc)         qlock(&sc->core_mtx)
+#define BXE_CORE_UNLOCK(sc)       qunlock(&sc->core_mtx)
 #define BXE_CORE_LOCK_ASSERT(sc)  mtx_assert(&sc->core_mtx, MA_OWNED)
 #endif
 
-#define BXE_SP_LOCK(sc)           mtx_lock(&sc->sp_mtx)
-#define BXE_SP_UNLOCK(sc)         mtx_unlock(&sc->sp_mtx)
+#define BXE_SP_LOCK(sc)           qlock(&sc->sp_mtx)
+#define BXE_SP_UNLOCK(sc)         qunlock(&sc->sp_mtx)
 #define BXE_SP_LOCK_ASSERT(sc)    mtx_assert(&sc->sp_mtx, MA_OWNED)
 
-#define BXE_DMAE_LOCK(sc)         mtx_lock(&sc->dmae_mtx)
-#define BXE_DMAE_UNLOCK(sc)       mtx_unlock(&sc->dmae_mtx)
+#define BXE_DMAE_LOCK(sc)         qlock(&sc->dmae_mtx)
+#define BXE_DMAE_UNLOCK(sc)       qunlock(&sc->dmae_mtx)
 #define BXE_DMAE_LOCK_ASSERT(sc)  mtx_assert(&sc->dmae_mtx, MA_OWNED)
 
-#define BXE_FWMB_LOCK(sc)         mtx_lock(&sc->fwmb_mtx)
-#define BXE_FWMB_UNLOCK(sc)       mtx_unlock(&sc->fwmb_mtx)
+#define BXE_FWMB_LOCK(sc)         qlock(&sc->fwmb_mtx)
+#define BXE_FWMB_UNLOCK(sc)       qunlock(&sc->fwmb_mtx)
 #define BXE_FWMB_LOCK_ASSERT(sc)  mtx_assert(&sc->fwmb_mtx, MA_OWNED)
 
-#define BXE_PRINT_LOCK(sc)        mtx_lock(&sc->print_mtx)
-#define BXE_PRINT_UNLOCK(sc)      mtx_unlock(&sc->print_mtx)
+#define BXE_PRINT_LOCK(sc)        qlock(&sc->print_mtx)
+#define BXE_PRINT_UNLOCK(sc)      qunlock(&sc->print_mtx)
 #define BXE_PRINT_LOCK_ASSERT(sc) mtx_assert(&sc->print_mtx, MA_OWNED)
 
-#define BXE_STATS_LOCK(sc)        mtx_lock(&sc->stats_mtx)
-#define BXE_STATS_UNLOCK(sc)      mtx_unlock(&sc->stats_mtx)
+#define BXE_STATS_LOCK(sc)        qlock(&sc->stats_mtx)
+#define BXE_STATS_UNLOCK(sc)      qunlock(&sc->stats_mtx)
 #define BXE_STATS_LOCK_ASSERT(sc) mtx_assert(&sc->stats_mtx, MA_OWNED)
 
 #warning "find outwhat IF_ADDR_LOCK is"
@@ -1496,8 +1495,6 @@ struct bxe_adapter {
        int dmae_ready;
 #define DMAE_READY(sc) (sc->dmae_ready)
        
-#warning "no credit ppools. "
-
        struct ecore_credit_pool_obj vlans_pool;
        struct ecore_credit_pool_obj macs_pool;
        struct ecore_rx_mode_obj     rx_mode_obj;
@@ -1615,7 +1612,7 @@ struct bxe_adapter {
     /* slow path */
        struct bxe_dma      sp_dma;
        struct bxe_slowpath *sp;
-       atomic_t       sp_state;
+       unsigned long       sp_state;
        
        /* slow path queue */
        struct bxe_dma spq_dma;
@@ -1625,7 +1622,6 @@ struct eth_spe *spq;
 #define MAX_SPQ_PENDING 8
        
        uint16_t       spq_prod_idx;
-#warning "no eth_spe"
        struct eth_spe *spq_prod_bd;
        struct eth_spe *spq_last_bd;
        uint16_t       *dsb_sp_prod;
@@ -1636,7 +1632,6 @@ struct eth_spe *spq;
        atomic_t cq_spq_left; /* ETH_xxx ramrod credit */
        
        /* fw decompression buffer */
-#warning "no decmpress buffer"
        struct bxe_dma gz_buf_dma;
        void           *gz_buf;
        //    z_streamp      gz_strm;
@@ -2270,6 +2265,9 @@ void bxe_dump_mem(struct bxe_adapter *sc, char *tag,
 void bxe_dump_mbuf_data(struct bxe_adapter *sc, char *pTag,
                         struct mbuf *m, uint8_t contents);
 
+/* Defined in bxe.c, init'd in bxereset or something in bxe_dev.c */
+extern qlock_t bxe_prev_mtx;
+
 /***********/
 /* INLINES */
 /***********/