浏览代码

KS8695: fix ks8695_rx() unreasonable action.

ks8695_rx() will call refill_buffers() for every incoming packet.
Its not necessary. We just need do it after finishing receiving thing.
And the 'RX dma engine' is in the same situation.
This blocks our user space application. The following patch may fix it.

Signed-off-by: zeal <zealcook@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
zeal 16 年之前
父节点
当前提交
5c427ff9e4
共有 1 个文件被更改,包括 6 次插入7 次删除
  1. 6 7
      drivers/net/arm/ks8695net.c

+ 6 - 7
drivers/net/arm/ks8695net.c

@@ -544,14 +544,13 @@ static int ks8695_rx(struct ks8695_priv *ksp, int budget)
 				ksp->next_rx_desc_read =
 				ksp->next_rx_desc_read =
 					(last_rx_processed + 1) &
 					(last_rx_processed + 1) &
 					MAX_RX_DESC_MASK;
 					MAX_RX_DESC_MASK;
-
-			/* And refill the buffers */
-			ks8695_refill_rxbuffers(ksp);
-
-			/* Kick the RX DMA engine, in case it became
-			 *  suspended */
-			ks8695_writereg(ksp, KS8695_DRSC, 0);
 	}
 	}
+	/* And refill the buffers */
+	ks8695_refill_rxbuffers(ksp);
+
+	/* Kick the RX DMA engine, in case it became
+	 *  suspended */
+	ks8695_writereg(ksp, KS8695_DRSC, 0);
 	return received;
 	return received;
 }
 }