diff options
author | Michael Wu <flamingice@sourmilk.net> | 2007-09-24 18:10:25 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:53:07 -0400 |
commit | 2e08ac7e27c1e54ebf0f82abc03285663efe7d89 (patch) | |
tree | 0a4bb4c8239faa7313560780edfa19bfc3d57586 /drivers/net/wireless/adm8211.c | |
parent | 3a1532f2f87175285b9459dcce58e467feec6b78 (diff) |
[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/net/wireless/adm8211.c')
-rw-r--r-- | drivers/net/wireless/adm8211.c | 84 |
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 { \ | |||
458 | 458 | ||
459 | struct ieee80211_hw *dev = dev_id; | 459 | struct ieee80211_hw *dev = dev_id; |
460 | struct adm8211_priv *priv = dev->priv; | 460 | struct adm8211_priv *priv = dev->priv; |
461 | unsigned int count = 0; | 461 | u32 stsr = ADM8211_CSR_READ(STSR); |
462 | u32 stsr; | 462 | ADM8211_CSR_WRITE(STSR, stsr); |
463 | 463 | if (stsr == 0xffffffff) | |
464 | do { | 464 | return IRQ_HANDLED; |
465 | stsr = ADM8211_CSR_READ(STSR); | 465 | |
466 | ADM8211_CSR_WRITE(STSR, stsr); | 466 | if (!(stsr & (ADM8211_STSR_NISS | ADM8211_STSR_AISS))) |
467 | if (stsr == 0xffffffff) | 467 | return IRQ_HANDLED; |
468 | return IRQ_HANDLED; | 468 | |
469 | 469 | if (stsr & ADM8211_STSR_RCI) | |
470 | if (!(stsr & (ADM8211_STSR_NISS | ADM8211_STSR_AISS))) | 470 | adm8211_interrupt_rci(dev); |
471 | break; | 471 | if (stsr & ADM8211_STSR_TCI) |
472 | 472 | adm8211_interrupt_tci(dev); | |
473 | if (stsr & ADM8211_STSR_RCI) | 473 | |
474 | adm8211_interrupt_rci(dev); | 474 | /*ADM8211_INT(LinkOn);*/ |
475 | if (stsr & ADM8211_STSR_TCI) | 475 | /*ADM8211_INT(LinkOff);*/ |
476 | adm8211_interrupt_tci(dev); | 476 | |
477 | 477 | ADM8211_INT(PCF); | |
478 | /*ADM8211_INT(LinkOn);*/ | 478 | ADM8211_INT(BCNTC); |
479 | /*ADM8211_INT(LinkOff);*/ | 479 | ADM8211_INT(GPINT); |
480 | 480 | ADM8211_INT(ATIMTC); | |
481 | ADM8211_INT(PCF); | 481 | ADM8211_INT(TSFTF); |
482 | ADM8211_INT(BCNTC); | 482 | ADM8211_INT(TSCZ); |
483 | ADM8211_INT(GPINT); | 483 | ADM8211_INT(SQL); |
484 | ADM8211_INT(ATIMTC); | 484 | ADM8211_INT(WEPTD); |
485 | ADM8211_INT(TSFTF); | 485 | ADM8211_INT(ATIME); |
486 | ADM8211_INT(TSCZ); | 486 | /*ADM8211_INT(TBTT);*/ |
487 | ADM8211_INT(SQL); | 487 | ADM8211_INT(TEIS); |
488 | ADM8211_INT(WEPTD); | 488 | ADM8211_INT(FBE); |
489 | ADM8211_INT(ATIME); | 489 | ADM8211_INT(REIS); |
490 | /*ADM8211_INT(TBTT);*/ | 490 | ADM8211_INT(GPTT); |
491 | ADM8211_INT(TEIS); | 491 | ADM8211_INT(RPS); |
492 | ADM8211_INT(FBE); | 492 | ADM8211_INT(RDU); |
493 | ADM8211_INT(REIS); | 493 | ADM8211_INT(TUF); |
494 | ADM8211_INT(GPTT); | 494 | /*ADM8211_INT(TRT);*/ |
495 | ADM8211_INT(RPS); | 495 | /*ADM8211_INT(TLT);*/ |
496 | ADM8211_INT(RDU); | 496 | /*ADM8211_INT(TDU);*/ |
497 | ADM8211_INT(TUF); | 497 | ADM8211_INT(TPS); |
498 | /*ADM8211_INT(TRT);*/ | 498 | |
499 | /*ADM8211_INT(TLT);*/ | 499 | return IRQ_HANDLED; |
500 | /*ADM8211_INT(TDU);*/ | ||
501 | ADM8211_INT(TPS); | ||
502 | |||
503 | } while (count++ < 20); | ||
504 | |||
505 | return IRQ_RETVAL(count); | ||
506 | 500 | ||
507 | #undef ADM8211_INT | 501 | #undef ADM8211_INT |
508 | } | 502 | } |