[haiku-commits] r35060 - in haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx: . dev/bwi

  • From: mmlr@xxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 13 Jan 2010 23:24:18 +0100 (CET)

Author: mmlr
Date: 2010-01-13 23:24:18 +0100 (Wed, 13 Jan 2010)
New Revision: 35060
Changeset: http://dev.haiku-os.org/changeset/35060/haiku

Modified:
   
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/dev/bwi/if_bwi.c
   haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c
Log:
Move just a bit more of the interrupt code to the glue code. It does an and with
the enabled interrupts to check if there's anything of interest. This obviously
couldn't really work when clearing the enabled interrupts in the glue code.
This gets broadcom43xx working for me, tested with a Linksys WMP54GS-EU (PCI).


Modified: 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/dev/bwi/if_bwi.c
===================================================================
--- 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/dev/bwi/if_bwi.c
   2010-01-13 22:02:21 UTC (rev 35059)
+++ 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/dev/bwi/if_bwi.c
   2010-01-13 22:24:18 UTC (rev 35060)
@@ -1581,9 +1581,6 @@
                BWI_UNLOCK(sc);
                return;
        }
-#else
-       intr_status = atomic_get((int32 *)&sc->sc_intr_status);
-#endif
 
        DPRINTF(sc, BWI_DBG_INTR, "intr status 0x%08x\n", intr_status);
 
@@ -1592,6 +1589,9 @@
                BWI_UNLOCK(sc);
                return;
        }
+#else
+       intr_status = atomic_get((int32 *)&sc->sc_intr_status);
+#endif
 
        KASSERT(sc->sc_cur_regwin->rw_type == BWI_REGWIN_T_MAC,
            ("current regwin type %d", sc->sc_cur_regwin->rw_type));

Modified: 
haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c     
2010-01-13 22:02:21 UTC (rev 35059)
+++ haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx/glue.c     
2010-01-13 22:24:18 UTC (rev 35060)
@@ -44,6 +44,12 @@
                return 0;
        }
 
+       intr_status &= CSR_READ_4(sc, BWI_MAC_INTR_MASK);
+       if (intr_status == 0) {
+               // nothing interesting
+               return 0;
+       }
+
        atomic_set((int32*)&sc->sc_intr_status, intr_status);
 
        CSR_CLRBITS_4(sc, BWI_MAC_INTR_MASK, BWI_ALL_INTRS);


Other related posts:

  • » [haiku-commits] r35060 - in haiku/trunk/src/add-ons/kernel/drivers/network/wlan/broadcom43xx: . dev/bwi - mmlr