[PATCH] adm8211: kill interrupt loop
authorMichael Wu <flamingice@sourmilk.net>
Mon, 24 Sep 2007 22:10:25 +0000 (18:10 -0400)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 10 Oct 2007 23:53:07 +0000 (16:53 -0700)
Looping in the interrupt handler is unnecessary.

Signed-off-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/adm8211.c

index 49a6b9e..0893d0d 100644 (file)
@@ -458,51 +458,45 @@ do {                                                                         \
 
        struct ieee80211_hw *dev = dev_id;
        struct adm8211_priv *priv = dev->priv;
-       unsigned int count = 0;
-       u32 stsr;
-
-       do {
-               stsr = ADM8211_CSR_READ(STSR);
-               ADM8211_CSR_WRITE(STSR, stsr);
-               if (stsr == 0xffffffff)
-                       return IRQ_HANDLED;
-
-               if (!(stsr & (ADM8211_STSR_NISS | ADM8211_STSR_AISS)))
-                       break;
-
-               if (stsr & ADM8211_STSR_RCI)
-                       adm8211_interrupt_rci(dev);
-               if (stsr & ADM8211_STSR_TCI)
-                       adm8211_interrupt_tci(dev);
-
-               /*ADM8211_INT(LinkOn);*/
-               /*ADM8211_INT(LinkOff);*/
-
-               ADM8211_INT(PCF);
-               ADM8211_INT(BCNTC);
-               ADM8211_INT(GPINT);
-               ADM8211_INT(ATIMTC);
-               ADM8211_INT(TSFTF);
-               ADM8211_INT(TSCZ);
-               ADM8211_INT(SQL);
-               ADM8211_INT(WEPTD);
-               ADM8211_INT(ATIME);
-               /*ADM8211_INT(TBTT);*/
-               ADM8211_INT(TEIS);
-               ADM8211_INT(FBE);
-               ADM8211_INT(REIS);
-               ADM8211_INT(GPTT);
-               ADM8211_INT(RPS);
-               ADM8211_INT(RDU);
-               ADM8211_INT(TUF);
-               /*ADM8211_INT(TRT);*/
-               /*ADM8211_INT(TLT);*/
-               /*ADM8211_INT(TDU);*/
-               ADM8211_INT(TPS);
-
-       } while (count++ < 20);
-
-       return IRQ_RETVAL(count);
+       u32 stsr = ADM8211_CSR_READ(STSR);
+       ADM8211_CSR_WRITE(STSR, stsr);
+       if (stsr == 0xffffffff)
+               return IRQ_HANDLED;
+
+       if (!(stsr & (ADM8211_STSR_NISS | ADM8211_STSR_AISS)))
+               return IRQ_HANDLED;
+
+       if (stsr & ADM8211_STSR_RCI)
+               adm8211_interrupt_rci(dev);
+       if (stsr & ADM8211_STSR_TCI)
+               adm8211_interrupt_tci(dev);
+
+       /*ADM8211_INT(LinkOn);*/
+       /*ADM8211_INT(LinkOff);*/
+
+       ADM8211_INT(PCF);
+       ADM8211_INT(BCNTC);
+       ADM8211_INT(GPINT);
+       ADM8211_INT(ATIMTC);
+       ADM8211_INT(TSFTF);
+       ADM8211_INT(TSCZ);
+       ADM8211_INT(SQL);
+       ADM8211_INT(WEPTD);
+       ADM8211_INT(ATIME);
+       /*ADM8211_INT(TBTT);*/
+       ADM8211_INT(TEIS);
+       ADM8211_INT(FBE);
+       ADM8211_INT(REIS);
+       ADM8211_INT(GPTT);
+       ADM8211_INT(RPS);
+       ADM8211_INT(RDU);
+       ADM8211_INT(TUF);
+       /*ADM8211_INT(TRT);*/
+       /*ADM8211_INT(TLT);*/
+       /*ADM8211_INT(TDU);*/
+       ADM8211_INT(TPS);
+
+       return IRQ_HANDLED;
 
 #undef ADM8211_INT
 }