]> git.hungrycats.org Git - linux/commitdiff
iwlwifi: mvm: support BAR in reorder buffer
authorSara Sharon <sara.sharon@intel.com>
Mon, 8 Aug 2016 10:07:01 +0000 (13:07 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 31 Oct 2016 11:02:14 +0000 (05:02 -0600)
commit 9a73a7d24d51eaf9e43c771c53cf7b594e5b5334 upstream.

On default queue we will not receive frame release notification,
but the BAR itself.
Upon receiving the BAR driver should look at the NSSN and adjust
window accordingly.

Fixes: b915c10174fb ("iwlwifi: mvm: add reorder buffer per queue")
Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c

index df6c32caa5f0ca3f45b2347d18747e7dbe03ec7c..afb7eb60e45409271babc7872e682d2949872e1a 100644 (file)
@@ -598,9 +598,10 @@ static bool iwl_mvm_reorder(struct iwl_mvm *mvm,
 
        mvm_sta = iwl_mvm_sta_from_mac80211(sta);
 
-       /* not a data packet */
-       if (!ieee80211_is_data_qos(hdr->frame_control) ||
-           is_multicast_ether_addr(hdr->addr1))
+       /* not a data packet or a bar */
+       if (!ieee80211_is_back_req(hdr->frame_control) &&
+           (!ieee80211_is_data_qos(hdr->frame_control) ||
+            is_multicast_ether_addr(hdr->addr1)))
                return false;
 
        if (unlikely(!ieee80211_is_data_present(hdr->frame_control)))
@@ -624,6 +625,11 @@ static bool iwl_mvm_reorder(struct iwl_mvm *mvm,
 
        spin_lock_bh(&buffer->lock);
 
+       if (ieee80211_is_back_req(hdr->frame_control)) {
+               iwl_mvm_release_frames(mvm, sta, napi, buffer, nssn);
+               goto drop;
+       }
+
        /*
         * If there was a significant jump in the nssn - adjust.
         * If the SN is smaller than the NSSN it might need to first go into