[haiku-commits] r34815 - in haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200: . dev/iwi

  • From: coling@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 29 Dec 2009 23:31:43 +0100 (CET)

Author: colin
Date: 2009-12-29 23:31:43 +0100 (Tue, 29 Dec 2009)
New Revision: 34815
Changeset: http://dev.haiku-os.org/changeset/34815/haiku

Modified:
   
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200/dev/iwi/if_iwi.c
   
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200/dev/iwi/if_iwivar.h
   haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200/glue.c
Log:
* Ensuring reading of interrupt status is done only once.
* Code style cleanup.
* Automatic white space cleanup.


Modified: 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200/dev/iwi/if_iwi.c
===================================================================
--- 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200/dev/iwi/if_iwi.c
   2009-12-29 22:20:54 UTC (rev 34814)
+++ 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200/dev/iwi/if_iwi.c
   2009-12-29 22:31:43 UTC (rev 34815)
@@ -395,11 +395,11 @@
        val = iwi_read_prom_word(sc, IWI_EEPROM_MAC + 2);
        macaddr[4] = val & 0xff;
        macaddr[5] = val >> 8;
-       
+
        bands = 0;
        setbit(&bands, IEEE80211_MODE_11B);
        setbit(&bands, IEEE80211_MODE_11G);
-       if (pci_get_device(dev) >= 0x4223) 
+       if (pci_get_device(dev) >= 0x4223)
                setbit(&bands, IEEE80211_MODE_11A);
        ieee80211_init_channels(ic, NULL, &bands);
 
@@ -567,7 +567,7 @@
 
        error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), 4, 0,
            BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
-           count * IWI_CMD_DESC_SIZE, 1, count * IWI_CMD_DESC_SIZE, 0, 
+           count * IWI_CMD_DESC_SIZE, 1, count * IWI_CMD_DESC_SIZE, 0,
            NULL, NULL, &ring->desc_dmat);
        if (error != 0) {
                device_printf(sc->sc_dev, "could not create desc DMA tag\n");
@@ -612,7 +612,7 @@
        }
 
        if (ring->desc_dmat != NULL)
-               bus_dma_tag_destroy(ring->desc_dmat);   
+               bus_dma_tag_destroy(ring->desc_dmat);
 }
 
 static int
@@ -629,7 +629,7 @@
 
        error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), 4, 0,
            BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
-           count * IWI_TX_DESC_SIZE, 1, count * IWI_TX_DESC_SIZE, 0, NULL, 
+           count * IWI_TX_DESC_SIZE, 1, count * IWI_TX_DESC_SIZE, 0, NULL,
            NULL, &ring->desc_dmat);
        if (error != 0) {
                device_printf(sc->sc_dev, "could not create desc DMA tag\n");
@@ -908,7 +908,7 @@
        sc->sc_node_free(ni);
 }
 
-/* 
+/*
  * Convert h/w rate code to IEEE rate code.
  */
 static int
@@ -1657,10 +1657,14 @@
 
        IWI_LOCK(sc);
 
+#if !defined(__HAIKU__)
        if ((r = CSR_READ_4(sc, IWI_CSR_INTR)) == 0 || r == 0xffffffff) {
                IWI_UNLOCK(sc);
                return;
        }
+#else
+       r = atomic_get((int32 *)&sc->sc_intr_status);
+#endif
 
        /* acknowledge interrupts */
        CSR_WRITE_4(sc, IWI_CSR_INTR, r);
@@ -2901,7 +2905,7 @@
                 * key setup.  This typically is due to a user app bug
                 * but if we blindly grab the key the firmware will
                 * barf so avoid it for now.
-                */ 
+                */
                if (vap->iv_def_txkey != IEEE80211_KEYIX_NONE)
                        assoc->auth |= vap->iv_def_txkey << 4;
 

Modified: 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200/dev/iwi/if_iwivar.h
===================================================================
--- 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200/dev/iwi/if_iwivar.h
        2009-12-29 22:20:54 UTC (rev 34814)
+++ 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200/dev/iwi/if_iwivar.h
        2009-12-29 22:31:43 UTC (rev 34815)
@@ -216,6 +216,10 @@
 
        struct iwi_rx_radiotap_header sc_rxtap;
        struct iwi_tx_radiotap_header sc_txtap;
+
+#if defined(__HAIKU__)
+       uint32_t sc_intr_status;
+#endif;
 };
 
 #define        IWI_STATE_BEGIN(_sc, _state)    do {                    \

Modified: 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200/glue.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200/glue.c     
2009-12-29 22:20:54 UTC (rev 34814)
+++ haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200/glue.c     
2009-12-29 22:31:43 UTC (rev 34815)
@@ -29,19 +29,15 @@
 {
        struct iwi_softc* sc = (struct iwi_softc*)device_get_softc(dev);
        uint32 r;
-       HAIKU_INTR_REGISTER_STATE;
 
-       HAIKU_INTR_REGISTER_ENTER();
-       if ((r = CSR_READ_4(sc, IWI_CSR_INTR)) == 0 || r == 0xffffffff) {
-               HAIKU_INTR_REGISTER_LEAVE();
+       r = CSR_READ_4(sc, IWI_CSR_INTR);
+       if (r  == 0 || r == 0xffffffff)
                return 0;
-       }
 
-       /* disable interrupts */
-       CSR_WRITE_4(sc, IWI_CSR_INTR_MASK, 0);
-       
-       HAIKU_INTR_REGISTER_LEAVE();
+       atomic_set((int32*)&sc->sc_intr_status, r);
 
+       CSR_WRITE_4(sc, IWI_CSR_INTR_MASK, 0);
+               // disable interrupts
        return 1;
 }
 
@@ -51,6 +47,6 @@
 {
        struct iwi_softc* sc = (struct iwi_softc*)device_get_softc(dev);
 
-       /* enable interrupts */
        CSR_WRITE_4(sc, IWI_CSR_INTR_MASK, IWI_INTR_MASK);
+               // reenable interrupts
 }


Other related posts:

  • » [haiku-commits] r34815 - in haiku/trunk/src/add-ons/kernel/drivers/network/wlan/iprowifi2200: . dev/iwi - coling