PERFORCE change 39547 for review
Sam Leffler
sam at FreeBSD.org
Sat Oct 11 22:14:54 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=39547
Change 39547 by sam at sam_ebb on 2003/10/11 22:14:23
change ath_rate_ctl_reset to handle transition from station
mode to adhoc mode; was not resetting the initial xmit rate
causing outbound frames to be dicarded
Affected files ...
.. //depot/projects/netperf/sys/dev/ath/if_ath.c#15 edit
Differences ...
==== //depot/projects/netperf/sys/dev/ath/if_ath.c#15 (text+ko) ====
@@ -2565,20 +2565,13 @@
struct ieee80211_node *ni;
struct ath_node *an;
- an = (struct ath_node *) ic->ic_bss;
- an->an_tx_ok = an->an_tx_err = an->an_tx_retr = an->an_tx_upper = 0;
- if (ic->ic_opmode == IEEE80211_M_STA) {
- ni = ic->ic_bss;
- if (state == IEEE80211_S_RUN) {
- /* start with highest negotiated rate */
- KASSERT(ni->ni_rates.rs_nrates > 0,
- ("transition to RUN state w/ no rates!"));
- ni->ni_txrate = ni->ni_rates.rs_nrates - 1;
- } else {
- /* use lowest rate */
- ni->ni_txrate = 0;
- }
- } else {
+ if (ic->ic_opmode != IEEE80211_M_STA) {
+ /*
+ * When operating as a station the node table holds
+ * the AP's that were discovered during scanning.
+ * For any other operating mode we want to reset the
+ * tx rate state of each node.
+ */
TAILQ_FOREACH(ni, &ic->ic_node, ni_list) {
ni->ni_txrate = 0; /* use lowest rate */
an = (struct ath_node *) ni;
@@ -2586,6 +2579,22 @@
an->an_tx_upper = 0;
}
}
+ /*
+ * Reset local xmit state; this is really only meaningful
+ * when operating in station or adhoc mode.
+ */
+ ni = ic->ic_bss;
+ an = (struct ath_node *) ni;
+ an->an_tx_ok = an->an_tx_err = an->an_tx_retr = an->an_tx_upper = 0;
+ if (state == IEEE80211_S_RUN) {
+ /* start with highest negotiated rate */
+ KASSERT(ni->ni_rates.rs_nrates > 0,
+ ("transition to RUN state w/ no rates!"));
+ ni->ni_txrate = ni->ni_rates.rs_nrates - 1;
+ } else {
+ /* use lowest rate */
+ ni->ni_txrate = 0;
+ }
}
/*
More information about the p4-projects
mailing list