Commit 11af74ad authored by Andrei Otcheretianski's avatar Andrei Otcheretianski Committed by Luca Coelho

iwlwifi: mvm: Don't sleep in RX path

Don't use cancel_delayed_work_sync() inside the channel switch
notifications as they are handled synchronously as part of the RX path.
Fix that by replacing it with cancel_delayed_work(). This should be safe
as we don't really care whether the work is already started and in such
case we would disconnect anyway.
Signed-off-by: default avatarAndrei Otcheretianski <andrei.otcheretianski@intel.com>
Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
parent fd986b0b
...@@ -1570,7 +1570,7 @@ void iwl_mvm_channel_switch_noa_notif(struct iwl_mvm *mvm, ...@@ -1570,7 +1570,7 @@ void iwl_mvm_channel_switch_noa_notif(struct iwl_mvm *mvm,
return; return;
case NL80211_IFTYPE_STATION: case NL80211_IFTYPE_STATION:
iwl_mvm_csa_client_absent(mvm, vif); iwl_mvm_csa_client_absent(mvm, vif);
cancel_delayed_work_sync(&mvmvif->csa_work); cancel_delayed_work(&mvmvif->csa_work);
ieee80211_chswitch_done(vif, true); ieee80211_chswitch_done(vif, true);
break; break;
default: default:
......
...@@ -234,7 +234,7 @@ iwl_mvm_te_handle_notify_csa(struct iwl_mvm *mvm, ...@@ -234,7 +234,7 @@ iwl_mvm_te_handle_notify_csa(struct iwl_mvm *mvm,
break; break;
} }
iwl_mvm_csa_client_absent(mvm, te_data->vif); iwl_mvm_csa_client_absent(mvm, te_data->vif);
cancel_delayed_work_sync(&mvmvif->csa_work); cancel_delayed_work(&mvmvif->csa_work);
ieee80211_chswitch_done(te_data->vif, true); ieee80211_chswitch_done(te_data->vif, true);
break; break;
default: default:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment