浏览代码

iwlwifi: mvm: support BAR in reorder buffer

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>
Sara Sharon 9 年之前
父节点
当前提交
9a73a7d24d
共有 1 个文件被更改,包括 9 次插入3 次删除
  1. 9 3
      drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c

+ 9 - 3
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c

@@ -600,9 +600,10 @@ static bool iwl_mvm_reorder(struct iwl_mvm *mvm,
 
 
 	mvm_sta = iwl_mvm_sta_from_mac80211(sta);
 	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;
 		return false;
 
 
 	if (unlikely(!ieee80211_is_data_present(hdr->frame_control)))
 	if (unlikely(!ieee80211_is_data_present(hdr->frame_control)))
@@ -626,6 +627,11 @@ static bool iwl_mvm_reorder(struct iwl_mvm *mvm,
 
 
 	spin_lock_bh(&buffer->lock);
 	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 there was a significant jump in the nssn - adjust.
 	 * If the SN is smaller than the NSSN it might need to first go into
 	 * If the SN is smaller than the NSSN it might need to first go into