OSDN Git Service

iwlwifi: mvm: allow block ack response without data
authorSara Sharon <sara.sharon@intel.com>
Sun, 19 Feb 2017 15:00:58 +0000 (17:00 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Thu, 20 Apr 2017 04:24:51 +0000 (07:24 +0300)
When FW fails to get block ack, it will send the notification with
0 items in the TFD queue elements. Allow this and handle accordingly.

Fixes: c46e7724bfe9 ("iwlwifi: mvm: support new BA notification response")
Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/tx.c

index ed7ee50..8f737f6 100644 (file)
@@ -1785,6 +1785,9 @@ void iwl_mvm_rx_ba_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb)
                ba_info.status.status_driver_data[0] =
                        (void *)(uintptr_t)ba_res->reduced_txp;
 
+               if (!le16_to_cpu(ba_res->tfd_cnt))
+                       goto out;
+
                /*
                 * TODO:
                 * When supporting multi TID aggregations - we need to move
@@ -1802,6 +1805,7 @@ void iwl_mvm_rx_ba_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb)
                                   le16_to_cpu(ba_res->tfd[0].tfd_index),
                                   &ba_info, le32_to_cpu(ba_res->tx_rate));
 
+out:
                IWL_DEBUG_TX_REPLY(mvm,
                                   "BA_NOTIFICATION Received from sta_id = %d, flags %x, sent:%d, acked:%d\n",
                                   sta_id, le32_to_cpu(ba_res->flags),