|
@@ -321,6 +321,33 @@ int wl1271_scan(struct wl1271 *wl, const u8 *ssid, size_t ssid_len,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+int wl1271_scan_stop(struct wl1271 *wl)
|
|
|
+{
|
|
|
+ struct wl1271_cmd_header *cmd = NULL;
|
|
|
+ int ret = 0;
|
|
|
+
|
|
|
+ if (WARN_ON(wl->scan.state == WL1271_SCAN_STATE_IDLE))
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ wl1271_debug(DEBUG_CMD, "cmd scan stop");
|
|
|
+
|
|
|
+ cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
|
|
|
+ if (!cmd) {
|
|
|
+ ret = -ENOMEM;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = wl1271_cmd_send(wl, CMD_STOP_SCAN, cmd,
|
|
|
+ sizeof(*cmd), 0);
|
|
|
+ if (ret < 0) {
|
|
|
+ wl1271_error("cmd stop_scan failed");
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+out:
|
|
|
+ kfree(cmd);
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
static int
|
|
|
wl1271_scan_get_sched_scan_channels(struct wl1271 *wl,
|
|
|
struct cfg80211_sched_scan_request *req,
|