Cleanup starting seq# for tx ampdu:
o use txa_start to form the addba request and purge txa_seqstart o fill txa_start before calling ic_addba_request to permit drivers to override when they handle seq# generation (e.g. mwl)
This commit is contained in:
parent
40808af3aa
commit
c5f9511e91
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=183245
@ -215,9 +215,9 @@ _db_show_txampdu(const char *sep, int ix, const struct ieee80211_tx_ampdu *tap)
|
||||
{
|
||||
db_printf("%stxampdu[%d]: %p flags %b ac %u\n",
|
||||
sep, ix, tap, tap->txa_flags, IEEE80211_AGGR_BITS, tap->txa_ac);
|
||||
db_printf("%s token %u qbytes %d qframes %d seqstart %u start %u wnd %u\n",
|
||||
db_printf("%s token %u qbytes %d qframes %d start %u wnd %u\n",
|
||||
sep, tap->txa_token, tap->txa_qbytes, tap->txa_qframes,
|
||||
tap->txa_seqstart, tap->txa_start, tap->txa_wnd);
|
||||
tap->txa_start, tap->txa_wnd);
|
||||
db_printf("%s attempts %d nextrequest %d\n",
|
||||
sep, tap->txa_attempts, tap->txa_nextrequest);
|
||||
/* XXX packet q + timer */
|
||||
|
@ -1337,7 +1337,7 @@ ieee80211_addba_request(struct ieee80211_node *ni,
|
||||
/* XXX locking */
|
||||
tap->txa_token = dialogtoken;
|
||||
tap->txa_flags |= IEEE80211_AGGR_IMMEDIATE;
|
||||
tap->txa_start = tap->txa_seqstart = 0;
|
||||
tap->txa_start = 0;
|
||||
bufsiz = MS(baparamset, IEEE80211_BAPS_BUFSIZ);
|
||||
tap->txa_wnd = (bufsiz == 0) ?
|
||||
IEEE80211_AGGR_BAWMAX : min(bufsiz, IEEE80211_AGGR_BAWMAX);
|
||||
@ -1679,6 +1679,8 @@ ieee80211_ampdu_request(struct ieee80211_node *ni,
|
||||
tap->txa_flags &= ~IEEE80211_AGGR_NAK;
|
||||
|
||||
dialogtoken = (tokens+1) % 63; /* XXX */
|
||||
tid = WME_AC_TO_TID(tap->txa_ac);
|
||||
tap->txa_start = ni->ni_txseqs[tid];
|
||||
|
||||
tid = WME_AC_TO_TID(tap->txa_ac);
|
||||
args[0] = dialogtoken;
|
||||
@ -1701,8 +1703,8 @@ 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)
|
||||
/* NB: after calling ic_addba_request so driver can set txa_start */
|
||||
args[3] = SM(tap->txa_start, IEEE80211_BASEQ_START)
|
||||
| SM(0, IEEE80211_BASEQ_FRAG)
|
||||
;
|
||||
return ic->ic_send_action(ni, IEEE80211_ACTION_CAT_BA,
|
||||
|
@ -51,8 +51,8 @@ struct ieee80211_tx_ampdu {
|
||||
int txa_avgpps; /* filtered traffic over window */
|
||||
int txa_qbytes; /* data queued (bytes) */
|
||||
short txa_qframes; /* data queued (frames) */
|
||||
ieee80211_seq txa_seqstart;
|
||||
ieee80211_seq txa_start;
|
||||
ieee80211_seq txa_start; /* BA window left edge */
|
||||
ieee80211_seq txa_seqpending; /* new txa_start pending BAR response */
|
||||
uint16_t txa_wnd; /* BA window size */
|
||||
uint8_t txa_attempts; /* # ADDBA requests w/o a response */
|
||||
int txa_nextrequest;/* soonest to make next ADDBA request */
|
||||
|
Loading…
Reference in New Issue
Block a user