Reset a net80211 node's QoS Tx sequence counter to the start of the
authorstsp <stsp@openbsd.org>
Fri, 3 Sep 2021 12:39:43 +0000 (12:39 +0000)
committerstsp <stsp@openbsd.org>
Fri, 3 Sep 2021 12:39:43 +0000 (12:39 +0000)
block ack window when a new Tx block ack agreement is established.

In the future this change will allow the iwx(4) driver to initialize this
sequence number such that it corresponds to what the firmware expects.

Note that ba->ba_winstart is set to ni->ni_qos_txseqs[tid] when a new Tx agg
agreement is initiated in ieee80211_node_addba_request(). Unless the driver
resets ba->ba_winstart before ieee80211_addba_resp_accept() runs, which is
what iwx(4) will do, the assignment added with this patch is a no-op.

sys/net80211/ieee80211_input.c

index e66a661..99699b9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ieee80211_input.c,v 1.237 2021/05/18 08:10:45 stsp Exp $      */
+/*     $OpenBSD: ieee80211_input.c,v 1.238 2021/09/03 12:39:43 stsp Exp $      */
 
 /*-
  * Copyright (c) 2001 Atsushi Onoe
@@ -3018,6 +3018,8 @@ ieee80211_addba_resp_accept(struct ieee80211com *ic,
        /* Reset ADDBA request interval. */
        ni->ni_addba_req_intval[tid] = 1;
 
+       ni->ni_qos_txseqs[tid] = ba->ba_winstart;
+
        /* start Block Ack inactivity timeout */
        if (ba->ba_timeout_val != 0)
                timeout_add_usec(&ba->ba_to, ba->ba_timeout_val);