summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMichael Wu <flamingice@sourmilk.net>2007-09-25 00:10:25 +0200
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-11 01:53:07 +0200
commit2e08ac7e27c1e54ebf0f82abc03285663efe7d89 (patch)
tree0a4bb4c8239faa7313560780edfa19bfc3d57586 /drivers
parent[PATCH] rt2x00: Release rt2x00 2.0.9 (diff)
downloadlinux-2e08ac7e27c1e54ebf0f82abc03285663efe7d89.tar.xz
linux-2e08ac7e27c1e54ebf0f82abc03285663efe7d89.zip
[PATCH] adm8211: kill interrupt loop
Looping in the interrupt handler is unnecessary. Signed-off-by: Michael Wu <flamingice@sourmilk.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/adm8211.c84
1 files changed, 39 insertions, 45 deletions
diff --git a/drivers/net/wireless/adm8211.c b/drivers/net/wireless/adm8211.c
index 49a6b9eda4ea..0893d0d4a5eb 100644
--- a/drivers/net/wireless/adm8211.c
+++ b/drivers/net/wireless/adm8211.c
@@ -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
}