*/
        u16 num_probe_reqs;
 
+       /*
+        * Scan trigger (split scan) timeout. The FW will split the scan
+        * operation into slices of the given time and allow the FW to schedule
+        * other tasks in between.
+        *
+        * Range: u32 Microsecs
+        */
+       u32 split_scan_timeout;
 };
 
 struct conf_sched_scan_settings {
 
                .min_dwell_time_passive       = 100000,
                .max_dwell_time_passive       = 100000,
                .num_probe_reqs               = 2,
+               .split_scan_timeout           = 50000,
        },
        .sched_scan = {
                /* sched_scan requires dwell times in TU instead of TU/1000 */
 
                goto out;
        }
 
+       if (wl->conf.scan.split_scan_timeout)
+               scan_options |= WL1271_SCAN_OPT_SPLIT_SCAN;
+
        if (passive)
                scan_options |= WL1271_SCAN_OPT_PASSIVE;
 
 
        cmd->params.tx_rate = cpu_to_le32(basic_rate);
        cmd->params.n_probe_reqs = wl->conf.scan.num_probe_reqs;
-       cmd->params.tid_trigger = 0;
+       cmd->params.tid_trigger = CONF_TX_AC_ANY_TID;
        cmd->params.scan_tag = WL1271_SCAN_DEFAULT_TAG;
 
        if (band == IEEE80211_BAND_2GHZ)
                goto out;
        }
 
-       /* disable the timeout */
-       trigger->timeout = 0;
+       trigger->timeout = cpu_to_le32(wl->conf.scan.split_scan_timeout);
        ret = wl1271_cmd_send(wl, CMD_TRIGGER_SCAN_TO, trigger,
                              sizeof(*trigger), 0);
        if (ret < 0) {
 
 #define WL1271_SCAN_CURRENT_TX_PWR     0
 #define WL1271_SCAN_OPT_ACTIVE         0
 #define WL1271_SCAN_OPT_PASSIVE               1
-#define WL1271_SCAN_OPT_TRIGGERED_SCAN 2
+#define WL1271_SCAN_OPT_SPLIT_SCAN     2
 #define WL1271_SCAN_OPT_PRIORITY_HIGH  4
 /* scan even if we fail to enter psm */
 #define WL1271_SCAN_OPT_FORCE          8