qcacmn: Add proper scan req flags and bssid in scan request

scan req flags for FW should be set based on the flags in request.
scan request is assuming num_bssid as one and copying single
mac_address but it should support more bssid and hence change this
to add multiple bssids.

Change-Id: I3fbad3353c1a9904847e09c527254e104cb6db71
CRs-Fixed: 1099421
这个提交包含在:
Kiran Venkatappa
2016-11-07 23:23:56 +05:30
提交者 qcabuildsw
父节点 f0b91a89ee
当前提交 3c4f6a204e

查看文件

@@ -1818,11 +1818,39 @@ static inline void copy_scan_notify_ev_flags(
WMI_SCAN_EVENT_FOREIGN_CHANNEL |
WMI_SCAN_EVENT_DEQUEUED
;
cmd->scan_ctrl_flags = params->scan_ctrl_flags;
cmd->scan_ctrl_flags |= WMI_SCAN_ADD_BCAST_PROBE_REQ;
cmd->scan_ctrl_flags = (params->passive_flag) ?
WMI_SCAN_FLAG_PASSIVE : 0;
if (params->is_strict_pscan_en)
cmd->scan_ctrl_flags |= WMI_SCAN_FLAG_STRICT_PASSIVE_ON_PCHN;
if (params->is_phy_error)
cmd->scan_ctrl_flags |= WMI_SCAN_CAPTURE_PHY_ERROR;
if (params->half_rate)
cmd->scan_ctrl_flags |= WMI_SCAN_FLAG_HALF_RATE_SUPPORT;
if (params->quarter_rate)
cmd->scan_ctrl_flags |= WMI_SCAN_FLAG_QUARTER_RATE_SUPPORT;
if (params->is_phy_error)
cmd->scan_ctrl_flags |= WMI_SCAN_CAPTURE_PHY_ERROR;
cmd->scan_ctrl_flags |= WMI_SCAN_ADD_OFDM_RATES;
/* add cck rates if required */
if (params->add_cck_rates)
cmd->scan_ctrl_flags |= WMI_SCAN_ADD_CCK_RATES;
/** It enables the Channel stat event indication to host */
if (params->chan_stat_enable)
cmd->scan_ctrl_flags |= WMI_SCAN_CHAN_STAT_EVENT;
if (params->add_bcast_probe_reqd)
cmd->scan_ctrl_flags |= WMI_SCAN_ADD_BCAST_PROBE_REQ;
/* off channel TX control */
if (params->offchan_tx_mgmt)
cmd->scan_ctrl_flags |= WMI_SCAN_OFFCHAN_MGMT_TX;
if (params->offchan_tx_data)
cmd->scan_ctrl_flags |= WMI_SCAN_OFFCHAN_DATA_TX;
}
#endif
/**
@@ -1858,7 +1886,8 @@ QDF_STATUS send_scan_start_cmd_tlv(wmi_unified_t wmi_handle,
/* Length TLV placeholder for array of wmi_mac_addr structures */
len += WMI_TLV_HDR_SIZE;
len += sizeof(wmi_mac_addr);
if (params->num_bssid)
len += sizeof(wmi_mac_addr) * params->num_bssid;
/* Length TLV placeholder for array of bytes */
len += WMI_TLV_HDR_SIZE;
@@ -1930,7 +1959,17 @@ QDF_STATUS send_scan_start_cmd_tlv(wmi_unified_t wmi_handle,
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_FIXED_STRUC,
(params->num_bssid * sizeof(wmi_mac_addr)));
bssid = (wmi_mac_addr *) (buf_ptr + WMI_TLV_HDR_SIZE);
#if CONFIG_MCL
WMI_CHAR_ARRAY_TO_MAC_ADDR(params->mac_add_bytes, bssid);
#else
if (params->num_bssid) {
for (i = 0; i < params->num_bssid; ++i) {
WMI_CHAR_ARRAY_TO_MAC_ADDR(params->bssid_list[i],
bssid);
bssid++;
}
}
#endif
buf_ptr += WMI_TLV_HDR_SIZE + (params->num_bssid * sizeof(wmi_mac_addr));
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_BYTE, params->ie_len_with_pad);