[net80211] unconditionally do A-MPDU RX aging.
It's 2016 and vendors (including us!) still have 802.11n TX/RX sequence handling bugs. It's suboptimal, but I'd rather see us default to handling things in a sensible way. So, just delete the #ifdef'ed code for now. I'll leave the option in so it doesn't break existing configurations. This all started because I've started getting reports about urtwn not working after I enabled 802.11n support, and it's because the ARM kernel configs don't include A-MPDU RX aging.
This commit is contained in:
parent
b529028676
commit
6548c62c97
@ -136,12 +136,10 @@ const struct ieee80211_mcs_rates ieee80211_htrates[IEEE80211_HTRATE_MAXSIZE] = {
|
||||
{ 429, 477, 891, 990 }, /* MCS 76 */
|
||||
};
|
||||
|
||||
#ifdef IEEE80211_AMPDU_AGE
|
||||
static int ieee80211_ampdu_age = -1; /* threshold for ampdu reorder q (ms) */
|
||||
SYSCTL_PROC(_net_wlan, OID_AUTO, ampdu_age, CTLTYPE_INT | CTLFLAG_RW,
|
||||
&ieee80211_ampdu_age, 0, ieee80211_sysctl_msecs_ticks, "I",
|
||||
"AMPDU max reorder age (ms)");
|
||||
#endif
|
||||
|
||||
static int ieee80211_recv_bar_ena = 1;
|
||||
SYSCTL_INT(_net_wlan, OID_AUTO, recv_bar, CTLFLAG_RW, &ieee80211_recv_bar_ena,
|
||||
@ -178,9 +176,7 @@ ieee80211_ht_init(void)
|
||||
/*
|
||||
* Setup HT parameters that depends on the clock frequency.
|
||||
*/
|
||||
#ifdef IEEE80211_AMPDU_AGE
|
||||
ieee80211_ampdu_age = msecs_to_ticks(500);
|
||||
#endif
|
||||
ieee80211_addba_timeout = msecs_to_ticks(250);
|
||||
ieee80211_addba_backoff = msecs_to_ticks(10*1000);
|
||||
ieee80211_bar_timeout = msecs_to_ticks(250);
|
||||
@ -671,7 +667,6 @@ ampdu_rx_dispatch(struct ieee80211_rx_ampdu *rap, struct ieee80211_node *ni)
|
||||
vap->iv_stats.is_ampdu_rx_oor += i;
|
||||
}
|
||||
|
||||
#ifdef IEEE80211_AMPDU_AGE
|
||||
/*
|
||||
* Dispatch all frames in the A-MPDU re-order queue.
|
||||
*/
|
||||
@ -696,7 +691,6 @@ ampdu_rx_flush(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap)
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif /* IEEE80211_AMPDU_AGE */
|
||||
|
||||
/*
|
||||
* Dispatch all frames in the A-MPDU re-order queue
|
||||
@ -864,7 +858,7 @@ ieee80211_ampdu_reorder(struct ieee80211_node *ni, struct mbuf *m)
|
||||
* Common case (hopefully): in the BA window.
|
||||
* Sec 9.10.7.6.2 a) (p.137)
|
||||
*/
|
||||
#ifdef IEEE80211_AMPDU_AGE
|
||||
|
||||
/*
|
||||
* Check for frames sitting too long in the reorder queue.
|
||||
* This should only ever happen if frames are not delivered
|
||||
@ -903,7 +897,7 @@ ieee80211_ampdu_reorder(struct ieee80211_node *ni, struct mbuf *m)
|
||||
*/
|
||||
rap->rxa_age = ticks;
|
||||
}
|
||||
#endif /* IEEE80211_AMPDU_AGE */
|
||||
|
||||
/* save packet */
|
||||
if (rap->rxa_m[off] == NULL) {
|
||||
rap->rxa_m[off] = m;
|
||||
@ -1125,14 +1119,11 @@ ieee80211_ht_node_cleanup(struct ieee80211_node *ni)
|
||||
void
|
||||
ieee80211_ht_node_age(struct ieee80211_node *ni)
|
||||
{
|
||||
#ifdef IEEE80211_AMPDU_AGE
|
||||
struct ieee80211vap *vap = ni->ni_vap;
|
||||
uint8_t tid;
|
||||
#endif
|
||||
|
||||
KASSERT(ni->ni_flags & IEEE80211_NODE_HT, ("not an HT sta"));
|
||||
|
||||
#ifdef IEEE80211_AMPDU_AGE
|
||||
for (tid = 0; tid < WME_NUM_TID; tid++) {
|
||||
struct ieee80211_rx_ampdu *rap;
|
||||
|
||||
@ -1155,7 +1146,6 @@ ieee80211_ht_node_age(struct ieee80211_node *ni)
|
||||
ampdu_rx_flush(ni, rap);
|
||||
}
|
||||
}
|
||||
#endif /* IEEE80211_AMPDU_AGE */
|
||||
}
|
||||
|
||||
static struct ieee80211_channel *
|
||||
|
Loading…
Reference in New Issue
Block a user