NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/34118
The following reply was made to PR kern/34118; it has been noted by GNATS.
From: Roy Marples <roy%NetBSD.org@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc:
Subject: Re: kern/34118
Date: Tue, 08 Jun 2010 11:12:15 +0100
This is a multi-part message in MIME format.
--------------020907020506010203040809
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
According to comment #17 on http://madwifi-project.org/ticket/162
the attached patch should resolve this issue.
I'm testing it on my NetBSD-5 wireless router now as I've been bitten
by this a few times.
Thanks
Roy
--------------020907020506010203040809
Content-Type: text/plain;
name="ath-prevrix.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="ath-prevrix.diff"
Index: sys/dev/ic/ath.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/ath.c,v
retrieving revision 1.102.4.2
diff -u -p -r1.102.4.2 ath.c
--- sys/dev/ic/ath.c 7 Aug 2009 06:48:09 -0000 1.102.4.2
+++ sys/dev/ic/ath.c 8 Jun 2010 10:07:36 -0000
@@ -3789,6 +3789,13 @@ ath_tx_start(struct ath_softc *sc, struc
} else {
ath_rate_findrate(sc, an, shortPreamble, pktlen,
&rix, &try0, &txrate);
+ /* Ratecontrol sometimes returns invalid rate index */
+ if (rix != 0xff)
+ an->an_prevdatarix = rix;
+ else {
+ if_printf(ifp, "invalid rix 0xff\n");
+ rix = an->an_prevdatarix;
+ }
sc->sc_txrate = txrate; /* for LED blinking */
if (try0 != ATH_TXMAXTRY)
ismrr = 1;
Index: sys/dev/ic/athvar.h
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/athvar.h,v
retrieving revision 1.25.4.2
diff -u -p -r1.25.4.2 athvar.h
--- sys/dev/ic/athvar.h 7 Aug 2009 06:48:09 -0000 1.25.4.2
+++ sys/dev/ic/athvar.h 8 Jun 2010 10:07:36 -0000
@@ -90,6 +90,7 @@ typedef unsigned int ath_keyix_t;
struct ath_node {
struct ieee80211_node an_node; /* base class */
u_int32_t an_avgrssi; /* average rssi over all rx frames */
+ u_int8_t an_prevdatarix; /* rate ix of laste data frame */
/* variable-length rate control state follows */
};
#define ATH_NODE(ni) ((struct ath_node *)(ni))
--------------020907020506010203040809--
Home |
Main Index |
Thread Index |
Old Index