Loading drivers/net/wireless/ath/wil6210/cfg80211.c +11 −11 Original line number Diff line number Diff line Loading @@ -484,10 +484,10 @@ static void wil_cfg80211_stop_p2p_device(struct wiphy *wiphy, wil_dbg_misc(wil, "stop_p2p_device: entered\n"); mutex_lock(&wil->mutex); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); wil_p2p_stop_radio_operations(wil); wil->p2p_dev_started = 0; mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); mutex_unlock(&wil->mutex); } Loading Loading @@ -778,14 +778,14 @@ static int wil_cfg80211_scan(struct wiphy *wiphy, mutex_lock(&wil->mutex); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request || vif->p2p.discovery_started) { wil_err(wil, "Already scanning\n"); mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); rc = -EAGAIN; goto out; } mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); if (wdev->iftype == NL80211_IFTYPE_P2P_DEVICE) { if (!wil->p2p_dev_started) { Loading Loading @@ -897,7 +897,7 @@ static void wil_cfg80211_abort_scan(struct wiphy *wiphy, wil_dbg_misc(wil, "wdev=0x%p iftype=%d\n", wdev, wdev->iftype); mutex_lock(&wil->mutex); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (!vif->scan_request) goto out; Loading @@ -913,7 +913,7 @@ static void wil_cfg80211_abort_scan(struct wiphy *wiphy, wil_abort_scan(vif, true); out: mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); mutex_unlock(&wil->mutex); } Loading Loading @@ -2015,10 +2015,10 @@ static int wil_cfg80211_suspend(struct wiphy *wiphy, wil_dbg_pm(wil, "suspending\n"); mutex_lock(&wil->mutex); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); wil_p2p_stop_radio_operations(wil); wil_abort_scan(ndev_to_vif(wil->main_ndev), true); mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); mutex_unlock(&wil->mutex); out: Loading Loading @@ -2314,11 +2314,11 @@ void wil_p2p_wdev_free(struct wil6210_priv *wil) struct wireless_dev *p2p_wdev; struct wil6210_vif *vif; mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); p2p_wdev = wil->p2p_wdev; wil->p2p_wdev = NULL; wil->radio_wdev = wil->main_ndev->ieee80211_ptr; mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); if (p2p_wdev) { cfg80211_unregister_wdev(p2p_wdev); vif = wdev_to_vif(wil, p2p_wdev); Loading drivers/net/wireless/ath/wil6210/main.c +8 −8 Original line number Diff line number Diff line Loading @@ -539,8 +539,8 @@ int wil_priv_init(struct wil6210_priv *wil) spin_lock_init(&wil->vring_tx_data[i].lock); mutex_init(&wil->mutex); mutex_init(&wil->vif_mutex); mutex_init(&wil->wmi_mutex); mutex_init(&wil->p2p_wdev_mutex); mutex_init(&wil->halp.lock); init_completion(&wil->wmi_ready); Loading Loading @@ -1075,21 +1075,21 @@ void wil_abort_scan(struct wil6210_vif *vif, bool sync) .aborted = true, }; lockdep_assert_held(&wil->p2p_wdev_mutex); lockdep_assert_held(&wil->vif_mutex); if (!vif->scan_request) return; wil_dbg_misc(wil, "Abort scan_request 0x%p\n", vif->scan_request); del_timer_sync(&vif->scan_timer); mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); rc = wmi_abort_scan(vif); if (!rc && sync) wait_event_interruptible_timeout(wil->wq, !vif->scan_request, msecs_to_jiffies( WAIT_FOR_SCAN_ABORT_MS)); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request) { cfg80211_scan_done(vif->scan_request, &info); vif->scan_request = NULL; Loading Loading @@ -1233,9 +1233,9 @@ int wil_reset(struct wil6210_priv *wil, bool load_fw) /* Disable device led before reset*/ wmi_led_cfg(wil, false); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); wil_abort_scan(vif, false); mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); /* prevent NAPI from being scheduled and prevent wmi commands */ mutex_lock(&wil->wmi_mutex); Loading Loading @@ -1465,10 +1465,10 @@ int __wil_down(struct wil6210_priv *wil) wil_ftm_stop_operations(wil); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); wil_p2p_stop_radio_operations(wil); wil_abort_scan(ndev_to_vif(wil->main_ndev), false); mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); return wil_reset(wil, false); } Loading drivers/net/wireless/ath/wil6210/p2p.c +17 −17 Original line number Diff line number Diff line Loading @@ -158,16 +158,16 @@ int wil_p2p_listen(struct wil6210_priv *wil, struct wireless_dev *wdev, *cookie = ++p2p->cookie; p2p->listen_duration = duration; mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request) { wil_dbg_misc(wil, "Delaying p2p listen until scan done\n"); p2p->pending_listen_wdev = wdev; p2p->discovery_started = 1; rc = 0; mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); goto out; } mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); rc = wil_p2p_start_listen(vif); if (rc) Loading Loading @@ -228,14 +228,14 @@ int wil_p2p_cancel_listen(struct wil6210_vif *vif, u64 cookie) return -ENOENT; } mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); cfg80211_remain_on_channel_expired(vif_to_radio_wdev(wil, vif), p2p->cookie, &p2p->listen_chan, GFP_KERNEL); if (vif->mid == 0) wil->radio_wdev = wil->main_ndev->ieee80211_ptr; mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); return 0; } Loading @@ -257,14 +257,14 @@ void wil_p2p_listen_expired(struct work_struct *work) if (!started) return; mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); cfg80211_remain_on_channel_expired(vif_to_radio_wdev(wil, vif), p2p->cookie, &p2p->listen_chan, GFP_KERNEL); if (vif->mid == 0) wil->radio_wdev = wil->main_ndev->ieee80211_ptr; mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); } void wil_p2p_search_expired(struct work_struct *work) Loading @@ -287,7 +287,7 @@ void wil_p2p_search_expired(struct work_struct *work) .aborted = false, }; mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request) { cfg80211_scan_done(vif->scan_request, &info); vif->scan_request = NULL; Loading @@ -295,7 +295,7 @@ void wil_p2p_search_expired(struct work_struct *work) wil->radio_wdev = wil->main_ndev->ieee80211_ptr; } mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); } } Loading @@ -314,17 +314,17 @@ void wil_p2p_delayed_listen_work(struct work_struct *work) if (!p2p->discovery_started || !p2p->pending_listen_wdev) goto out; mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request) { /* another scan started, wait again... */ mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); goto out; } mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); rc = wil_p2p_start_listen(vif); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (rc) { cfg80211_remain_on_channel_expired(p2p->pending_listen_wdev, p2p->cookie, Loading @@ -340,7 +340,7 @@ void wil_p2p_delayed_listen_work(struct work_struct *work) wil->radio_wdev = p2p->pending_listen_wdev; } p2p->pending_listen_wdev = NULL; mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); out: mutex_unlock(&wil->mutex); Loading @@ -355,7 +355,7 @@ void wil_p2p_stop_radio_operations(struct wil6210_priv *wil) }; lockdep_assert_held(&wil->mutex); lockdep_assert_held(&wil->p2p_wdev_mutex); lockdep_assert_held(&wil->vif_mutex); if (wil->radio_wdev != wil->p2p_wdev) goto out; Loading @@ -369,9 +369,9 @@ void wil_p2p_stop_radio_operations(struct wil6210_priv *wil) } /* Search or listen on p2p device */ mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); wil_p2p_stop_discovery(vif); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request) { /* search */ Loading drivers/net/wireless/ath/wil6210/wil6210.h +1 −1 Original line number Diff line number Diff line Loading @@ -729,6 +729,7 @@ struct wil6210_priv { wait_queue_head_t wq; /* for all wait_event() use */ u8 max_vifs; /* maximum number of interfaces, including main */ struct wil6210_vif *vifs[WIL_MAX_VIFS]; struct mutex vif_mutex; /* protects access to VIF entries */ /* profile */ struct cfg80211_chan_def monitor_chandef; u32 monitor_flags; Loading Loading @@ -797,7 +798,6 @@ struct wil6210_priv { /* P2P_DEVICE vif */ struct wireless_dev *p2p_wdev; struct mutex p2p_wdev_mutex; /* protect @p2p_wdev and @scan_request */ struct wireless_dev *radio_wdev; /* High Access Latency Policy voting */ Loading drivers/net/wireless/ath/wil6210/wmi.c +4 −4 Original line number Diff line number Diff line Loading @@ -772,10 +772,10 @@ static void wmi_evt_rx_mgmt(struct wil6210_vif *vif, int id, void *d, int len) wil_err(wil, "cfg80211_inform_bss_frame() failed\n"); } } else { mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); cfg80211_rx_mgmt(vif_to_radio_wdev(wil, vif), freq, signal, (void *)rx_mgmt_frame, d_len, 0); mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); } } Loading @@ -795,7 +795,7 @@ static void wmi_evt_scan_complete(struct wil6210_vif *vif, int id, { struct wil6210_priv *wil = vif_to_wil(vif); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request) { struct wmi_scan_complete_event *data = d; int status = le32_to_cpu(data->status); Loading @@ -820,7 +820,7 @@ static void wmi_evt_scan_complete(struct wil6210_vif *vif, int id, } else { wil_err(wil, "SCAN_COMPLETE while not scanning\n"); } mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); } static void wmi_evt_connect(struct wil6210_vif *vif, int id, void *d, int len) Loading Loading
drivers/net/wireless/ath/wil6210/cfg80211.c +11 −11 Original line number Diff line number Diff line Loading @@ -484,10 +484,10 @@ static void wil_cfg80211_stop_p2p_device(struct wiphy *wiphy, wil_dbg_misc(wil, "stop_p2p_device: entered\n"); mutex_lock(&wil->mutex); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); wil_p2p_stop_radio_operations(wil); wil->p2p_dev_started = 0; mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); mutex_unlock(&wil->mutex); } Loading Loading @@ -778,14 +778,14 @@ static int wil_cfg80211_scan(struct wiphy *wiphy, mutex_lock(&wil->mutex); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request || vif->p2p.discovery_started) { wil_err(wil, "Already scanning\n"); mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); rc = -EAGAIN; goto out; } mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); if (wdev->iftype == NL80211_IFTYPE_P2P_DEVICE) { if (!wil->p2p_dev_started) { Loading Loading @@ -897,7 +897,7 @@ static void wil_cfg80211_abort_scan(struct wiphy *wiphy, wil_dbg_misc(wil, "wdev=0x%p iftype=%d\n", wdev, wdev->iftype); mutex_lock(&wil->mutex); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (!vif->scan_request) goto out; Loading @@ -913,7 +913,7 @@ static void wil_cfg80211_abort_scan(struct wiphy *wiphy, wil_abort_scan(vif, true); out: mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); mutex_unlock(&wil->mutex); } Loading Loading @@ -2015,10 +2015,10 @@ static int wil_cfg80211_suspend(struct wiphy *wiphy, wil_dbg_pm(wil, "suspending\n"); mutex_lock(&wil->mutex); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); wil_p2p_stop_radio_operations(wil); wil_abort_scan(ndev_to_vif(wil->main_ndev), true); mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); mutex_unlock(&wil->mutex); out: Loading Loading @@ -2314,11 +2314,11 @@ void wil_p2p_wdev_free(struct wil6210_priv *wil) struct wireless_dev *p2p_wdev; struct wil6210_vif *vif; mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); p2p_wdev = wil->p2p_wdev; wil->p2p_wdev = NULL; wil->radio_wdev = wil->main_ndev->ieee80211_ptr; mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); if (p2p_wdev) { cfg80211_unregister_wdev(p2p_wdev); vif = wdev_to_vif(wil, p2p_wdev); Loading
drivers/net/wireless/ath/wil6210/main.c +8 −8 Original line number Diff line number Diff line Loading @@ -539,8 +539,8 @@ int wil_priv_init(struct wil6210_priv *wil) spin_lock_init(&wil->vring_tx_data[i].lock); mutex_init(&wil->mutex); mutex_init(&wil->vif_mutex); mutex_init(&wil->wmi_mutex); mutex_init(&wil->p2p_wdev_mutex); mutex_init(&wil->halp.lock); init_completion(&wil->wmi_ready); Loading Loading @@ -1075,21 +1075,21 @@ void wil_abort_scan(struct wil6210_vif *vif, bool sync) .aborted = true, }; lockdep_assert_held(&wil->p2p_wdev_mutex); lockdep_assert_held(&wil->vif_mutex); if (!vif->scan_request) return; wil_dbg_misc(wil, "Abort scan_request 0x%p\n", vif->scan_request); del_timer_sync(&vif->scan_timer); mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); rc = wmi_abort_scan(vif); if (!rc && sync) wait_event_interruptible_timeout(wil->wq, !vif->scan_request, msecs_to_jiffies( WAIT_FOR_SCAN_ABORT_MS)); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request) { cfg80211_scan_done(vif->scan_request, &info); vif->scan_request = NULL; Loading Loading @@ -1233,9 +1233,9 @@ int wil_reset(struct wil6210_priv *wil, bool load_fw) /* Disable device led before reset*/ wmi_led_cfg(wil, false); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); wil_abort_scan(vif, false); mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); /* prevent NAPI from being scheduled and prevent wmi commands */ mutex_lock(&wil->wmi_mutex); Loading Loading @@ -1465,10 +1465,10 @@ int __wil_down(struct wil6210_priv *wil) wil_ftm_stop_operations(wil); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); wil_p2p_stop_radio_operations(wil); wil_abort_scan(ndev_to_vif(wil->main_ndev), false); mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); return wil_reset(wil, false); } Loading
drivers/net/wireless/ath/wil6210/p2p.c +17 −17 Original line number Diff line number Diff line Loading @@ -158,16 +158,16 @@ int wil_p2p_listen(struct wil6210_priv *wil, struct wireless_dev *wdev, *cookie = ++p2p->cookie; p2p->listen_duration = duration; mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request) { wil_dbg_misc(wil, "Delaying p2p listen until scan done\n"); p2p->pending_listen_wdev = wdev; p2p->discovery_started = 1; rc = 0; mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); goto out; } mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); rc = wil_p2p_start_listen(vif); if (rc) Loading Loading @@ -228,14 +228,14 @@ int wil_p2p_cancel_listen(struct wil6210_vif *vif, u64 cookie) return -ENOENT; } mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); cfg80211_remain_on_channel_expired(vif_to_radio_wdev(wil, vif), p2p->cookie, &p2p->listen_chan, GFP_KERNEL); if (vif->mid == 0) wil->radio_wdev = wil->main_ndev->ieee80211_ptr; mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); return 0; } Loading @@ -257,14 +257,14 @@ void wil_p2p_listen_expired(struct work_struct *work) if (!started) return; mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); cfg80211_remain_on_channel_expired(vif_to_radio_wdev(wil, vif), p2p->cookie, &p2p->listen_chan, GFP_KERNEL); if (vif->mid == 0) wil->radio_wdev = wil->main_ndev->ieee80211_ptr; mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); } void wil_p2p_search_expired(struct work_struct *work) Loading @@ -287,7 +287,7 @@ void wil_p2p_search_expired(struct work_struct *work) .aborted = false, }; mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request) { cfg80211_scan_done(vif->scan_request, &info); vif->scan_request = NULL; Loading @@ -295,7 +295,7 @@ void wil_p2p_search_expired(struct work_struct *work) wil->radio_wdev = wil->main_ndev->ieee80211_ptr; } mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); } } Loading @@ -314,17 +314,17 @@ void wil_p2p_delayed_listen_work(struct work_struct *work) if (!p2p->discovery_started || !p2p->pending_listen_wdev) goto out; mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request) { /* another scan started, wait again... */ mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); goto out; } mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); rc = wil_p2p_start_listen(vif); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (rc) { cfg80211_remain_on_channel_expired(p2p->pending_listen_wdev, p2p->cookie, Loading @@ -340,7 +340,7 @@ void wil_p2p_delayed_listen_work(struct work_struct *work) wil->radio_wdev = p2p->pending_listen_wdev; } p2p->pending_listen_wdev = NULL; mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); out: mutex_unlock(&wil->mutex); Loading @@ -355,7 +355,7 @@ void wil_p2p_stop_radio_operations(struct wil6210_priv *wil) }; lockdep_assert_held(&wil->mutex); lockdep_assert_held(&wil->p2p_wdev_mutex); lockdep_assert_held(&wil->vif_mutex); if (wil->radio_wdev != wil->p2p_wdev) goto out; Loading @@ -369,9 +369,9 @@ void wil_p2p_stop_radio_operations(struct wil6210_priv *wil) } /* Search or listen on p2p device */ mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); wil_p2p_stop_discovery(vif); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request) { /* search */ Loading
drivers/net/wireless/ath/wil6210/wil6210.h +1 −1 Original line number Diff line number Diff line Loading @@ -729,6 +729,7 @@ struct wil6210_priv { wait_queue_head_t wq; /* for all wait_event() use */ u8 max_vifs; /* maximum number of interfaces, including main */ struct wil6210_vif *vifs[WIL_MAX_VIFS]; struct mutex vif_mutex; /* protects access to VIF entries */ /* profile */ struct cfg80211_chan_def monitor_chandef; u32 monitor_flags; Loading Loading @@ -797,7 +798,6 @@ struct wil6210_priv { /* P2P_DEVICE vif */ struct wireless_dev *p2p_wdev; struct mutex p2p_wdev_mutex; /* protect @p2p_wdev and @scan_request */ struct wireless_dev *radio_wdev; /* High Access Latency Policy voting */ Loading
drivers/net/wireless/ath/wil6210/wmi.c +4 −4 Original line number Diff line number Diff line Loading @@ -772,10 +772,10 @@ static void wmi_evt_rx_mgmt(struct wil6210_vif *vif, int id, void *d, int len) wil_err(wil, "cfg80211_inform_bss_frame() failed\n"); } } else { mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); cfg80211_rx_mgmt(vif_to_radio_wdev(wil, vif), freq, signal, (void *)rx_mgmt_frame, d_len, 0); mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); } } Loading @@ -795,7 +795,7 @@ static void wmi_evt_scan_complete(struct wil6210_vif *vif, int id, { struct wil6210_priv *wil = vif_to_wil(vif); mutex_lock(&wil->p2p_wdev_mutex); mutex_lock(&wil->vif_mutex); if (vif->scan_request) { struct wmi_scan_complete_event *data = d; int status = le32_to_cpu(data->status); Loading @@ -820,7 +820,7 @@ static void wmi_evt_scan_complete(struct wil6210_vif *vif, int id, } else { wil_err(wil, "SCAN_COMPLETE while not scanning\n"); } mutex_unlock(&wil->p2p_wdev_mutex); mutex_unlock(&wil->vif_mutex); } static void wmi_evt_connect(struct wil6210_vif *vif, int id, void *d, int len) Loading