浏览代码

[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>
Michael Wu 17 年之前
父节点
当前提交
2e08ac7e27
共有 1 个文件被更改,包括 39 次插入45 次删除
  1. 39 45
      drivers/net/wireless/adm8211.c

+ 39 - 45
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
 }