diff options
author | sam <sam@FreeBSD.org> | 2008-05-11 23:27:57 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2008-05-11 23:27:57 +0000 |
commit | d58b2a7dc0f8fe495c18a72cfceee93ea9f1ce93 (patch) | |
tree | 804220085da1228b0e44e0f87901340b2a96e0dd /sys/net80211 | |
parent | e78391fb48f61170e4d02b738a5ec7ee367caa6e (diff) | |
download | FreeBSD-src-d58b2a7dc0f8fe495c18a72cfceee93ea9f1ce93.zip FreeBSD-src-d58b2a7dc0f8fe495c18a72cfceee93ea9f1ce93.tar.gz |
use the current left edge of the BA window when forming ADDBA request
so an existing session is re-established with the correct seq#
Diffstat (limited to 'sys/net80211')
-rw-r--r-- | sys/net80211/ieee80211_ht.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c index d8b2d3d..a370100 100644 --- a/sys/net80211/ieee80211_ht.c +++ b/sys/net80211/ieee80211_ht.c @@ -1651,9 +1651,6 @@ ieee80211_ampdu_request(struct ieee80211_node *ni, | SM(IEEE80211_AGGR_BAWMAX, IEEE80211_BAPS_BUFSIZ) ; args[2] = 0; /* batimeout */ - args[3] = SM(0, IEEE80211_BASEQ_START) - | SM(0, IEEE80211_BASEQ_FRAG) - ; /* NB: do first so there's no race against reply */ if (!ic->ic_addba_request(ni, tap, dialogtoken, args[1], args[2])) { /* unable to setup state, don't make request */ @@ -1668,6 +1665,10 @@ ieee80211_ampdu_request(struct ieee80211_node *ni, return 0; } tokens = dialogtoken; /* allocate token */ + /* NB: after calling ic_addba_request so driver can set seqstart */ + args[3] = SM(tap->txa_seqstart, IEEE80211_BASEQ_START) + | SM(0, IEEE80211_BASEQ_FRAG) + ; return ic->ic_send_action(ni, IEEE80211_ACTION_CAT_BA, IEEE80211_ACTION_BA_ADDBA_REQUEST, args); } |