Move to using the adapter struct for the ctlr.
authorRon Minnich <rminnich@gmail.com>
Tue, 13 Jan 2015 01:24:15 +0000 (17:24 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 3 Feb 2015 15:12:27 +0000 (10:12 -0500)
Also remove more brokenness that no longer applies.

Signed-off-by: Ron Minnich <rminnich@gmail.com>
kern/drivers/net/bxe/bxe.h
kern/drivers/net/bxe/bxe_dev.c
kern/drivers/net/bxe/ecore_sp.h

index 8b78f3e..5e9131b 100644 (file)
@@ -1269,8 +1269,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 +1317,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 +1327,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 */
@@ -1496,8 +1508,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;
@@ -1625,7 +1635,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 +1645,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;
index 95f453e..1589548 100644 (file)
 #include <arch/pci.h>
 #include <ip.h>
 #include <ns.h>
-
+#include "bxe.h"
 /* We're required to print out stats at some point.  Here are a couple from
  * igbe, as an example. */
-#define Nstatistics 2
+
 static char *statistics[Nstatistics] = {
        "CRC Error",
        "Alignment Error",
 };
 
-/* Some controller structure.  not mandatory, but probably desirable.
- *
- * Contains anything needed for the NIC device, such as send/receive
- * descriptors, interrupt masks, status flags, locks for sync, eeprom stuff,
- * statistics arrays, etc. */
-struct ctlr {
-       struct pci_device                       *pci;
-       struct ether                            *edev;
-       int                                                     port;
-
-
-       /* e.g. */
-       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 */
-       unsigned int                            statistics[Nstatistics];
-};
-
 /* Most 9ns drivers have some form of helper to read from the IO space, whether
  * that's PIO or MMIO. */
-static inline uint32_t csr32r(struct ctlr *c, uintptr_t reg)
+static inline uint32_t csr32r(struct bxe_adapter *c, uintptr_t reg)
 {
        return read_mmreg32((uintptr_t) (c->mmio + (reg / 4)));
 }
 
-static inline void csr32w(struct ctlr *c, uintptr_t reg, uint32_t val)
+static inline void csr32w(struct bxe_adapter *c, uintptr_t reg, uint32_t val)
 {
        write_mmreg32((uintptr_t) (c->mmio + (reg / 4)), val);
 }
 
 static long bxeifstat(struct ether *edev, void *a, long n, uint32_t offset)
 {
-       struct ctlr *ctlr;
+       struct bxe_adapter *ctlr;
        char *p, *s;
        int i, l, r;
        uint64_t tuvl, ruvl;
@@ -113,7 +91,7 @@ static long bxectl(struct ether *edev, void *buf, long n)
        ERRSTACK(1);
        int v;
        char *p;
-       struct ctlr *ctlr;
+       struct bxe_adapter *ctlr;
        struct cmdbuf *cb;
        struct cmdtab *ct;
 
@@ -136,7 +114,7 @@ static long bxectl(struct ether *edev, void *buf, long n)
 static void bxepromiscuous(void *arg, int on)
 {
        int rctl;
-       struct ctlr *ctlr;
+       struct bxe_adapter *ctlr;
        struct ether *edev;
 
        edev = arg;
@@ -147,7 +125,7 @@ static void bxepromiscuous(void *arg, int on)
 static void bxemulticast(void *arg, uint8_t * addr, int add)
 {
        int bit, x;
-       struct ctlr *ctlr;
+       struct bxe_adapter *ctlr;
        struct ether *edev;
 
        edev = arg;
@@ -156,14 +134,14 @@ static void bxemulticast(void *arg, uint8_t * addr, int add)
 }
 
 /* Transmit initialization.  Not mandatory for 9ns, but a good idea */
-static void bxetxinit(struct ctlr *ctlr)
+static void bxetxinit(struct bxe_adapter *ctlr)
 {
 }
 
 static void bxetransmit(struct ether *edev)
 {
        struct block *bp;
-       struct ctlr *ctlr;
+       struct bxe_adapter *ctlr;
 
        ctlr = edev->ctlr;
 
@@ -192,7 +170,7 @@ static void bxetransmit(struct ether *edev)
 
 /* Not mandatory.  Called to make sure there are free blocks available for
  * incoming packets */
-static void bxereplenish(struct ctlr *ctlr)
+static void bxereplenish(struct bxe_adapter *ctlr)
 {
        struct block *bp;
 
@@ -217,14 +195,14 @@ static void bxereplenish(struct ctlr *ctlr)
 }
 
 /* Not mandatory.  Device init. */
-static void bxerxinit(struct ctlr *ctlr)
+static void bxerxinit(struct bxe_adapter *ctlr)
 {
        bxereplenish(ctlr);
 }
 
 static int bxerim(void* ctlr)
 {
-       //return ((struct ctlr*)ctlr)->rim != 0;
+       //return ((struct bxe_adapter*)ctlr)->rim != 0;
        return 1;
 }
 
@@ -233,7 +211,7 @@ static int bxerim(void* ctlr)
 static void bxerproc(void *arg)
 {
        struct block *bp;
-       struct ctlr *ctlr;
+       struct bxe_adapter *ctlr;
        struct ether *edev;
 
        edev = arg;
@@ -275,7 +253,7 @@ static void bxeattach(struct ether *edev)
 {
        ERRSTACK(1);
        struct block *bp;
-       struct ctlr *ctlr;
+       struct bxe_adapter *ctlr;
        char *name;
 
        ctlr = edev->ctlr;
@@ -298,7 +276,7 @@ static void bxeattach(struct ether *edev)
 /* Hard IRQ */
 static void bxeinterrupt(struct hw_trapframe *hw_tf, void *arg)
 {
-       struct ctlr *ctlr;
+       struct bxe_adapter *ctlr;
        struct ether *edev;
        int icr, im, txdw;
 
@@ -326,7 +304,7 @@ static void bxeshutdown(struct ether *ether)
 
 /* "reset", getting it back to the basic power-on state.  9ns drivers call this
  * during the initial setup (from the PCI func) */
-static int bxereset(struct ctlr *ctlr)
+static int bxereset(struct bxe_adapter *ctlr)
 {
        int ctrl, i, pause, r, swdpio, txcw;
 
@@ -340,7 +318,7 @@ static void bxepci(void)
 {
        int cls, id;
        struct pci_device *pcidev;
-       struct ctlr *ctlr;
+       struct bxe_adapter *ctlr;
        void *mem;
        uintptr_t mmio_paddr;
 
@@ -384,7 +362,7 @@ static void bxepci(void)
                        case 0x10:
                                break;
                }
-               ctlr = kzmalloc(sizeof(struct ctlr), 0);
+               ctlr = kzmalloc(sizeof(struct bxe_adapter), 0);
                if (ctlr == NULL) {
                        vunmap_vmem((uintptr_t) mem, pcidev->bar[0].mmio_sz);
                        error(Enomem);
@@ -395,10 +373,7 @@ static void bxepci(void)
                qlock_init(&ctlr->slock);
                rendez_init(&ctlr->rrendez);
 
-               /* port seems to be unused, and only used for some comparison with edev.
-                * plan9 just used the top of the raw bar, regardless of the type. */
-               ctlr->port = pcidev->bar[0].raw_bar & ~0x0f;
-               ctlr->pci = pcidev;
+               //ctlr->pci = pcidev;
                ctlr->mmio = mem;
                /* TODO: save 'mem' somewhere in the ctrl */
                
@@ -417,7 +392,7 @@ static void bxepci(void)
  * any of your ctlrs. */
 static int bxepnp(struct ether *edev)
 {
-       struct ctlr *ctlr;
+       struct bxe_adapter *ctlr;
 
        /* Allocs ctlrs for all PCI devices matching our IDs, does various PCI and
         * MMIO/port setup */
@@ -430,18 +405,21 @@ static int bxepnp(struct ether *edev)
                /* only want inactive ones */
                //if (ctlr->active)
                //      continue;
+               // well, oop.s
+               /*
                if (edev->port == 0 || edev->port == ctlr->port) {
                        ctlr->active = 1;
                        break;
                }
+               */
        }
        if (ctlr == NULL)
                return -1;
 
        edev->ctlr = ctlr;
-       edev->port = ctlr->port;
-       edev->irq = ctlr->pci->irqline;
-       edev->tbdf = MKBUS(BusPCI, ctlr->pci->bus, ctlr->pci->dev, ctlr->pci->func);
+       //edev->port = ctlr->port;
+       //      edev->irq = ctlr->pci->irqline;
+       //edev->tbdf = MKBUS(BusPCI, ctlr->pci->bus, ctlr->pci->dev, ctlr->pci->func);
        edev->netif.mbps = 1000;
        /* ea is the eth addr */
        //memmove(edev->ea, ctlr->ra, Eaddrlen);
index dd15267..8d2448f 100644 (file)
@@ -85,16 +85,12 @@ typedef _Bool bool;
 #define IRO sc->iro_array
 
 //typedef struct mtx ECORE_MUTEX;
-#define ECORE_MUTEX_INIT(_mutex) 
-//                                                             \
-//    mtx_init(_mutex, "ecore_lock", "ECORE Lock", MTX_DEF)
+#define ECORE_MUTEX_INIT(_mutex) /*    mtx_init(_mutex, "ecore_lock", "ECORE Lock", MTX_DEF)*/
 #define ECORE_MUTEX_LOCK(_mutex)   mtx_lock(_mutex)
 #define ECORE_MUTEX_UNLOCK(_mutex) mtx_unlock(_mutex)
 
 //typedef struct mtx ECORE_MUTEX_SPIN;
-#define ECORE_SPIN_LOCK_INIT(_spin, _sc)
-//                                                             \
-//    mtx_init(_spin, "ecore_lock", "ECORE Lock", MTX_DEF)
+#define ECORE_SPIN_LOCK_INIT(_spin, _sc) /*    mtx_init(_spin, "ecore_lock", "ECORE Lock", MTX_DEF)*/
 #define ECORE_SPIN_LOCK_BH(_spin)   mtx_lock(_spin) /* bh = bottom-half */
 #define ECORE_SPIN_UNLOCK_BH(_spin) mtx_unlock(_spin) /* bh = bottom-half */
 
@@ -205,14 +201,14 @@ typedef _Bool bool;
 
 uint32_t calc_crc32(uint8_t *crc32_packet, uint32_t crc32_length,
                     uint32_t crc32_seed, uint8_t complement);
-#warning "no bswap32"
+
 static inline uint32_t
 ECORE_CRC32_LE(uint32_t seed, uint8_t *mac, uint32_t len)
 {
     uint32_t packet_buf[2] = {0};
     memcpy(((uint8_t *)(&packet_buf[0]))+2, &mac[0], 2);
     memcpy(&packet_buf[1], &mac[2], 4);
-    return 0; //bswap32(calc_crc32((uint8_t *)packet_buf, 8, seed, 0));
+    return byte_swap32(calc_crc32((uint8_t *)packet_buf, 8, seed, 0));
 }
 
 #define ecore_sp_post(_sc, _a, _b, _c, _d) \