Subject: Re: CVS commit: src/sys/dev/ic
To: None <briggs@netbsd.org>
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
List: source-changes
Date: 04/29/2004 04:54:25
In article <20040428152545.199D02DA1D@cvs.netbsd.org>
briggs@netbsd.org wrote:

> Module Name:	src
> Committed By:	briggs
> Date:		Wed Apr 28 15:25:45 UTC 2004
> 
> Modified Files:
> 	src/sys/dev/ic: i82557.c
> 
> Log Message:
> When we are recovering from a resource exhaustion on receive, make sure
> that the RU is stopped before issuing an RU_START.
> Fix suggested by Takahiro Kambe in PR kern/10622.

Isn't it better to put RU suspend state in the last RFA
rather than ABORT command on RNR?

--- i82557var.h.orig	Mon Jul 24 21:15:35 2000
+++ i82557var.h	Mon Jul 24 21:16:52 2000
@@ -283,7 +283,8 @@
 	__rfa->size = htole16(FXP_RXBUFSIZE((m)));			\
 	/* BIG_ENDIAN: no need to swap to store 0 */			\
 	__rfa->rfa_status = 0;						\
-	__rfa->rfa_control = htole16(FXP_RFA_CONTROL_EL);		\
+	__rfa->rfa_control =						\
+	    htole16(FXP_RFA_CONTROL_EL|FXP_RFA_CONTROL_S);		\
 	/* BIG_ENDIAN: no need to swap to store 0 */			\
 	__rfa->actual_size = 0;						\
 									\
@@ -306,7 +307,8 @@
 		    BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);	\
 		memcpy((void *)&__p_rfa->link_addr, &__v,		\
 		    sizeof(__v));					\
-		__p_rfa->rfa_control &= htole16(~FXP_RFA_CONTROL_EL);	\
+		__p_rfa->rfa_control &=					\
+		    htole16(~(FXP_RFA_CONTROL_EL|FXP_RFA_CONTROL_S));	\
 		FXP_RFASYNC((sc), __p_m,				\
 		    BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);		\
 	}								\

---