From a56d9e0efc83aefa89c9df1053bfaeb69b8ce141 Mon Sep 17 00:00:00 2001 From: Grazvydas Ignotas Date: Fri, 19 Mar 2010 23:00:02 +0200 Subject: [PATCH] wl1251: prevent scan when connected --- drivers/net/wireless/wl12xx/wl1251.h | 2 ++ drivers/net/wireless/wl12xx/wl1251_main.c | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/drivers/net/wireless/wl12xx/wl1251.h b/drivers/net/wireless/wl12xx/wl1251.h index 4f5f02a..d8087ac 100644 --- a/drivers/net/wireless/wl12xx/wl1251.h +++ b/drivers/net/wireless/wl12xx/wl1251.h @@ -381,6 +381,8 @@ struct wl1251 { u32 chip_id; char fw_ver[21]; + + bool associated; }; int wl1251_plt_start(struct wl1251 *wl); diff --git a/drivers/net/wireless/wl12xx/wl1251_main.c b/drivers/net/wireless/wl12xx/wl1251_main.c index de59d8d..fc91f8f 100644 --- a/drivers/net/wireless/wl12xx/wl1251_main.c +++ b/drivers/net/wireless/wl12xx/wl1251_main.c @@ -869,6 +869,13 @@ static int wl1251_op_hw_scan(struct ieee80211_hw *hw, wl1251_debug(DEBUG_MAC80211, "mac80211 hw scan"); + /* + * FIXME: scanning while associated causes lockups, + * so we don't allow that + */ + if (wl->associated) + return -EBUSY; + if (req->n_ssids) { ssid = req->ssids[0].ssid; ssid_len = req->ssids[0].ssid_len; @@ -987,6 +994,7 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw, } if (changed & BSS_CHANGED_ASSOC) { + wl->associated = bss_conf->assoc; if (bss_conf->assoc) { wl->beacon_int = bss_conf->beacon_int; -- 2.39.5