diff options
author | Adrian Chadd <adrian@FreeBSD.org> | 2020-06-05 06:07:23 +0000 |
---|---|---|
committer | Adrian Chadd <adrian@FreeBSD.org> | 2020-06-05 06:07:23 +0000 |
commit | 7280f37401e4bcb8e5cc7f354c78e1944761731f (patch) | |
tree | b02c9c14b08e254963b91b4c02cef7bc554caedf /sys/net80211 | |
parent | 60a948950985aa71e20ce0743c9f232ba9dca0aa (diff) | |
download | src-7280f37401e4bcb8e5cc7f354c78e1944761731f.tar.gz src-7280f37401e4bcb8e5cc7f354c78e1944761731f.zip |
[net80211] Add some TODOs around A-MSDU in A-MPDU negotiation.
net80211 currently doesn't negotiate A-MSDU in A-MPDU during ADDBA.
I've added the field in net80211 and this commit:
* Prints out the ADDBA field value during ADDBA;
* Adds some comments around where I need to follow up with some
negotiation logic.
Right now we don't have a driver flag anywhere which controls
whether A-MSDU in A-MPDU is allowed. I know it works (I have it
manually turned on at home on a couple test APs, heh!) but
I can't flip it on until we can negotiate it.
Tested:
* AR9380, STA/AP mode, printing out ADDBA requests
Notes
Notes:
svn path=/head/; revision=361821
Diffstat (limited to 'sys/net80211')
-rw-r--r-- | sys/net80211/ieee80211_ht.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c index 8055adc5635c..5d7f25333276 100644 --- a/sys/net80211/ieee80211_ht.c +++ b/sys/net80211/ieee80211_ht.c @@ -2237,12 +2237,13 @@ ht_recv_action_ba_addba_request(struct ieee80211_node *ni, IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni, "recv ADDBA request: dialogtoken %u baparamset 0x%x " - "(tid %d bufsiz %d) batimeout %d baseqctl %d:%d", + "(tid %d bufsiz %d) batimeout %d baseqctl %d:%d amsdu %d", dialogtoken, baparamset, tid, MS(baparamset, IEEE80211_BAPS_BUFSIZ), batimeout, MS(baseqctl, IEEE80211_BASEQ_START), - MS(baseqctl, IEEE80211_BASEQ_FRAG)); + MS(baseqctl, IEEE80211_BASEQ_FRAG), + MS(baparamset, IEEE80211_BAPS_AMSDU)); rap = &ni->ni_rx_ampdu[tid]; @@ -2274,6 +2275,7 @@ ht_recv_action_ba_addba_request(struct ieee80211_node *ni, | SM(tid, IEEE80211_BAPS_TID) | SM(rap->rxa_wnd, IEEE80211_BAPS_BUFSIZ) ; + /* XXX AMSDU in AMPDU? */ args[3] = 0; args[4] = 0; ic->ic_send_action(ni, IEEE80211_ACTION_CAT_BA, @@ -2346,6 +2348,8 @@ ht_recv_action_ba_addba_response(struct ieee80211_node *ni, return 0; } #endif + + /* XXX TODO: check AMSDU in AMPDU configuration */ IEEE80211_NOTE(vap, IEEE80211_MSG_ACTION | IEEE80211_MSG_11N, ni, "recv ADDBA response: dialogtoken %u code %d " "baparamset 0x%x (tid %d bufsiz %d) batimeout %d", @@ -2506,6 +2510,8 @@ ieee80211_ampdu_request(struct ieee80211_node *ni, | SM(tid, IEEE80211_BAPS_TID) | SM(IEEE80211_AGGR_BAWMAX, IEEE80211_BAPS_BUFSIZ) ; + /* XXX TODO: check AMSDU in AMPDU configuration */ + args[3] = 0; /* batimeout */ /* NB: do first so there's no race against reply */ if (!ic->ic_addba_request(ni, tap, dialogtoken, args[2], args[3])) { |