iwlwifi: fix multi queue notification for a000 devices
authorSara Sharon <sara.sharon@intel.com>
Thu, 19 Oct 2017 05:46:50 +0000 (08:46 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Fri, 3 Nov 2017 09:56:09 +0000 (11:56 +0200)
Currently we return early from sync_rx_queues for a000 devices.
This may cause, in case of a non-empty reorder buffer, a warning
later on since the RX queue isn't getting the notification to
empty it.
A better approach would be to send the notification for the default
queue only.
Do this hard coded for now, until we will have the API to enable
multi queue for a000 devices.

Fixes: bc0294696456 ("iwlwifi: mvm: disable RX queue notification for a000 devices")
Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index 0b3d275fe1775fbf0a9b088e59f044c3d47e9393..26caea62df9b0674132b1a70b4fa0a72c1ddcff9 100644 (file)
@@ -4294,9 +4294,7 @@ void iwl_mvm_sync_rx_queues_internal(struct iwl_mvm *mvm,
 
        lockdep_assert_held(&mvm->mutex);
 
-       /* TODO - remove a000 disablement when we have RXQ config API */
-       if (!iwl_mvm_has_new_rx_api(mvm) ||
-           mvm->trans->cfg->device_family == IWL_DEVICE_FAMILY_A000)
+       if (!iwl_mvm_has_new_rx_api(mvm))
                return;
 
        notif->cookie = mvm->queue_sync_cookie;
@@ -4305,6 +4303,13 @@ void iwl_mvm_sync_rx_queues_internal(struct iwl_mvm *mvm,
                atomic_set(&mvm->queue_sync_counter,
                           mvm->trans->num_rx_queues);
 
+       /* TODO - remove this when we have RXQ config API */
+       if (mvm->trans->cfg->device_family == IWL_DEVICE_FAMILY_A000) {
+               qmask = BIT(0);
+               if (notif->sync)
+                       atomic_set(&mvm->queue_sync_counter, 1);
+       }
+
        ret = iwl_mvm_notify_rx_queue(mvm, qmask, (u8 *)notif, size);
        if (ret) {
                IWL_ERR(mvm, "Failed to trigger RX queues sync (%d)\n", ret);