summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLuciano Coelho <coelho@ti.com>2011-05-12 17:07:55 +0300
committerLuciano Coelho <coelho@ti.com>2011-05-13 00:06:33 +0300
commit683c002447c12742f5151691083f68524f33b13a (patch)
tree39e31fd84fbfd7d41af7358f817d376fa4149545 /drivers
parentd3eff81de6048d8af8f95f52f0f06625980f2efb (diff)
downloadlinux-stable-683c002447c12742f5151691083f68524f33b13a.tar.gz
linux-stable-683c002447c12742f5151691083f68524f33b13a.tar.bz2
linux-stable-683c002447c12742f5151691083f68524f33b13a.zip
wl12xx: prevent sched_scan when not idle or not in station mode
The current firmware only supports scheduled scan in station mode and when idle. To prevent the firmware from crashing, return -EOPNOTSUPP when sched_scan start is called in an invalid state. Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/wl12xx/scan.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/wl12xx/scan.c b/drivers/net/wireless/wl12xx/scan.c
index 668ff46a6824..f37e5a391976 100644
--- a/drivers/net/wireless/wl12xx/scan.c
+++ b/drivers/net/wireless/wl12xx/scan.c
@@ -505,6 +505,12 @@ int wl1271_scan_sched_scan_start(struct wl1271 *wl)
wl1271_debug(DEBUG_CMD, "cmd periodic scan start");
+ if (wl->bss_type != BSS_TYPE_STA_BSS)
+ return -EOPNOTSUPP;
+
+ if (!test_bit(WL1271_FLAG_IDLE, &wl->flags))
+ return -EBUSY;
+
start = kzalloc(sizeof(*start), GFP_KERNEL);
if (!start)
return -ENOMEM;