iwlwifi: dvm: don't sleep in event_callback callback
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Mon, 20 Apr 2015 19:53:36 +0000 (22:53 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 24 Apr 2015 10:25:00 +0000 (12:25 +0200)
This will allow mac80211 to forbid sleeping from the
event_callback callback.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/iwlwifi/dvm/mac80211.c

index c7bc01d..ba7fc42 100644 (file)
@@ -1140,7 +1140,6 @@ static void iwlagn_mac_event_callback(struct ieee80211_hw *hw,
                return;
 
        IWL_DEBUG_MAC80211(priv, "enter\n");
-       mutex_lock(&priv->mutex);
 
        if (priv->lib->bt_params &&
            priv->lib->bt_params->advanced_bt_coexist) {
@@ -1149,13 +1148,12 @@ static void iwlagn_mac_event_callback(struct ieee80211_hw *hw,
                else if (event->u.rssi.data == RSSI_EVENT_HIGH)
                        priv->bt_enable_pspoll = false;
 
-               iwlagn_send_advance_bt_config(priv);
+               queue_work(priv->workqueue, &priv->bt_runtime_config);
        } else {
                IWL_DEBUG_MAC80211(priv, "Advanced BT coex disabled,"
                                "ignoring RSSI callback\n");
        }
 
-       mutex_unlock(&priv->mutex);
        IWL_DEBUG_MAC80211(priv, "leave\n");
 }