Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Mar 2002 21:01:39 -0700 (MST)
From:      "M. Warner Losh" <imp@village.org>
To:        brooks@one-eyed-alien.net
Cc:        mobile@FreeBSD.ORG
Subject:   Re: patch for Lucent command timeouts
Message-ID:  <20020313.210139.85419419.imp@village.org>
In-Reply-To: <20020313143226.A18204@Odin.AC.HMC.Edu>
References:  <20020313113313.B11290@Odin.AC.HMC.Edu> <20020313143226.A18204@Odin.AC.HMC.Edu>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20020313143226.A18204@Odin.AC.HMC.Edu>
            Brooks Davis <brooks@one-eyed-alien.net> writes:
: On Wed, Mar 13, 2002 at 11:33:13AM -0800, Brooks Davis wrote:
: > The following patch attempts to address the timeouts people have been
: > seeing in after my recent MFC of Linksys support.
: 
: Here's a slightly improved patch which avoids some timeouts on INI
: commands thanks to Thomas Skibo.
: 
: -- Brooks
: 
: Index: if_wi.c
: ===================================================================
: RCS file: /usr/cvs/src/sys/dev/wi/if_wi.c,v
: retrieving revision 1.80
: diff -u -r1.80 if_wi.c
: --- if_wi.c	11 Mar 2002 23:29:59 -0000	1.80
: +++ if_wi.c	13 Mar 2002 22:25:38 -0000
: @@ -1003,7 +1003,8 @@
:  	CSR_WRITE_2(sc, WI_PARAM2, 0);
:  	CSR_WRITE_2(sc, WI_COMMAND, cmd);
:  
: -	for (i = 0; i < WI_TIMEOUT; i++) {
: +	for (i = ((cmd == WI_CMD_INI) ? WI_TIMEOUT_INI : WI_TIMEOUT);
: +	    i >= 0; i--) {

	if (cmd == WI_CMD_INI)
		end = WI_TIMEOUT_INI;
	else
		end = WI_TIMEOUT;
	for (i = 0; i < end; i++) {

is a little clearer.

:  		/*
:  		 * Wait for 'command complete' bit to be
:  		 * set in the event status register.
: @@ -1024,9 +1025,9 @@
:  		DELAY(WI_DELAY);
:  	}
:  
: -	if (i == WI_TIMEOUT) {
: +	if (i == WI_TIMEOUT && (sc->wi_prism2 || (cmd != WI_CMD_INQUIRE))) {
:  		device_printf(sc->dev,
: -		    "timeout in wi_cmd %x; event status %x\n", cmd, s);
: +		    "timeout in wi_cmd 0x%04x; event status 0x%04x\n", cmd, s);
:  		return(ETIMEDOUT);

I think the test should be something like (i == end) since i ==
WI_TIMEOUT will only happen in rare cases (in the original code),
where it takes exactly 500-10ms to do the command.

I have more changes to the wi driver from the airtools folks, but
haven't committed them yet.  I'll do it after DP1.

Warner

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-mobile" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020313.210139.85419419.imp>