|
@@ -58,8 +58,6 @@ scm_scan_free_scan_request_mem(struct scan_start_request *req)
|
|
|
QDF_ASSERT(0);
|
|
|
return QDF_STATUS_E_FAILURE;
|
|
|
}
|
|
|
- scm_debug("freed scan request: 0x%pK, scan_id: %d, requester: %d",
|
|
|
- req, req->scan_req.scan_id, req->scan_req.scan_req_id);
|
|
|
/* Free vendor(extra) ie */
|
|
|
ie = req->scan_req.extraie.ptr;
|
|
|
if (ie) {
|
|
@@ -167,10 +165,6 @@ static void scm_scan_post_event(struct wlan_objmgr_vdev *vdev,
|
|
|
cb_handlers = &(pdev_ev_handler->cb_handlers[0]);
|
|
|
requesters = scan->requesters;
|
|
|
|
|
|
- scm_debug("vdev: %d, type: %d, reason: %d, freq: %d, req: %d, scanid: %d",
|
|
|
- event->vdev_id, event->type, event->reason, event->chan_freq,
|
|
|
- event->requester, event->scan_id);
|
|
|
-
|
|
|
listeners = qdf_mem_malloc_atomic(sizeof(*listeners));
|
|
|
if (!listeners) {
|
|
|
scm_warn("couldn't allocate listeners list");
|
|
@@ -197,11 +191,8 @@ static void scm_scan_post_event(struct wlan_objmgr_vdev *vdev,
|
|
|
qdf_spin_unlock_bh(&scan->lock);
|
|
|
|
|
|
/* notify all interested handlers */
|
|
|
- for (i = 0; i < listeners->count; i++) {
|
|
|
- scm_debug("func: 0x%pK, arg: 0x%pK",
|
|
|
- listeners->cb[i].func, listeners->cb[i].arg);
|
|
|
+ for (i = 0; i < listeners->count; i++)
|
|
|
listeners->cb[i].func(vdev, event, listeners->cb[i].arg);
|
|
|
- }
|
|
|
qdf_mem_free(listeners);
|
|
|
}
|
|
|
|
|
@@ -331,10 +322,6 @@ scm_scan_serialize_callback(struct wlan_serialization_command *cmd,
|
|
|
}
|
|
|
|
|
|
req = cmd->umac_cmd;
|
|
|
- scm_debug("reason:%d, reqid:%d, scanid:%d, vdevid:%d, vdev:0x%pK",
|
|
|
- reason, req->scan_req.scan_req_id, req->scan_req.scan_id,
|
|
|
- req->scan_req.vdev_id, req->vdev);
|
|
|
-
|
|
|
if (!req->vdev) {
|
|
|
scm_err("NULL vdev. req:0x%pK, reason:%d\n", req, reason);
|
|
|
QDF_ASSERT(0);
|
|
@@ -451,13 +438,12 @@ scm_update_dbs_scan_ctrl_ext_flag(struct scan_start_request *req)
|
|
|
psoc = wlan_vdev_get_psoc(req->vdev);
|
|
|
|
|
|
if (!policy_mgr_is_dbs_scan_allowed(psoc)) {
|
|
|
- scm_debug("dbs disabled, going for non-dbs scan");
|
|
|
scan_dbs_policy = SCAN_DBS_POLICY_FORCE_NONDBS;
|
|
|
goto end;
|
|
|
}
|
|
|
|
|
|
if (!wlan_scan_cfg_honour_nl_scan_policy_flags(psoc)) {
|
|
|
- scm_debug("nl scan policy flags not honoured, goto end");
|
|
|
+ scm_debug_rl("nl scan policy flags not honoured, goto end");
|
|
|
goto end;
|
|
|
}
|
|
|
|
|
@@ -477,8 +463,6 @@ end:
|
|
|
req->scan_req.scan_ctrl_flags_ext |=
|
|
|
((scan_dbs_policy << SCAN_FLAG_EXT_DBS_SCAN_POLICY_BIT)
|
|
|
& SCAN_FLAG_EXT_DBS_SCAN_POLICY_MASK);
|
|
|
- scm_debug("scan_ctrl_flags_ext: 0x%x",
|
|
|
- req->scan_req.scan_ctrl_flags_ext);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -913,9 +897,6 @@ scm_update_6ghz_channel_list(struct wlan_objmgr_vdev *vdev,
|
|
|
}
|
|
|
qdf_mem_free(chan_list_6g);
|
|
|
}
|
|
|
- scm_debug("Number of channels to scan %d", num_scan_channels);
|
|
|
- for (i = 0; i < num_scan_channels; i++)
|
|
|
- scm_debug("channels to scan %d", chan_list->chan[i].freq);
|
|
|
end:
|
|
|
chan_list->num_chan = num_scan_channels;
|
|
|
}
|
|
@@ -1122,10 +1103,14 @@ scm_update_channel_list(struct scan_start_request *req,
|
|
|
|
|
|
freq = req->scan_req.chan_list.chan[i].freq;
|
|
|
if (skip_dfs_ch &&
|
|
|
- wlan_reg_chan_has_dfs_attribute_for_freq(pdev, freq))
|
|
|
+ wlan_reg_chan_has_dfs_attribute_for_freq(pdev, freq)) {
|
|
|
+ scm_nofl_debug("Skip DFS freq %d", freq);
|
|
|
continue;
|
|
|
- if (utils_dfs_is_freq_in_nol(pdev, freq))
|
|
|
+ }
|
|
|
+ if (utils_dfs_is_freq_in_nol(pdev, freq)) {
|
|
|
+ scm_nofl_debug("Skip NOL freq %d", freq);
|
|
|
continue;
|
|
|
+ }
|
|
|
|
|
|
req->scan_req.chan_list.chan[num_scan_channels++] =
|
|
|
req->scan_req.chan_list.chan[i];
|
|
@@ -1270,15 +1255,50 @@ scm_scan_req_update_params(struct wlan_objmgr_vdev *vdev,
|
|
|
|
|
|
scm_update_channel_list(req, scan_obj);
|
|
|
scm_update_rnr_info(req);
|
|
|
- scm_debug("dwell time: active %d, passive %d, repeat_probe_time %d n_probes %d flags_ext %x, wide_bw_scan: %d priority: %d",
|
|
|
- req->scan_req.dwell_time_active,
|
|
|
- req->scan_req.dwell_time_passive,
|
|
|
- req->scan_req.repeat_probe_time, req->scan_req.n_probes,
|
|
|
- req->scan_req.scan_ctrl_flags_ext,
|
|
|
- req->scan_req.scan_f_wide_band,
|
|
|
- req->scan_req.scan_priority);
|
|
|
}
|
|
|
|
|
|
+static inline void scm_print_scan_req_info(struct scan_req_params *req)
|
|
|
+{
|
|
|
+ uint32_t buff_len;
|
|
|
+ char *chan_buff;
|
|
|
+ uint32_t len = 0;
|
|
|
+ uint8_t idx;
|
|
|
+ struct chan_list *chan_lst;
|
|
|
+
|
|
|
+ scm_nofl_debug("Scan start: scan id %d vdev %d Dwell time: act %d pass %d act_2G %d act_6G %d pass_6G %d, probe time %d n_probes %d flags %x ext_flag %x events %x policy %d wide_bw %d pri %d",
|
|
|
+ req->scan_id, req->vdev_id, req->dwell_time_active,
|
|
|
+ req->dwell_time_passive, req->dwell_time_active_2g,
|
|
|
+ req->dwell_time_active_6g, req->dwell_time_passive_6g,
|
|
|
+ req->repeat_probe_time, req->n_probes, req->scan_flags,
|
|
|
+ req->scan_ctrl_flags_ext, req->scan_events,
|
|
|
+ req->scan_policy_type, req->scan_f_wide_band,
|
|
|
+ req->scan_priority);
|
|
|
+
|
|
|
+ for (idx = 0; idx < req->num_ssids; idx++)
|
|
|
+ scm_nofl_debug("SSID[%d]: %.*s", idx, req->ssid[idx].length,
|
|
|
+ req->ssid[idx].ssid);
|
|
|
+
|
|
|
+ chan_lst = &req->chan_list;
|
|
|
+
|
|
|
+ if (!chan_lst->num_chan)
|
|
|
+ return;
|
|
|
+ /*
|
|
|
+ * Buffer of (num channl * 5) + 1 to consider the 4 char freq and
|
|
|
+ * 1 space after it for each channel and 1 to end the string with NULL.
|
|
|
+ */
|
|
|
+ buff_len = (chan_lst->num_chan * 5) + 1;
|
|
|
+ chan_buff = qdf_mem_malloc(buff_len);
|
|
|
+ if (!chan_buff)
|
|
|
+ return;
|
|
|
+
|
|
|
+ for (idx = 0; idx < chan_lst->num_chan; idx++)
|
|
|
+ len += snprintf(chan_buff + len, buff_len - len, "%d ",
|
|
|
+ chan_lst->chan[idx].freq);
|
|
|
+
|
|
|
+ scm_nofl_debug("Freq list[%d]: %s", chan_lst->num_chan, chan_buff);
|
|
|
+
|
|
|
+ qdf_mem_free(chan_buff);
|
|
|
+}
|
|
|
QDF_STATUS
|
|
|
scm_scan_start_req(struct scheduler_msg *msg)
|
|
|
{
|
|
@@ -1287,7 +1307,7 @@ scm_scan_start_req(struct scheduler_msg *msg)
|
|
|
struct scan_start_request *req = NULL;
|
|
|
struct wlan_scan_obj *scan_obj;
|
|
|
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
|
|
- uint8_t idx;
|
|
|
+
|
|
|
|
|
|
if (!msg) {
|
|
|
scm_err("msg received is NULL");
|
|
@@ -1316,21 +1336,14 @@ scm_scan_start_req(struct scheduler_msg *msg)
|
|
|
}
|
|
|
|
|
|
scm_scan_req_update_params(req->vdev, req, scan_obj);
|
|
|
+ scm_print_scan_req_info(&req->scan_req);
|
|
|
|
|
|
if (!req->scan_req.chan_list.num_chan) {
|
|
|
- scm_err("Scan Aborted, 0 channel to scan");
|
|
|
+ scm_info("Reject 0 channel Scan");
|
|
|
status = QDF_STATUS_E_NULL_VALUE;
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
- scm_info("request to scan %d channels",
|
|
|
- req->scan_req.chan_list.num_chan);
|
|
|
-
|
|
|
- for (idx = 0; idx < req->scan_req.chan_list.num_chan; idx++)
|
|
|
- scm_debug("chan[%d]: freq:%d, phymode:%d", idx,
|
|
|
- req->scan_req.chan_list.chan[idx].freq,
|
|
|
- req->scan_req.chan_list.chan[idx].phymode);
|
|
|
-
|
|
|
cmd.cmd_type = WLAN_SER_CMD_SCAN;
|
|
|
cmd.cmd_id = req->scan_req.scan_id;
|
|
|
cmd.cmd_cb = scm_scan_serialize_callback;
|
|
@@ -1344,17 +1357,11 @@ scm_scan_start_req(struct scheduler_msg *msg)
|
|
|
if (scan_obj->disable_timeout)
|
|
|
cmd.cmd_timeout_duration = 0;
|
|
|
|
|
|
- scm_debug("req: 0x%pK, reqid: %d, scanid: %d, vdevid: %d",
|
|
|
- req, req->scan_req.scan_req_id, req->scan_req.scan_id,
|
|
|
- req->scan_req.vdev_id);
|
|
|
-
|
|
|
qdf_mtrace(QDF_MODULE_ID_SCAN, QDF_MODULE_ID_SERIALIZATION,
|
|
|
WLAN_SER_CMD_SCAN, req->vdev->vdev_objmgr.vdev_id,
|
|
|
req->scan_req.scan_id);
|
|
|
|
|
|
ser_cmd_status = wlan_serialization_request(&cmd);
|
|
|
- scm_debug("wlan_serialization_request status:%d", ser_cmd_status);
|
|
|
-
|
|
|
switch (ser_cmd_status) {
|
|
|
case WLAN_SER_CMD_PENDING:
|
|
|
/* command moved to pending list.Do nothing */
|
|
@@ -1362,13 +1369,8 @@ scm_scan_start_req(struct scheduler_msg *msg)
|
|
|
case WLAN_SER_CMD_ACTIVE:
|
|
|
/* command moved to active list. Do nothing */
|
|
|
break;
|
|
|
- case WLAN_SER_CMD_DENIED_LIST_FULL:
|
|
|
- case WLAN_SER_CMD_DENIED_RULES_FAILED:
|
|
|
- case WLAN_SER_CMD_DENIED_UNSPECIFIED:
|
|
|
- goto err;
|
|
|
default:
|
|
|
- QDF_ASSERT(0);
|
|
|
- status = QDF_STATUS_E_INVAL;
|
|
|
+ scm_debug("ser cmd status %d", ser_cmd_status);
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
@@ -1677,8 +1679,7 @@ scm_scan_event_handler(struct scheduler_msg *msg)
|
|
|
|
|
|
if (scan_start_req->scan_req.scan_req_id != event->requester) {
|
|
|
scm_err("req ID mismatch, scan_req_id:%d, event_req_id:%d",
|
|
|
- scan_start_req->scan_req.scan_req_id,
|
|
|
- event->requester);
|
|
|
+ scan_start_req->scan_req.scan_req_id, event->requester);
|
|
|
goto exit;
|
|
|
}
|
|
|
|
|
@@ -1714,6 +1715,7 @@ QDF_STATUS scm_scan_event_flush_callback(struct scheduler_msg *msg)
|
|
|
{
|
|
|
struct wlan_objmgr_vdev *vdev;
|
|
|
struct scan_event_info *event_info;
|
|
|
+ struct scan_event *event;
|
|
|
|
|
|
if (!msg || !msg->bodyptr) {
|
|
|
scm_err("msg or msg->bodyptr is NULL");
|
|
@@ -1722,6 +1724,11 @@ QDF_STATUS scm_scan_event_flush_callback(struct scheduler_msg *msg)
|
|
|
|
|
|
event_info = msg->bodyptr;
|
|
|
vdev = event_info->vdev;
|
|
|
+ event = &event_info->event;
|
|
|
+
|
|
|
+ scm_debug("Flush scan event vdev %d type %d reason %d freq: %d req %d scanid %d",
|
|
|
+ event->vdev_id, event->type, event->reason, event->chan_freq,
|
|
|
+ event->requester, event->scan_id);
|
|
|
|
|
|
/* free event info memory */
|
|
|
qdf_mem_free(event_info);
|