|
@@ -5225,6 +5225,40 @@ static QDF_STATUS send_nlo_mawc_cmd_tlv(wmi_unified_t wmi_handle,
|
|
return QDF_STATUS_SUCCESS;
|
|
return QDF_STATUS_SUCCESS;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * wmi_dump_pno_scan_freq_list() - dump frequency list associated with pno
|
|
|
|
+ * scan
|
|
|
|
+ * @scan_freq_list: frequency list for pno scan
|
|
|
|
+ *
|
|
|
|
+ * Return: void
|
|
|
|
+ */
|
|
|
|
+static void wmi_dump_pno_scan_freq_list(struct chan_list *scan_freq_list)
|
|
|
|
+{
|
|
|
|
+ uint32_t i;
|
|
|
|
+ uint8_t info[WMI_MAX_CHAN_INFO_LOG];
|
|
|
|
+ uint32_t len = 0;
|
|
|
|
+ struct chan_info *chan_info;
|
|
|
|
+ int ret;
|
|
|
|
+
|
|
|
|
+ wmi_debug("[PNO_SCAN] Total freq %d", scan_freq_list->num_chan);
|
|
|
|
+ for (i = 0; i < scan_freq_list->num_chan; i++) {
|
|
|
|
+ chan_info = &scan_freq_list->chan[i];
|
|
|
|
+ ret = qdf_scnprintf(info + len, sizeof(info) - len,
|
|
|
|
+ " %d[%d]", chan_info->freq,
|
|
|
|
+ chan_info->flags);
|
|
|
|
+ if (ret <= 0)
|
|
|
|
+ break;
|
|
|
|
+ len += ret;
|
|
|
|
+ if (len >= (sizeof(info) - 20)) {
|
|
|
|
+ wmi_nofl_debug("Freq[flag]:%s",
|
|
|
|
+ info);
|
|
|
|
+ len = 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (len)
|
|
|
|
+ wmi_nofl_debug("Freq[flag]:%s", info);
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* send_pno_start_cmd_tlv() - PNO start request
|
|
* send_pno_start_cmd_tlv() - PNO start request
|
|
* @wmi_handle: wmi handle
|
|
* @wmi_handle: wmi handle
|
|
@@ -5240,6 +5274,7 @@ static QDF_STATUS send_pno_start_cmd_tlv(wmi_unified_t wmi_handle,
|
|
nlo_configured_parameters *nlo_list;
|
|
nlo_configured_parameters *nlo_list;
|
|
uint32_t *channel_list;
|
|
uint32_t *channel_list;
|
|
int32_t len;
|
|
int32_t len;
|
|
|
|
+ qdf_freq_t freq;
|
|
wmi_buf_t buf;
|
|
wmi_buf_t buf;
|
|
uint8_t *buf_ptr;
|
|
uint8_t *buf_ptr;
|
|
uint8_t i;
|
|
uint8_t i;
|
|
@@ -5259,7 +5294,7 @@ static QDF_STATUS send_pno_start_cmd_tlv(wmi_unified_t wmi_handle,
|
|
WMI_TLV_HDR_SIZE + WMI_TLV_HDR_SIZE + WMI_TLV_HDR_SIZE +
|
|
WMI_TLV_HDR_SIZE + WMI_TLV_HDR_SIZE + WMI_TLV_HDR_SIZE +
|
|
WMI_TLV_HDR_SIZE + WMI_TLV_HDR_SIZE;
|
|
WMI_TLV_HDR_SIZE + WMI_TLV_HDR_SIZE;
|
|
|
|
|
|
- len += sizeof(uint32_t) * pno->networks_list[0].channel_cnt;
|
|
|
|
|
|
+ len += sizeof(uint32_t) * pno->networks_list[0].pno_chan_list.num_chan;
|
|
len += sizeof(nlo_configured_parameters) *
|
|
len += sizeof(nlo_configured_parameters) *
|
|
QDF_MIN(pno->networks_cnt, WMI_NLO_MAX_SSIDS);
|
|
QDF_MIN(pno->networks_cnt, WMI_NLO_MAX_SSIDS);
|
|
len += sizeof(nlo_channel_prediction_cfg);
|
|
len += sizeof(nlo_channel_prediction_cfg);
|
|
@@ -5346,20 +5381,28 @@ static QDF_STATUS send_pno_start_cmd_tlv(wmi_unified_t wmi_handle,
|
|
buf_ptr += cmd->no_of_ssids * sizeof(nlo_configured_parameters);
|
|
buf_ptr += cmd->no_of_ssids * sizeof(nlo_configured_parameters);
|
|
|
|
|
|
/* Copy channel info */
|
|
/* Copy channel info */
|
|
- cmd->num_of_channels = pno->networks_list[0].channel_cnt;
|
|
|
|
|
|
+ cmd->num_of_channels = pno->networks_list[0].pno_chan_list.num_chan;
|
|
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_UINT32,
|
|
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_UINT32,
|
|
(cmd->num_of_channels * sizeof(uint32_t)));
|
|
(cmd->num_of_channels * sizeof(uint32_t)));
|
|
buf_ptr += WMI_TLV_HDR_SIZE;
|
|
buf_ptr += WMI_TLV_HDR_SIZE;
|
|
|
|
|
|
channel_list = (uint32_t *) buf_ptr;
|
|
channel_list = (uint32_t *) buf_ptr;
|
|
for (i = 0; i < cmd->num_of_channels; i++) {
|
|
for (i = 0; i < cmd->num_of_channels; i++) {
|
|
- channel_list[i] = pno->networks_list[0].channels[i];
|
|
|
|
|
|
+ TARGET_SET_FREQ_IN_CHAN_LIST_TLV(channel_list[i],
|
|
|
|
+ pno->networks_list[0].pno_chan_list.chan[i].freq);
|
|
|
|
+
|
|
|
|
+ if (channel_list[i] < WMI_NLO_FREQ_THRESH) {
|
|
|
|
+ freq = pno->networks_list[0].pno_chan_list.chan[i].freq;
|
|
|
|
+ TARGET_SET_FREQ_IN_CHAN_LIST_TLV(channel_list[i],
|
|
|
|
+ wlan_chan_to_freq(freq));
|
|
|
|
+ }
|
|
|
|
|
|
- if (channel_list[i] < WMI_NLO_FREQ_THRESH)
|
|
|
|
- channel_list[i] =
|
|
|
|
- wlan_chan_to_freq(pno->
|
|
|
|
- networks_list[0].channels[i]);
|
|
|
|
|
|
+ TARGET_SET_FLAGS_IN_CHAN_LIST_TLV(channel_list[i],
|
|
|
|
+ pno->networks_list[0].pno_chan_list.chan[i].flags);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ wmi_dump_pno_scan_freq_list(&pno->networks_list[0].pno_chan_list);
|
|
|
|
+
|
|
buf_ptr += cmd->num_of_channels * sizeof(uint32_t);
|
|
buf_ptr += cmd->num_of_channels * sizeof(uint32_t);
|
|
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC,
|
|
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC,
|
|
sizeof(nlo_channel_prediction_cfg));
|
|
sizeof(nlo_channel_prediction_cfg));
|