BXE: changes sp_state back to a long
[akaros.git] / kern / drivers / net / bxe / bxe.h
index 66e0e9b..c59fa61 100644 (file)
 #include <smp.h>
 #include <stdio.h>
 #include <string.h>
+#include <bitmap.h>
+#include <taskqueue.h>
 
 
 /* MACROS for conversion to AKAROS. Might we want this stuff someday? */
 #define __predict_false(x) (x)
+#define __noinline 
+#define ETH_ADDR_LEN 6
+#define MCLBYTES 2048
 /* TYPEDEFS for conversion to AKAROS. These are temporary, but it makes it easier to see what is in need of change. */
 typedef struct netif *if_t;
 typedef uint64_t ift_counter;
@@ -54,17 +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 spinlock_t ECORE_MUTEX_SPIN;
-typedef qlock_t ECORE_MUTEX;
-typedef qlock_t mtx;
 typedef int device_t;
-#define mtx_lock(x) qlock(x)
-#define mtx_unlock(x) qunlock(x)
-#define MTX_ASSERT(lock, thing)
+// WTF ...
+typedef uint64_t uintmax_t;
+#define MA_OWNED 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
@@ -516,17 +517,16 @@ 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(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(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 */
@@ -599,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;
@@ -693,6 +690,7 @@ struct bxe_fastpath {
 #define FP_SB_MAX_E1x 16
 #define FP_SB_MAX_E2  HC_SB_MAX_SB_E2
 
+#define MAX_CONTEXT 16 /* XXX taken from other fbsd source. */
 union cdu_context {
     struct eth_context eth;
     char pad[1024];
@@ -899,7 +897,9 @@ struct bxe_fw_stats_data {
  * chip/interface being started/stopped/reinitialized, the actual work is
  * offloaded to a taskqueue.
  */
-#define BXE_CORE_LOCK_SX
+//#define BXE_CORE_LOCK_SX
+// For AKAROS, we don't have sx.
+#undef BXE_CORE_LOCK_SX
 
 /*
  * This is the slowpath data structure. It is mapped into non-paged memory
@@ -907,8 +907,6 @@ struct bxe_fw_stats_data {
  * aligned.
  */
 struct bxe_slowpath {
-
-#if 0
     /*
      * The cdu_context array MUST be the first element in this
      * structure. It is used during the leading edge ramrod
@@ -919,7 +917,6 @@ struct bxe_slowpath {
     /* Used as a DMA source for MAC configuration. */
     struct mac_configuration_cmd    mac_config;
     struct mac_configuration_cmd    mcast_config;
-#endif
 
     /* used by the DMAE command executer */
     struct dmae_command dmae[MAX_DMAE_C];
@@ -1019,14 +1016,11 @@ struct bxe_port {
 
     uint32_t    phy_addr;
 
-#warning "no phy mtx"
-    /* Used to synchronize phy accesses. *
-    struct mtx  phy_mtx;
-    char        phy_mtx_name[32];
-    */
+       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)
 
     /*
@@ -1047,11 +1041,13 @@ struct bxe_mf_info {
     uint32_t multi_vnics_mode; /* can be set even if vnics_per_port = 1 */
     uint32_t path_has_ovlan;   /* MF mode in the path (can be different than the MF mode of the function */
 
-#define IS_MULTI_VNIC(sc)  ((sc)->devinfo.mf_info.multi_vnics_mode)
-#define VNICS_PER_PORT(sc) ((sc)->devinfo.mf_info.vnics_per_port)
-#define VNICS_PER_PATH(sc)                                  \
+#define IS_MULTI_VNIC(sc)  0 /*((sc)->devinfo.mf_info.multi_vnics_mode)*/
+#define VNICS_PER_PORT(sc) 1/*((sc)->devinfo.mf_info.vnics_per_port)*/
+#define VNICS_PER_PATH(sc) 1
+  /*                                                       \
     ((sc)->devinfo.mf_info.vnics_per_port *                 \
      ((CHIP_PORT_MODE(sc) == CHIP_4_PORT_MODE) ? 2 : 1 ))
+  */
 
     uint8_t min_bw[MAX_VNIC_NUM];
     uint8_t max_bw[MAX_VNIC_NUM];
@@ -1263,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
@@ -1312,22 +1307,35 @@ 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
-     * has a first element of 'void *if_softc' (which is us). XXX
-     */
-    if_t           ifp;
+       /*
+        * First entry must be a pointer to the BSD ifnet struct which
+        * has a first element of 'void *if_softc' (which is us). XXX
+        */
+       if_t        ifp;
        /* OS defined structs */
        struct net_device *netdev;
-       struct pci_device *pdev;
+       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 */
-    int             media;
-
-    int             state; /* device state */
+       // struct ifmedia  ifmedia; /* network interface media structure */
+       int             media;
+       
+       int             state; /* device state */
 #define BXE_STATE_CLOSED                 0x0000
 #define BXE_STATE_OPENING_WAITING_LOAD   0x1000
 #define BXE_STATE_OPENING_WAITING_PORT   0x2000
@@ -1338,8 +1346,8 @@ struct bxe_adapter {
 #define BXE_STATE_DISABLED               0xD000
 #define BXE_STATE_DIAG                   0xE000
 #define BXE_STATE_ERROR                  0xF000
-
-    int flags;
+       
+       int flags;
 #define BXE_ONE_PORT_FLAG    0x00000001
 #define BXE_NO_ISCSI         0x00000002
 #define BXE_NO_FCOE          0x00000004
@@ -1354,57 +1362,52 @@ struct bxe_adapter {
 //#define BXE_SAFC_TX_FLAG     0x00000400
 #define BXE_MF_FUNC_DIS      0x00000800
 #define BXE_TX_SWITCHING     0x00001000
-
-    unsigned long debug; /* per-instance debug logging config */
-
+       
+       unsigned long debug; /* per-instance debug logging config */
+       
 #define MAX_BARS 5
-    struct bxe_bar bar[MAX_BARS]; /* map BARs 0, 2, 4 */
-
-    uint16_t doorbell_size;
-
+       struct bxe_bar bar[MAX_BARS]; /* map BARs 0, 2, 4 */
+       
+       uint16_t doorbell_size;
+       
 #warning "no timer callout"
-    /* periodic timer callout */
+       /* periodic timer callout */
 #define PERIODIC_STOP 0
 #define PERIODIC_GO   1
-  /*    volatile unsigned long periodic_flags;
-    struct callout         periodic_callout;
-  */
-    /* chip start/stop/reset taskqueue */
+       atomic_t periodic_flags;
+       //      struct callout         periodic_callout;
+       /* chip start/stop/reset taskqueue */
 #define CHIP_TQ_NONE   0
 #define CHIP_TQ_START  1
 #define CHIP_TQ_STOP   2
 #define CHIP_TQ_REINIT 3
-    volatile unsigned long 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];
-
-    /* slowpath interrupt taskqueue */
-    struct task      sp_tq_task;
-    struct taskqueue *sp_tq;
-    char             sp_tq_name[32];
-
-    /* set rx_mode asynchronous taskqueue */
-    struct task      rx_mode_tq_task;
-    struct taskqueue *rx_mode_tq;
-    char             rx_mode_tq_name[32];
-
-    struct bxe_fastpath fp[MAX_RSS_CHAINS];
-    struct bxe_sp_objs  sp_objs[MAX_RSS_CHAINS];
-
-#endif
-    device_t dev;  /* parent device handle */
-    uint8_t  unit; /* driver instance number */
-
-    int pcie_bus;    /* PCIe bus number */
-    int pcie_device; /* PCIe device/slot number */
-    int pcie_func;   /* PCIe function number */
-
-    uint8_t pfunc_rel; /* function relative */
-    uint8_t pfunc_abs; /* function absolute */
-    uint8_t path_id;   /* function absolute */
+       atomic_t chip_tq_flags;
+       struct task            chip_tq_task;
+       struct taskqueue       *chip_tq;
+       char                   chip_tq_name[32];
+       
+       /* slowpath interrupt taskqueue */
+       struct task      sp_tq_task;
+       struct taskqueue *sp_tq;
+       char             sp_tq_name[32];
+       
+       /* set rx_mode asynchronous taskqueue */
+       struct task      rx_mode_tq_task;
+       struct taskqueue *rx_mode_tq;
+       char             rx_mode_tq_name[32];
+       struct bxe_fastpath fp[MAX_RSS_CHAINS];
+       struct bxe_sp_objs  sp_objs[MAX_RSS_CHAINS];
+       
+
+       uint8_t  unit; /* driver instance number */
+       
+       int pcie_bus;    /* PCIe bus number */
+       int pcie_device; /* PCIe device/slot number */
+       int pcie_func;   /* PCIe function number */
+       
+       uint8_t pfunc_rel; /* function relative */
+       uint8_t pfunc_abs; /* function absolute */
+       uint8_t path_id;   /* function absolute */
 #define SC_PATH(sc)     (sc->path_id)
 #define SC_PORT(sc)     (sc->pfunc_rel & 1)
 #define SC_FUNC(sc)     (sc->pfunc_rel)
@@ -1416,173 +1419,166 @@ struct bxe_adapter {
 #define VNIC_ID(sc)     SC_VN(sc)
 #define FUNC_ID(sc)     SC_FUNC(sc)
 #define ABS_FUNC_ID(sc) SC_ABS_FUNC(sc)
-#define SC_FW_MB_IDX_VN(sc, vn)                                
-#if 0
-\
+#define SC_FW_MB_IDX_VN(sc, vn)                                \
     (SC_PORT(sc) + (vn) *                                      \
      ((CHIP_IS_E1x(sc) || (CHIP_IS_MODE_4_PORT(sc))) ? 2 : 1))
-#endif
 
 #define SC_FW_MB_IDX(sc) SC_FW_MB_IDX_VN(sc, SC_VN(sc))
-
-    int if_capen; /* enabled interface capabilities */
-
-  struct bxe_devinfo devinfo;
-    char fw_ver_str[32];
-    char mf_mode_str[32];
-    char pci_link_str[32];
-  const struct iro *iro_array;
-
-#warning "no locking of any kind"
-#if 0
+       
+       int if_capen; /* enabled interface capabilities */
+       
+       struct bxe_devinfo devinfo;
+       char fw_ver_str[32];
+       char mf_mode_str[32];
+       char pci_link_str[32];
+       const struct iro *iro_array;
+       
 #ifdef BXE_CORE_LOCK_SX
-    struct sx      core_sx;
-    char           core_sx_name[32];
+       struct sx      core_sx;
+       char           core_sx_name[32];
 #else
-    struct mtx     core_mtx;
-    char           core_mtx_name[32];
-#endif
-    struct mtx     sp_mtx;
-    char           sp_mtx_name[32];
-    struct mtx     dmae_mtx;
-    char           dmae_mtx_name[32];
-    struct mtx     fwmb_mtx;
-    char           fwmb_mtx_name[32];
-    struct mtx     print_mtx;
-    char           print_mtx_name[32];
-    struct mtx     stats_mtx;
-    char           stats_mtx_name[32];
-    struct mtx     mcast_mtx;
-    char           mcast_mtx_name[32];
+       qlock_t     core_mtx;
+       char           core_mtx_name[32];
 #endif
+       qlock_t     sp_mtx;
+       char           sp_mtx_name[32];
+       qlock_t     dmae_mtx;
+       char           dmae_mtx_name[32];
+       qlock_t     fwmb_mtx;
+       char           fwmb_mtx_name[32];
+       qlock_t     print_mtx;
+       char           print_mtx_name[32];
+       qlock_t     stats_mtx;
+       char           stats_mtx_name[32];
+       qlock_t     mcast_mtx;
+       char           mcast_mtx_name[32];
+       
 #ifdef BXE_CORE_LOCK_SX
 #define BXE_CORE_TRYLOCK(sc)      sx_try_xlock(&sc->core_sx)
 #define BXE_CORE_LOCK(sc)         sx_xlock(&sc->core_sx)
 #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"
 #define BXE_MCAST_LOCK(sc)        \
     do {                          \
-    whatever. \\
-        IF_ADDR_LOCK(sc->ifp);  \
+           /*IF_ADDR_LOCK(sc->ifp);*/          \
     } while (0)
 #define BXE_MCAST_LOCK_ASSERT(sc) mtx_assert(&sc->mcast_mtx, MA_OWNED)
-
-    int dmae_ready;
+       
+       int dmae_ready;
 #define DMAE_READY(sc) (sc->dmae_ready)
-
-#warning "no credit ppools. "
-#if 0
-    struct ecore_credit_pool_obj vlans_pool;
-    struct ecore_credit_pool_obj macs_pool;
-    struct ecore_rx_mode_obj     rx_mode_obj;
-    struct ecore_mcast_obj       mcast_obj;
-    struct ecore_rss_config_obj  rss_conf_obj;
-    struct ecore_func_sp_obj     func_obj;
-#endif
-    uint16_t fw_seq;
-    uint16_t fw_drv_pulse_wr_seq;
-    uint32_t func_stx;
-
-    struct elink_params         link_params;
-    struct elink_vars           link_vars;
-    uint32_t                    link_cnt;
-  struct bxe_link_report_data last_reported_link;
-    char mac_addr_str[32];
-
-    int last_reported_link_state;
-
-    int tx_ring_size;
-    int rx_ring_size;
-    int wol;
-
-    int is_leader;
-    int recovery_state;
+       
+       struct ecore_credit_pool_obj vlans_pool;
+       struct ecore_credit_pool_obj macs_pool;
+       struct ecore_rx_mode_obj     rx_mode_obj;
+       struct ecore_mcast_obj       mcast_obj;
+       struct ecore_rss_config_obj  rss_conf_obj;
+       struct ecore_func_sp_obj     func_obj;
+
+       uint16_t fw_seq;
+       uint16_t fw_drv_pulse_wr_seq;
+       uint32_t func_stx;
+       
+       struct elink_params         link_params;
+       struct elink_vars           link_vars;
+       uint32_t                    link_cnt;
+       struct bxe_link_report_data last_reported_link;
+       char mac_addr_str[32];
+       
+       int last_reported_link_state;
+       
+       int tx_ring_size;
+       int rx_ring_size;
+       int wol;
+       
+       int is_leader;
+       int recovery_state;
 #define BXE_RECOVERY_DONE        1
 #define BXE_RECOVERY_INIT        2
 #define BXE_RECOVERY_WAIT        3
 #define BXE_RECOVERY_FAILED      4
 #define BXE_RECOVERY_NIC_LOADING 5
-
-    uint32_t rx_mode;
+       
+       uint32_t rx_mode;
 #define BXE_RX_MODE_NONE     0
 #define BXE_RX_MODE_NORMAL   1
 #define BXE_RX_MODE_ALLMULTI 2
 #define BXE_RX_MODE_PROMISC  3
 #define BXE_MAX_MULTICAST    64
-
-  struct bxe_port port;
-
-  struct cmng_init cmng;
-
-    /* user configs */
-    int      num_queues;
-    int      max_rx_bufs;
-    int      hc_rx_ticks;
-    int      hc_tx_ticks;
-    int      rx_budget;
-    int      max_aggregation_size;
-    int      mrrs;
-    int      autogreeen;
+       
+       struct bxe_port port;
+       
+       struct cmng_init cmng;
+       
+       /* user configs */
+       int      num_queues;
+       int      max_rx_bufs;
+       int      hc_rx_ticks;
+       int      hc_tx_ticks;
+       int      rx_budget;
+       int      max_aggregation_size;
+       int      mrrs;
+       int      autogreeen;
 #define AUTO_GREEN_HW_DEFAULT 0
 #define AUTO_GREEN_FORCE_ON   1
 #define AUTO_GREEN_FORCE_OFF  2
-    int      interrupt_mode;
+       int      interrupt_mode;
 #define INTR_MODE_INTX 0
 #define INTR_MODE_MSI  1
 #define INTR_MODE_MSIX 2
-    int      udp_rss;
-
-    /* interrupt allocations */
-    struct bxe_intr intr[MAX_RSS_CHAINS+1];
-    int             intr_count;
-    uint8_t         igu_dsb_id;
-    uint8_t         igu_base_sb;
-    uint8_t         igu_sb_cnt;
-    //uint8_t         min_msix_vec_cnt;
-    uint32_t        igu_base_addr;
-    //bus_addr_t      def_status_blk_mapping;
-    uint8_t         base_fw_ndsb;
+       int      udp_rss;
+       
+       /* interrupt allocations */
+       struct bxe_intr intr[MAX_RSS_CHAINS+1];
+       int             intr_count;
+       uint8_t         igu_dsb_id;
+       uint8_t         igu_base_sb;
+       uint8_t         igu_sb_cnt;
+       //uint8_t         min_msix_vec_cnt;
+       uint32_t        igu_base_addr;
+       //bus_addr_t      def_status_blk_mapping;
+       uint8_t         base_fw_ndsb;
 #define DEF_SB_IGU_ID 16
 #define DEF_SB_ID     HC_SP_SB_ID
-
-    /* parent bus DMA tag  */
-    bus_dma_tag_t parent_dma_tag;
-
-    /* default status block */
-  struct bxe_dma              def_sb_dma;
-  //    struct host_sp_status_block *def_sb;
-    uint16_t                    def_idx;
-    uint16_t                    def_att_idx;
-    uint32_t                    attn_state;
-  //    struct attn_route           attn_group[MAX_DYNAMIC_ATTN_GRPS];
-
+       
+       /* parent bus DMA tag  */
+       bus_dma_tag_t parent_dma_tag;
+       
+       /* default status block */
+       struct bxe_dma              def_sb_dma;
+       struct host_sp_status_block *def_sb;
+       uint16_t                    def_idx;
+       uint16_t                    def_att_idx;
+       uint32_t                    attn_state;
+       struct attn_route           attn_group[MAX_DYNAMIC_ATTN_GRPS];
+       
 /* general SP events - stats query, cfc delete, etc */
 #define HC_SP_INDEX_ETH_DEF_CONS         3
 /* EQ completions */
@@ -1594,12 +1590,12 @@ struct bxe_adapter {
 #define HC_SP_INDEX_ETH_ISCSI_CQ_CONS    5
 #define HC_SP_INDEX_ETH_ISCSI_RX_CQ_CONS 1
 
-    /* event queue */
-  struct bxe_dma        eq_dma;
-  //    union event_ring_elem *eq;
-    uint16_t              eq_prod;
-    uint16_t              eq_cons;
-    uint16_t              *eq_cons_sb;
+       /* event queue */
+       struct bxe_dma        eq_dma;
+       union event_ring_elem *eq;
+       uint16_t              eq_prod;
+       uint16_t              eq_cons;
+       uint16_t              *eq_cons_sb;
 #define NUM_EQ_PAGES     1 /* must be a power of 2 */
 #define EQ_DESC_CNT_PAGE (BCM_PAGE_SIZE / sizeof(union event_ring_elem))
 #define EQ_DESC_MAX_PAGE (EQ_DESC_CNT_PAGE - 1)
@@ -1614,53 +1610,51 @@ struct bxe_adapter {
 #define EQ_DESC(x) ((x) & EQ_DESC_MASK)
 
     /* slow path */
-  struct bxe_dma      sp_dma;
-  struct bxe_slowpath *sp;
-    unsigned long       sp_state;
-
-    /* slow path queue */
-  struct bxe_dma spq_dma;
-  //    struct eth_spe *spq;
+       struct bxe_dma      sp_dma;
+       struct bxe_slowpath *sp;
+       unsigned long       sp_state;
+       
+       /* slow path queue */
+       struct bxe_dma spq_dma;
+struct eth_spe *spq;
 #define SP_DESC_CNT     (BCM_PAGE_SIZE / sizeof(struct eth_spe))
 #define MAX_SP_DESC_CNT (SP_DESC_CNT - 1)
 #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;
-    //uint16_t       *spq_hw_con;
-    //uint16_t       spq_left;
-
-    volatile unsigned long eq_spq_left; /* COMMON_xxx ramrod credit */
-    volatile unsigned long 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;
-    uint32_t       gz_outlen;
+       
+       uint16_t       spq_prod_idx;
+       struct eth_spe *spq_prod_bd;
+       struct eth_spe *spq_last_bd;
+       uint16_t       *dsb_sp_prod;
+       uint16_t       *spq_hw_con;
+       uint16_t       spq_left;
+       
+       atomic_t eq_spq_left; /* COMMON_xxx ramrod credit */
+       atomic_t cq_spq_left; /* ETH_xxx ramrod credit */
+       
+       /* fw decompression buffer */
+       struct bxe_dma gz_buf_dma;
+       void           *gz_buf;
+       //    z_streamp      gz_strm;
+       uint32_t       gz_outlen;
 #define GUNZIP_BUF(sc)    (sc->gz_buf)
 #define GUNZIP_OUTLEN(sc) (sc->gz_outlen)
 #define GUNZIP_PHYS(sc)   (sc->gz_buf_dma.paddr)
 #define FW_BUF_SIZE       0x40000
-
-    const struct raw_op *init_ops;
-    const uint16_t *init_ops_offsets; /* init block offsets inside init_ops */
-    const uint32_t *init_data;        /* data blob, 32 bit granularity */
-    uint32_t       init_mode_flags;
+       
+       const struct raw_op *init_ops;
+       const uint16_t *init_ops_offsets; /* init block offsets inside init_ops */
+       const uint32_t *init_data;        /* data blob, 32 bit granularity */
+       uint32_t       init_mode_flags;
 #define INIT_MODE_FLAGS(sc) (sc->init_mode_flags)
-    /* PRAM blobs - raw data */
-    const uint8_t *tsem_int_table_data;
-    const uint8_t *tsem_pram_data;
-    const uint8_t *usem_int_table_data;
-    const uint8_t *usem_pram_data;
-    const uint8_t *xsem_int_table_data;
-    const uint8_t *xsem_pram_data;
-    const uint8_t *csem_int_table_data;
-    const uint8_t *csem_pram_data;
+       /* PRAM blobs - raw data */
+       const uint8_t *tsem_int_table_data;
+       const uint8_t *tsem_pram_data;
+       const uint8_t *usem_int_table_data;
+       const uint8_t *usem_pram_data;
+       const uint8_t *xsem_int_table_data;
+       const uint8_t *xsem_pram_data;
+       const uint8_t *csem_int_table_data;
+       const uint8_t *csem_pram_data;
 #define INIT_OPS(sc)                 (sc->init_ops)
 #define INIT_OPS_OFFSETS(sc)         (sc->init_ops_offsets)
 #define INIT_DATA(sc)                (sc->init_data)
@@ -1673,121 +1667,114 @@ struct bxe_adapter {
 #define INIT_CSEM_INT_TABLE_DATA(sc) (sc->csem_int_table_data)
 #define INIT_CSEM_PRAM_DATA(sc)      (sc->csem_pram_data)
 
-    /* ILT
-     * For max 196 cids (64*3 + non-eth), 32KB ILT page size and 1KB
-     * context size we need 8 ILT entries.
-     */
-#warning "ILT -- will this struct ever end?"
+       /* ILT
+        * For max 196 cids (64*3 + non-eth), 32KB ILT page size and 1KB
+        * context size we need 8 ILT entries.
+        */
 #define ILT_MAX_L2_LINES 8
-  //    struct hw_context context[ILT_MAX_L2_LINES];
-  //    struct ecore_ilt *ilt;
+       //    struct hw_context context[ILT_MAX_L2_LINES];
+       struct ecore_ilt *ilt;
 #define ILT_MAX_LINES 256
-
+       
 /* max supported number of RSS queues: IGU SBs minus one for CNIC */
 #define BXE_MAX_RSS_COUNT(sc) ((sc)->igu_sb_cnt - CNIC_SUPPORT(sc))
 /* max CID count: Max RSS * Max_Tx_Multi_Cos + FCoE + iSCSI */
 #if 1
 #define BXE_L2_MAX_CID(sc)                                              \
-    (BXE_MAX_RSS_COUNT(sc) * ECORE_MULTI_TX_COS + 2 * CNIC_SUPPORT(sc))
+       (BXE_MAX_RSS_COUNT(sc) * ECORE_MULTI_TX_COS + 2 * CNIC_SUPPORT(sc))
 #else
 #define BXE_L2_MAX_CID(sc) /* OOO + FWD */                              \
-    (BXE_MAX_RSS_COUNT(sc) * ECORE_MULTI_TX_COS + 4 * CNIC_SUPPORT(sc))
+       (BXE_MAX_RSS_COUNT(sc) * ECORE_MULTI_TX_COS + 4 * CNIC_SUPPORT(sc))
 #endif
 #if 1
-#define BXE_L2_CID_COUNT(sc)                                             \
-    (BXE_NUM_ETH_QUEUES(sc) * ECORE_MULTI_TX_COS + 2 * CNIC_SUPPORT(sc))
+#define BXE_L2_CID_COUNT(sc)                                           \
+       (BXE_NUM_ETH_QUEUES(sc) * ECORE_MULTI_TX_COS + 2 * CNIC_SUPPORT(sc))
 #else
-#define BXE_L2_CID_COUNT(sc) /* OOO + FWD */                             \
-    (BXE_NUM_ETH_QUEUES(sc) * ECORE_MULTI_TX_COS + 4 * CNIC_SUPPORT(sc))
+#define BXE_L2_CID_COUNT(sc) /* OOO + FWD */                           \
+       (BXE_NUM_ETH_QUEUES(sc) * ECORE_MULTI_TX_COS + 4 * CNIC_SUPPORT(sc))
 #endif
 #define L2_ILT_LINES(sc)                                \
-    (DIV_ROUND_UP(BXE_L2_CID_COUNT(sc), ILT_PAGE_CIDS))
-
-    int qm_cid_count;
-
-    uint8_t dropless_fc;
-
-#if 0
-    struct bxe_dma *t2;
-#endif
-
-    /* total number of FW statistics requests */
-    uint8_t fw_stats_num;
-    /*
-     * This is a memory buffer that will contain both statistics ramrod
-     * request and data.
-     */
-  struct bxe_dma fw_stats_dma;
-    /*
-     * FW statistics request shortcut (points at the beginning of fw_stats
-     * buffer).
-     */
-    int                     fw_stats_req_size;
-  //    struct bxe_fw_stats_req *fw_stats_req;
-    bus_addr_t              fw_stats_req_mapping;
-    /*
-     * FW statistics data shortcut (points at the beginning of fw_stats
-     * buffer + fw_stats_req_size).
-     */
-    int                      fw_stats_data_size;
-  //    struct bxe_fw_stats_data *fw_stats_data;
-    bus_addr_t               fw_stats_data_mapping;
-
-    /* tracking a pending STAT_QUERY ramrod */
-    uint16_t stats_pending;
-    /* number of completed statistics ramrods */
-    uint16_t stats_comp;
-    uint16_t stats_counter;
-    uint8_t  stats_init;
-    int      stats_state;
-#if 0
-    struct bxe_eth_stats         eth_stats;
-    struct host_func_stats       func_stats;
-    struct bxe_eth_stats_old     eth_stats_old;
-    struct bxe_net_stats_old     net_stats_old;
-    struct bxe_fw_port_stats_old fw_stats_old;
-
-    struct dmae_command stats_dmae; /* used by dmae command loader */
-#endif
-    int                 executer_idx;
-
-    int mtu;
-
-    /* LLDP params */
-#if 0
-    struct bxe_config_lldp_params lldp_config_params;
-#endif
-    /* DCB support on/off */
-    int dcb_state;
+       (DIV_ROUND_UP(BXE_L2_CID_COUNT(sc), ILT_PAGE_CIDS))
+       
+       int qm_cid_count;
+       
+       uint8_t dropless_fc;
+
+       struct bxe_dma *t2;
+
+       /* total number of FW statistics requests */
+       uint8_t fw_stats_num;
+       /*
+        * This is a memory buffer that will contain both statistics ramrod
+        * request and data.
+        */
+       struct bxe_dma fw_stats_dma;
+       /*
+        * FW statistics request shortcut (points at the beginning of fw_stats
+        * buffer).
+        */
+       int                     fw_stats_req_size;
+       struct bxe_fw_stats_req *fw_stats_req;
+       bus_addr_t              fw_stats_req_mapping;
+       /*
+        * FW statistics data shortcut (points at the beginning of fw_stats
+        * buffer + fw_stats_req_size).
+        */
+       int                      fw_stats_data_size;
+       struct bxe_fw_stats_data *fw_stats_data;
+       bus_addr_t               fw_stats_data_mapping;
+       
+       /* tracking a pending STAT_QUERY ramrod */
+       uint16_t stats_pending;
+       /* number of completed statistics ramrods */
+       uint16_t stats_comp;
+       uint16_t stats_counter;
+       uint8_t  stats_init;
+       int      stats_state;
+
+       struct bxe_eth_stats         eth_stats;
+       struct host_func_stats       func_stats;
+       struct bxe_eth_stats_old     eth_stats_old;
+       struct bxe_net_stats_old     net_stats_old;
+       struct bxe_fw_port_stats_old fw_stats_old;
+       
+       struct dmae_command stats_dmae; /* used by dmae command loader */
+
+       int                 executer_idx;
+       
+       int mtu;
+       
+       /* LLDP params */
+       struct bxe_config_lldp_params lldp_config_params;
+       /* DCB support on/off */
+       int dcb_state;
 #define BXE_DCB_STATE_OFF 0
 #define BXE_DCB_STATE_ON  1
-    /* DCBX engine mode */
-    int dcbx_enabled;
+       /* DCBX engine mode */
+       int dcbx_enabled;
 #define BXE_DCBX_ENABLED_OFF        0
 #define BXE_DCBX_ENABLED_ON_NEG_OFF 1
 #define BXE_DCBX_ENABLED_ON_NEG_ON  2
 #define BXE_DCBX_ENABLED_INVALID    -1
-    uint8_t dcbx_mode_uset;
-#if 0
-    struct bxe_config_dcbx_params dcbx_config_params;
-    struct bxe_dcbx_port_params   dcbx_port_params;
-#endif
-    int dcb_version;
-
-    uint8_t cnic_support;
-    uint8_t cnic_enabled;
-    uint8_t cnic_loaded;
+       uint8_t dcbx_mode_uset;
+       struct bxe_config_dcbx_params dcbx_config_params;
+       struct bxe_dcbx_port_params   dcbx_port_params;
+       int dcb_version;
+       
+       uint8_t cnic_support;
+       uint8_t cnic_enabled;
+       uint8_t cnic_loaded;
 #define CNIC_SUPPORT(sc) 0 /* ((sc)->cnic_support) */
 #define CNIC_ENABLED(sc) 0 /* ((sc)->cnic_enabled) */
 #define CNIC_LOADED(sc)  0 /* ((sc)->cnic_loaded) */
-
-    /* multiple tx classes of service */
-    uint8_t max_cos;
+       
+       /* multiple tx classes of service */
+       uint8_t max_cos;
 #define BXE_MAX_PRIORITY 8
-    /* priority to cos mapping */
-    uint8_t prio_to_cos[BXE_MAX_PRIORITY];
-
-    int panic;
+       /* priority to cos mapping */
+       uint8_t prio_to_cos[BXE_MAX_PRIORITY];
+       
+       int panic;
 }; /* struct bxe_adapter */
 
 /* IOCTL sub-commands for edebug and firmware upgrade */
@@ -1906,7 +1893,7 @@ void bxe_reg_write32(struct bxe_adapter *sc, bus_size_t offset, uint32_t val);
     (sc->sp_dma.paddr + offsetof(struct bxe_slowpath, var))
 
 #define BXE_FP(sc, nr, var) ((sc)->fp[(nr)].var)
-#define BXE_SP_OBJ(sc, fp) ((sc)->sp_objs[(fp)->index])
+#define BXE_SP_OBJ(sc, fp) (void *) 0 /*((sc)->sp_objs[(fp)->index])*/
 
 #if 0
 #define bxe_fp(sc, nr, var)   ((sc)->fp[nr].var)
@@ -2095,8 +2082,8 @@ static const uint32_t dmae_reg_go_c[] = {
 #define BXE_SWCID_SHIFT 17
 #define BXE_SWCID_MASK  ((0x1 << BXE_SWCID_SHIFT) - 1)
 
-#define SW_CID(x)  (le32toh(x) & BXE_SWCID_MASK)
-#define CQE_CMD(x) (le32toh(x) >> COMMON_RAMROD_ETH_RX_CQE_CMD_ID_SHIFT)
+#define SW_CID(x)  (le32_to_cpu(x) & BXE_SWCID_MASK)
+#define CQE_CMD(x) (le32_to_cpu(x) >> COMMON_RAMROD_ETH_RX_CQE_CMD_ID_SHIFT)
 
 #define CQE_TYPE(cqe_fp_flags)   ((cqe_fp_flags) & ETH_FAST_PATH_RX_CQE_TYPE)
 #define CQE_TYPE_START(cqe_type) ((cqe_type) == RX_ETH_CQE_TYPE_ETH_START_AGG)
@@ -2117,12 +2104,11 @@ static const uint32_t dmae_reg_go_c[] = {
 #define PCI_PM_D0    1
 #define PCI_PM_D3hot 2
 
-int  bxe_test_bit(int nr, volatile unsigned long * addr);
-void bxe_set_bit(unsigned int nr, volatile unsigned long * addr);
-void bxe_clear_bit(int nr, volatile unsigned long * addr);
-int  bxe_test_and_set_bit(int nr, volatile unsigned long * addr);
-int  bxe_test_and_clear_bit(int nr, volatile unsigned long * addr);
-int  bxe_cmpxchg(volatile int *addr, int old, int new);
+#define bxe_test_bit(nr, addr) test_bit(nr, addr)
+#define bxe_set_bit(nr, addr) set_bit(nr, addr)
+#define bxe_clear_bit(nr, addr) clear_bit(nr, addr)
+#define bxe_test_and_set_bit(nr, addr) test_and_set_bit(nr, addr)
+#define bxe_test_and_clear_bit(nr, addr) test_and_clear_bit(nr, addr)
 
 void bxe_reg_wr_ind(struct bxe_adapter *sc, uint32_t addr,
                     uint32_t val);
@@ -2279,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 */
 /***********/