diff options
| author | Mukul Sharma <mukul@qti.qualcomm.com> | 2015-12-23 17:58:42 +0530 |
|---|---|---|
| committer | Srinivas Girigowda <sgirigow@codeaurora.org> | 2016-01-14 22:06:26 -0800 |
| commit | 0eb883c663b78d5bffef162756e3e1836dd910b9 (patch) | |
| tree | c9d426a718c70f9414d7d9a3963ddce0124d6c19 | |
| parent | 655389ffc3f35a39aeb7b5112c82a8d7c1765209 (diff) | |
qcacld-2.0: Enhance EPNO feature
Make the following enhancements to the EPNO feature:
1) Implement the reset EPNO command handler
2) Add new parameters for candidate score calculation.
Change-Id: Iad1ff9c2b003c9e3ddbc3373366686040ccb55ca
CRs-Fixed: 956649
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg80211.h | 40 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 106 | ||||
| -rw-r--r-- | CORE/MAC/inc/sirApi.h | 24 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 133 | ||||
| -rw-r--r-- | CORE/SME/src/sme_common/sme_Api.c | 36 |
5 files changed, 263 insertions, 76 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg80211.h b/CORE/HDD/inc/wlan_hdd_cfg80211.h index 4b78b372f643..981c48de2bea 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg80211.h +++ b/CORE/HDD/inc/wlan_hdd_cfg80211.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -1217,6 +1217,7 @@ enum qca_wlan_vendor_attr_pno_config_params { QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_SSID = 9, /* Signed 8-bit value; threshold for considering this SSID as found, * required granularity for this threshold is 4dBm to 8dBm + * This attribute is obsolete. */ QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_RSSI_THRESHOLD = 10, /* Unsigned 8-bit value; WIFI_PNO_FLAG_XXX */ @@ -1229,6 +1230,43 @@ enum qca_wlan_vendor_attr_pno_config_params { */ QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_TYPE = 13, + /* Nested attribute to send the channel list */ + QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_CHANNEL_LIST = 14, + + /* Unsigned 32-bit value; indicates the Interval between PNO scan + * cycles in msec + */ + QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_SCAN_INTERVAL = 15, + /* Signed 32-bit value; minimum 5GHz RSSI for a BSSID to be + * considered + */ + QCA_WLAN_VENDOR_ATTR_EPNO_MIN5GHZ_RSSI = 16, + /* Signed 32-bit value; minimum 2.4GHz RSSI for a BSSID to + * be considered + */ + QCA_WLAN_VENDOR_ATTR_EPNO_MIN24GHZ_RSSI = 17, + /* Signed 32-bit value; the maximum score that a network + * can have before bonuses + */ + QCA_WLAN_VENDOR_ATTR_EPNO_INITIAL_SCORE_MAX = 18, + /* Signed 32-bit value; only report when there is a network's + * score this much higher han the current connection + */ + QCA_WLAN_VENDOR_ATTR_EPNO_CURRENT_CONNECTION_BONUS = 19, + /* Signed 32-bit value; score bonus for all networks with + * the same network flag + */ + QCA_WLAN_VENDOR_ATTR_EPNO_SAME_NETWORK_BONUS = 20, + /* Signed 32-bit value; score bonus for networks that are + * not open + */ + QCA_WLAN_VENDOR_ATTR_EPNO_SECURE_BONUS = 21, + /* Signed 32-bit value; 5GHz RSSI score bonus + * applied to all 5GHz networks + */ + QCA_WLAN_VENDOR_ATTR_EPNO_BAND5GHZ_BONUS = 22, + + /* keep last */ QCA_WLAN_VENDOR_ATTR_PNO_AFTER_LAST, QCA_WLAN_VENDOR_ATTR_PNO_MAX = diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index a502602157f5..b2d3b39dd8e2 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -848,7 +848,6 @@ wlan_hdd_extscan_config_policy[QCA_WLAN_VENDOR_ATTR_EXTSCAN_SUBCMD_CONFIG_PARAM_ [QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_NUM_NETWORKS] = { .type = NLA_U32 }, [QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_SSID] = { .type = NLA_BINARY, .len = IEEE80211_MAX_SSID_LEN }, - [QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_RSSI_THRESHOLD] = { .type = NLA_S8 }, [QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_FLAGS] = { .type = NLA_U8 }, [QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_AUTH_BIT] = { .type = NLA_U8 }, [QCA_WLAN_VENDOR_ATTR_EXTSCAN_SSID_THRESHOLD_PARAM_SSID] = { .type = NLA_BINARY, @@ -4717,16 +4716,6 @@ static int hdd_extscan_epno_fill_network_list( req_msg->networks[index].ssid.length, req_msg->networks[index].ssid.ssId); - /* Parse and fetch rssi threshold */ - if (!network[QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_RSSI_THRESHOLD]) { - hddLog(LOGE, FL("attr rssi threshold failed")); - return -EINVAL; - } - req_msg->networks[index].rssi_threshold = nla_get_s8( - network[QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_RSSI_THRESHOLD]); - hddLog(LOG1, FL("rssi threshold %d"), - req_msg->networks[index].rssi_threshold); - /* Parse and fetch epno flags */ if (!network[QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORK_FLAGS]) { hddLog(LOGE, FL("attr epno flags failed")); @@ -4801,12 +4790,24 @@ static int __wlan_hdd_cfg80211_set_epno_list(struct wiphy *wiphy, hddLog(LOGE, FL("attr num networks failed")); return -EINVAL; } + /* + * num_networks is also used as EPNO SET/RESET request. + * if num_networks is zero then it is treated as RESET. + */ num_networks = nla_get_u32( - tb[QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_NUM_NETWORKS]); - hddLog(LOG1, FL("num networks %u"), num_networks); + tb[QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_NUM_NETWORKS]); + if (num_networks > MAX_EPNO_NETWORKS) { + hddLog(LOG1, + FL("input num_networks: %d exceeded max: %d, hence reset to: %d"), + num_networks, MAX_EPNO_NETWORKS, MAX_EPNO_NETWORKS); + num_networks = MAX_EPNO_NETWORKS; + } + + hddLog(LOG1, FL("num networks %u"), num_networks); len = sizeof(*req_msg) + - (num_networks * sizeof(struct wifi_epno_network)); + (num_networks * sizeof(struct wifi_epno_network)); + req_msg = vos_mem_malloc(len); if (!req_msg) { hddLog(LOGE, FL("vos_mem_malloc failed")); @@ -4827,8 +4828,81 @@ static int __wlan_hdd_cfg80211_set_epno_list(struct wiphy *wiphy, hddLog(LOG1, FL("Req Id %u Session Id %d"), req_msg->request_id, req_msg->session_id); - if (hdd_extscan_epno_fill_network_list(hdd_ctx, req_msg, tb)) - goto fail; + if (num_networks) { + + /* Parse and fetch min_5ghz_rssi */ + if (!tb[QCA_WLAN_VENDOR_ATTR_EPNO_MIN5GHZ_RSSI]) { + hddLog(LOGE, FL("min_5ghz_rssi id failed")); + goto fail; + } + req_msg->min_5ghz_rssi = nla_get_u32( + tb[QCA_WLAN_VENDOR_ATTR_EPNO_MIN5GHZ_RSSI]); + + /* Parse and fetch min_24ghz_rssi */ + if (!tb[QCA_WLAN_VENDOR_ATTR_EPNO_MIN24GHZ_RSSI]) { + hddLog(LOGE, FL("min_24ghz_rssi id failed")); + goto fail; + } + req_msg->min_24ghz_rssi = nla_get_u32( + tb[QCA_WLAN_VENDOR_ATTR_EPNO_MIN24GHZ_RSSI]); + + /* Parse and fetch initial_score_max */ + if (!tb[QCA_WLAN_VENDOR_ATTR_EPNO_INITIAL_SCORE_MAX]) { + hddLog(LOGE, FL("initial_score_max id failed")); + goto fail; + } + req_msg->initial_score_max = nla_get_u32( + tb[QCA_WLAN_VENDOR_ATTR_EPNO_INITIAL_SCORE_MAX]); + + /* Parse and fetch current_connection_bonus */ + if (!tb[QCA_WLAN_VENDOR_ATTR_EPNO_CURRENT_CONNECTION_BONUS]) { + hddLog(LOGE, FL("current_connection_bonus id failed")); + goto fail; + } + req_msg->current_connection_bonus = nla_get_u32( + tb[QCA_WLAN_VENDOR_ATTR_EPNO_CURRENT_CONNECTION_BONUS] + ); + + /* Parse and fetch same_network_bonus */ + if (!tb[QCA_WLAN_VENDOR_ATTR_EPNO_SAME_NETWORK_BONUS]) { + hddLog(LOGE, FL("same_network_bonus id failed")); + goto fail; + } + req_msg->same_network_bonus = nla_get_u32( + tb[QCA_WLAN_VENDOR_ATTR_EPNO_SAME_NETWORK_BONUS]); + + /* Parse and fetch secure_bonus */ + if (!tb[QCA_WLAN_VENDOR_ATTR_EPNO_SECURE_BONUS]) { + hddLog(LOGE, FL("secure_bonus id failed")); + goto fail; + } + req_msg->secure_bonus = nla_get_u32( + tb[QCA_WLAN_VENDOR_ATTR_EPNO_SECURE_BONUS]); + + /* Parse and fetch band_5ghz_bonus */ + if (!tb[QCA_WLAN_VENDOR_ATTR_EPNO_BAND5GHZ_BONUS]) { + hddLog(LOGE, FL("band_5ghz_bonus id failed")); + goto fail; + } + req_msg->band_5ghz_bonus = nla_get_u32( + tb[QCA_WLAN_VENDOR_ATTR_EPNO_BAND5GHZ_BONUS]); + + hddLog(LOG1, + FL("min_5ghz_rssi: %d min_24ghz_rssi: %d initial_score_max: %d current_connection_bonus: %d"), + req_msg->min_5ghz_rssi, + req_msg->min_24ghz_rssi, + req_msg->initial_score_max, + req_msg->current_connection_bonus); + hddLog(LOG1, + FL("same_network_bonus: %d secure_bonus: %d band_5ghz_bonus: %d"), + req_msg->same_network_bonus, + req_msg->secure_bonus, + req_msg->band_5ghz_bonus); + + if (hdd_extscan_epno_fill_network_list(hdd_ctx, req_msg, tb)) + goto fail; + + } status = sme_set_epno_list(hdd_ctx->hHal, req_msg); if (!HAL_STATUS_SUCCESS(status)) { diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h index 71798c71cea2..799b11fa49ea 100644 --- a/CORE/MAC/inc/sirApi.h +++ b/CORE/MAC/inc/sirApi.h @@ -5412,31 +5412,47 @@ typedef struct } tSirExtScanOnScanEventIndParams, *tpSirExtScanOnScanEventIndParams; +#define MAX_EPNO_NETWORKS 64 + /** * struct wifi_epno_network - enhanced pno network block * @ssid: ssid - * @rssi_threshold: threshold for considering this SSID as found, required - * granularity for this threshold is 4dBm to 8dBm * @flags: WIFI_PNO_FLAG_XXX * @auth_bit_field: auth bit field for matching WPA IE */ struct wifi_epno_network { tSirMacSSid ssid; - int8_t rssi_threshold; uint8_t flags; uint8_t auth_bit_field; }; /** * struct wifi_epno_params - enhanced pno network params + * @request_id: request id number + * @session_id: session_id number + * @min_5ghz_rssi: minimum 5GHz RSSI for a BSSID to be considered + * @min_24ghz_rssi: minimum 2.4GHz RSSI for a BSSID to be considered + * @initial_score_max: maximum score that a network can have before bonuses + * @current_connection_bonus: only report when there is a network's score this + * much higher than the current connection + * @same_network_bonus: score bonus for all n/w with the same network flag + * @secure_bonus: score bonus for networks that are not open + * @band_5ghz_bonus: 5GHz RSSI score bonus (applied to all 5GHz networks) * @num_networks: number of ssids - * @networks: PNO networks + * @networks: EPNO networks */ struct wifi_epno_params { uint32_t request_id; uint32_t session_id; + uint32_t min_5ghz_rssi; + uint32_t min_24ghz_rssi; + uint32_t initial_score_max; + uint32_t current_connection_bonus; + uint32_t same_network_bonus; + uint32_t secure_bonus; + uint32_t band_5ghz_bonus; uint32_t num_networks; struct wifi_epno_network networks[]; }; diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index e23c3414767d..aac2ea94626f 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -25691,6 +25691,7 @@ static int wma_set_epno_network_list(tp_wma_handle wma, { wmi_nlo_config_cmd_fixed_param *cmd; nlo_configured_parameters *nlo_list; + enlo_candidate_score_params *cand_score_params; u_int8_t i, *buf_ptr; wmi_buf_t buf; uint32_t len; @@ -25708,11 +25709,22 @@ static int wma_set_epno_network_list(tp_wma_handle wma, return -EINVAL; } - /* TLV place holder for array of structures - * nlo_configured_parameters(nlo_list) */ - len = sizeof(*cmd) + WMI_TLV_HDR_SIZE; - len += sizeof(nlo_configured_parameters) * - MIN(req->num_networks, WMI_NLO_MAX_SSIDS); + /* Fixed Params */ + len = sizeof(*cmd); + if (req->num_networks) { + /* TLV place holder for array of structures + * then each nlo_configured_parameters(nlo_list) TLV. + */ + len += WMI_TLV_HDR_SIZE; + len += (sizeof(nlo_configured_parameters) + * VOS_MIN(req->num_networks, WMI_NLO_MAX_SSIDS)); + /* TLV for array of uint32 channel_list */ + len += WMI_TLV_HDR_SIZE; + /* TLV for nlo_channel_prediction_cfg */ + len += WMI_TLV_HDR_SIZE; + /* TLV for candidate score params */ + len += sizeof(enlo_candidate_score_params); + } buf = wmi_buf_alloc(wma->wmi_handle, len); if (!buf) { @@ -25728,53 +25740,88 @@ static int wma_set_epno_network_list(tp_wma_handle wma, WMITLV_GET_STRUCT_TLVLEN( wmi_nlo_config_cmd_fixed_param)); cmd->vdev_id = req->session_id; - cmd->flags = WMI_NLO_CONFIG_ENLO; + + /* set flag to reset if num of networks are 0 */ + cmd->flags = (req->num_networks == 0 ? + WMI_NLO_CONFIG_ENLO_RESET : WMI_NLO_CONFIG_ENLO); buf_ptr += sizeof(wmi_nlo_config_cmd_fixed_param); cmd->no_of_ssids = MIN(req->num_networks, WMI_NLO_MAX_SSIDS); - WMA_LOGD("SSID count: %d", cmd->no_of_ssids); - WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, - cmd->no_of_ssids * sizeof(nlo_configured_parameters)); - buf_ptr += WMI_TLV_HDR_SIZE; - - nlo_list = (nlo_configured_parameters *) buf_ptr; - for (i = 0; i < cmd->no_of_ssids; i++) { - WMITLV_SET_HDR(&nlo_list[i].tlv_header, - WMITLV_TAG_ARRAY_BYTE, - WMITLV_GET_STRUCT_TLVLEN(nlo_configured_parameters)); - /* Copy ssid and it's length */ - nlo_list[i].ssid.valid = TRUE; - nlo_list[i].ssid.ssid.ssid_len = req->networks[i].ssid.length; - vos_mem_copy(nlo_list[i].ssid.ssid.ssid, - req->networks[i].ssid.ssId, - nlo_list[i].ssid.ssid.ssid_len); - WMA_LOGD("index: %d ssid: %.*s len: %d", i, - nlo_list[i].ssid.ssid.ssid_len, - (char *) nlo_list[i].ssid.ssid.ssid, - nlo_list[i].ssid.ssid.ssid_len); + WMA_LOGD(FL("SSID count: %d flags: %d"), + cmd->no_of_ssids, cmd->flags); - /* Copy rssi threshold */ - nlo_list[i].rssi_cond.valid = TRUE; - nlo_list[i].rssi_cond.rssi = - req->networks[i].rssi_threshold; - WMA_LOGD("RSSI threshold : %d dBm", - nlo_list[i].rssi_cond.rssi); + /* Fill nlo_config only when num_networks are non zero */ + if (cmd->no_of_ssids) { + /* Fill networks */ + WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, + cmd->no_of_ssids * sizeof(nlo_configured_parameters)); + buf_ptr += WMI_TLV_HDR_SIZE; - /* Copy pno flags */ - nlo_list[i].bcast_nw_type.valid = TRUE; - nlo_list[i].bcast_nw_type.bcast_nw_type = - req->networks[i].flags; - WMA_LOGD("PNO flags (%u)", + nlo_list = (nlo_configured_parameters *) buf_ptr; + for (i = 0; i < cmd->no_of_ssids; i++) { + WMITLV_SET_HDR(&nlo_list[i].tlv_header, + WMITLV_TAG_ARRAY_BYTE, + WMITLV_GET_STRUCT_TLVLEN + (nlo_configured_parameters)); + /* Copy ssid and it's length */ + nlo_list[i].ssid.valid = TRUE; + nlo_list[i].ssid.ssid.ssid_len = + req->networks[i].ssid.length; + vos_mem_copy(nlo_list[i].ssid.ssid.ssid, + req->networks[i].ssid.ssId, + nlo_list[i].ssid.ssid.ssid_len); + WMA_LOGD("index: %d ssid: %.*s len: %d", i, + nlo_list[i].ssid.ssid.ssid_len, + (char *) nlo_list[i].ssid.ssid.ssid, + nlo_list[i].ssid.ssid.ssid_len); + + /* Copy pno flags */ + nlo_list[i].bcast_nw_type.valid = TRUE; + nlo_list[i].bcast_nw_type.bcast_nw_type = + req->networks[i].flags; + WMA_LOGD("PNO flags (%u)", nlo_list[i].bcast_nw_type.bcast_nw_type); - /* Copy auth bit field */ - nlo_list[i].auth_type.valid = TRUE; - nlo_list[i].auth_type.auth_type = - req->networks[i].auth_bit_field; - WMA_LOGD("Auth bit field (%u)", - nlo_list[i].auth_type.auth_type); + /* Copy auth bit field */ + nlo_list[i].auth_type.valid = TRUE; + nlo_list[i].auth_type.auth_type = + req->networks[i].auth_bit_field; + WMA_LOGD("Auth bit field (%u)", + nlo_list[i].auth_type.auth_type); + } + + buf_ptr += cmd->no_of_ssids * sizeof(nlo_configured_parameters); + + /* Fill the channel list */ + WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_UINT32, 0); + buf_ptr += WMI_TLV_HDR_SIZE; + + /* Fill prediction_param */ + WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC, 0); + buf_ptr += WMI_TLV_HDR_SIZE; + + /* Fill epno candidate score params */ + cand_score_params = (enlo_candidate_score_params *) buf_ptr; + WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_STRUC_enlo_candidate_score_param, + WMITLV_GET_STRUCT_TLVLEN(enlo_candidate_score_params)); + cand_score_params->min5GHz_rssi = + req->min_5ghz_rssi; + cand_score_params->min24GHz_rssi = + req->min_24ghz_rssi; + cand_score_params->initial_score_max = + req->initial_score_max; + cand_score_params->current_connection_bonus = + req->current_connection_bonus; + cand_score_params->same_network_bonus = + req->same_network_bonus; + cand_score_params->secure_bonus = + req->secure_bonus; + cand_score_params->band5GHz_bonus = + req->band_5ghz_bonus; + buf_ptr += sizeof(enlo_candidate_score_params); } + ret = wmi_unified_cmd_send(wma->wmi_handle, buf, len, WMI_NETWORK_LIST_OFFLOAD_CONFIG_CMDID); if (ret) { diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c index ca0331bbf825..e61ffd110474 100644 --- a/CORE/SME/src/sme_common/sme_Api.c +++ b/CORE/SME/src/sme_common/sme_Api.c @@ -15345,7 +15345,8 @@ eHalStatus sme_set_epno_list(tHalHandle hal, smsLog(mac, LOG1, FL("enter")); len = sizeof(*req_msg) + - (input->num_networks * sizeof(struct wifi_epno_network)); + (input->num_networks * sizeof(struct wifi_epno_network)); + req_msg = vos_mem_malloc(len); if (!req_msg) { smsLog(mac, LOGE, FL("vos_mem_malloc failed")); @@ -15356,17 +15357,28 @@ eHalStatus sme_set_epno_list(tHalHandle hal, req_msg->num_networks = input->num_networks; req_msg->request_id = input->request_id; req_msg->session_id = input->session_id; - for (i = 0; i < req_msg->num_networks; i++) { - req_msg->networks[i].rssi_threshold = - input->networks[i].rssi_threshold; - req_msg->networks[i].flags = input->networks[i].flags; - req_msg->networks[i].auth_bit_field = - input->networks[i].auth_bit_field; - req_msg->networks[i].ssid.length = - input->networks[i].ssid.length; - vos_mem_copy(req_msg->networks[i].ssid.ssId, - input->networks[i].ssid.ssId, - req_msg->networks[i].ssid.length); + + /* Fill only when num_networks are non zero */ + if (req_msg->num_networks) { + req_msg->min_5ghz_rssi = input->min_5ghz_rssi; + req_msg->min_24ghz_rssi = input->min_24ghz_rssi; + req_msg->initial_score_max = input->initial_score_max; + req_msg->same_network_bonus = input->same_network_bonus; + req_msg->secure_bonus = input->secure_bonus; + req_msg->band_5ghz_bonus = input->band_5ghz_bonus; + req_msg->current_connection_bonus = + input->current_connection_bonus; + + for (i = 0; i < req_msg->num_networks; i++) { + req_msg->networks[i].flags = input->networks[i].flags; + req_msg->networks[i].auth_bit_field = + input->networks[i].auth_bit_field; + req_msg->networks[i].ssid.length = + input->networks[i].ssid.length; + vos_mem_copy(req_msg->networks[i].ssid.ssId, + input->networks[i].ssid.ssId, + req_msg->networks[i].ssid.length); + } } status = sme_AcquireGlobalLock(&mac->sme); |
