diff options
| author | Srinivas Girigowda <sgirigow@qca.qualcomm.com> | 2014-07-14 14:11:50 -0700 |
|---|---|---|
| committer | Pitani Venkata Rajesh Kumar <c_vpitan@qti.qualcomm.com> | 2014-08-20 13:16:53 +0530 |
| commit | d23aaae4b7ac8dcf54cdb5877ab47c6f468ba92b (patch) | |
| tree | 98da8a87ef2be223592e3cab5498f0eccf121aca | |
| parent | 80a5941c16c67f77b899fde16abcdb8aaf6a3e01 (diff) | |
qcacld: extscan: Change double pointer to variable length array
Change double pointer to variable length array
Change-Id: I7612897460586f26bd6645469fb2f8fd62ce2491
CRs-Fixed: 710071
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 170 | ||||
| -rw-r--r-- | CORE/MAC/inc/sirApi.h | 7 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 19 |
3 files changed, 109 insertions, 87 deletions
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index c3d0559e1349..6922626cfe6a 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -13691,13 +13691,12 @@ int wlan_hdd_cfg80211_set_ap_channel_width(struct wiphy *wiphy, #ifdef FEATURE_WLAN_EXTSCAN -static void wlan_hdd_cfg80211_extscan_get_capabilities_ind(void *ctx, - void *pMsg) +static void +wlan_hdd_cfg80211_extscan_get_capabilities_ind(void *ctx, + tpSirExtScanCapabilitiesEvent pData) { hdd_context_t *pHddCtx = (hdd_context_t *)ctx; struct sk_buff *skb = NULL; - tpSirExtScanCapabilitiesEvent pData = - (tpSirExtScanCapabilitiesEvent) pMsg; ENTER(); @@ -13772,11 +13771,11 @@ nla_put_failure: } -static void wlan_hdd_cfg80211_extscan_start_rsp(void *ctx, void *pMsg) +static void +wlan_hdd_cfg80211_extscan_start_rsp(void *ctx, tpSirExtScanStartRspParams pData) { - tpSirExtScanStartRspParams pData = (tpSirExtScanStartRspParams) pMsg; - hdd_context_t *pHddCtx = (hdd_context_t *)ctx; - struct sk_buff *skb = NULL; + hdd_context_t *pHddCtx = (hdd_context_t *)ctx; + struct sk_buff *skb = NULL; ENTER(); @@ -13814,11 +13813,11 @@ nla_put_failure: } -static void wlan_hdd_cfg80211_extscan_stop_rsp(void *ctx, void *pMsg) +static void +wlan_hdd_cfg80211_extscan_stop_rsp(void *ctx, tpSirExtScanStopRspParams pData) { - tpSirExtScanStopRspParams pData = (tpSirExtScanStopRspParams) pMsg; - hdd_context_t *pHddCtx = (hdd_context_t *)ctx; - struct sk_buff *skb = NULL; + hdd_context_t *pHddCtx = (hdd_context_t *)ctx; + struct sk_buff *skb = NULL; if (wlan_hdd_validate_context(pHddCtx) || !pData) { hddLog(VOS_TRACE_LEVEL_ERROR, FL("HDD context is not valid " @@ -13854,13 +13853,12 @@ nla_put_failure: } -static void wlan_hdd_cfg80211_extscan_set_bss_hotlist_rsp(void *ctx, - void *pMsg) +static void +wlan_hdd_cfg80211_extscan_set_bss_hotlist_rsp(void *ctx, + tpSirExtScanSetBssidHotListRspParams pData) { hdd_context_t *pHddCtx = (hdd_context_t *)ctx; struct sk_buff *skb = NULL; - tpSirExtScanSetBssidHotListRspParams pData = - (tpSirExtScanSetBssidHotListRspParams) pMsg; ENTER(); @@ -13897,13 +13895,12 @@ nla_put_failure: return; } -static void wlan_hdd_cfg80211_extscan_reset_bss_hotlist_rsp(void *ctx, - void *pMsg) +static void +wlan_hdd_cfg80211_extscan_reset_bss_hotlist_rsp(void *ctx, + tpSirExtScanResetBssidHotlistRspParams pData) { hdd_context_t *pHddCtx = (hdd_context_t *)ctx; struct sk_buff *skb = NULL; - tpSirExtScanResetBssidHotlistRspParams pData = - (tpSirExtScanResetBssidHotlistRspParams) pMsg; ENTER(); @@ -13941,13 +13938,12 @@ nla_put_failure: } -static void wlan_hdd_cfg80211_extscan_set_signf_wifi_change_rsp(void *ctx, - void *pMsg) +static void +wlan_hdd_cfg80211_extscan_set_signf_wifi_change_rsp(void *ctx, + tpSirExtScanSetSignificantChangeRspParams pData) { hdd_context_t *pHddCtx = (hdd_context_t *)ctx; struct sk_buff *skb = NULL; - tpSirExtScanSetSignificantChangeRspParams pData = - (tpSirExtScanSetSignificantChangeRspParams) pMsg; ENTER(); @@ -13986,13 +13982,12 @@ nla_put_failure: } -static void wlan_hdd_cfg80211_extscan_reset_signf_wifi_change_rsp(void *ctx, - void *pMsg) +static void +wlan_hdd_cfg80211_extscan_reset_signf_wifi_change_rsp(void *ctx, + tpSirExtScanResetSignificantChangeRspParams pData) { hdd_context_t *pHddCtx = (hdd_context_t *)ctx; struct sk_buff *skb = NULL; - tpSirExtScanResetSignificantChangeRspParams pData = - (tpSirExtScanResetSignificantChangeRspParams) pMsg; ENTER(); @@ -14030,13 +14025,13 @@ nla_put_failure: return; } -static void wlan_hdd_cfg80211_extscan_cached_results_ind(void *ctx, - void *pMsg) +static void +wlan_hdd_cfg80211_extscan_cached_results_ind(void *ctx, + tpSirWifiScanResultEvent pData) { hdd_context_t *pHddCtx = (hdd_context_t *)ctx; struct sk_buff *skb = NULL; tANI_U32 i; - tpSirWifiScanResultEvent pData = (tpSirWifiScanResultEvent) pMsg; ENTER(); @@ -14165,10 +14160,10 @@ fail: return; } -static void wlan_hdd_cfg80211_extscan_hotlist_match_ind(void *ctx, - void *pMsg) +static void +wlan_hdd_cfg80211_extscan_hotlist_match_ind(void *ctx, + tpSirWifiScanResultEvent pData) { - tpSirWifiScanResultEvent pData = (tpSirWifiScanResultEvent) pMsg; hdd_context_t *pHddCtx = (hdd_context_t *)ctx; struct sk_buff *skb = NULL; tANI_U32 i; @@ -14280,14 +14275,17 @@ fail: } -static void wlan_hdd_cfg80211_extscan_signif_wifi_change_results_ind(void *ctx, - void *pMsg) +static void +wlan_hdd_cfg80211_extscan_signif_wifi_change_results_ind( + void *ctx, + tpSirWifiSignificantChangeEvent pData) { - hdd_context_t *pHddCtx = (hdd_context_t *)ctx; + hdd_context_t *pHddCtx = (hdd_context_t *)ctx; struct sk_buff *skb = NULL; + tSirWifiSignificantChange *ap_info; + tANI_S32 *rssi; tANI_U32 i, j; - tpSirWifiSignificantChangeEvent pData = - (tpSirWifiSignificantChangeEvent) pMsg; + ENTER(); if (wlan_hdd_validate_context(pHddCtx) || !pData) { @@ -14310,17 +14308,21 @@ static void wlan_hdd_cfg80211_extscan_signif_wifi_change_results_ind(void *ctx, hddLog(VOS_TRACE_LEVEL_INFO, "Num results (%u)", pData->numResults); hddLog(VOS_TRACE_LEVEL_INFO, "More Data (%u)", pData->moreData); + ap_info = &pData->ap[0]; for (i = 0; i < pData->numResults; i++) { hddLog(VOS_TRACE_LEVEL_INFO, "[index=%d] " "Bssid (" MAC_ADDRESS_STR ") " "Channel (%u) " "numOfRssi (%d)", i, - MAC_ADDR_ARRAY(pData->ap[i]->bssid), - pData->ap[i]->channel, - pData->ap[i]->numOfRssi); - for (j = 0; j < pData->ap[i]->numOfRssi; j++) - hddLog(VOS_TRACE_LEVEL_INFO, "Rssi (%d)", pData->ap[i]->rssi[j]); + MAC_ADDR_ARRAY(ap_info->bssid), + ap_info->channel, + ap_info->numOfRssi); + rssi = &(ap_info)->rssi[0]; + for (j = 0; j < ap_info->numOfRssi; j++) + hddLog(VOS_TRACE_LEVEL_INFO, "Rssi (%d)", *rssi++); + + ap_info += ap_info->numOfRssi * sizeof(*rssi); } if (nla_put_u32(skb, QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_REQUEST_ID, @@ -14339,6 +14341,7 @@ static void wlan_hdd_cfg80211_extscan_signif_wifi_change_results_ind(void *ctx, if (!aps) goto fail; + ap_info = &pData->ap[0]; for (i = 0; i < pData->numResults; i++) { struct nlattr *ap; @@ -14348,19 +14351,21 @@ static void wlan_hdd_cfg80211_extscan_signif_wifi_change_results_ind(void *ctx, if (nla_put(skb, QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SIGNIFICANT_CHANGE_RESULT_BSSID, - sizeof(tSirMacAddr), pData->ap[i]->bssid) || + sizeof(tSirMacAddr), ap_info->bssid) || nla_put_u32(skb, QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SIGNIFICANT_CHANGE_RESULT_CHANNEL, - pData->ap[i]->channel) || + ap_info->channel) || nla_put_u32(skb, QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SIGNIFICANT_CHANGE_RESULT_NUM_RSSI, - pData->ap[i]->numOfRssi) || + ap_info->numOfRssi) || nla_put(skb, QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SIGNIFICANT_CHANGE_RESULT_RSSI_LIST, - sizeof(s32) * pData->ap[i]->numOfRssi, pData->ap[i]->rssi)) + sizeof(s32) * ap_info->numOfRssi, &(ap_info)->rssi[0])) goto fail; nla_nest_end(skb, ap); + + ap_info += ap_info->numOfRssi * sizeof(*rssi); } nla_nest_end(skb, aps); @@ -14379,13 +14384,12 @@ fail: } -static void wlan_hdd_cfg80211_extscan_full_scan_result_event(void *ctx, - void *pMsg) +static void +wlan_hdd_cfg80211_extscan_full_scan_result_event(void *ctx, + tpSirWifiFullScanResultEvent pData) { hdd_context_t *pHddCtx = (hdd_context_t *)ctx; struct sk_buff *skb = NULL; - tpSirWifiFullScanResultEvent pData = - (tpSirWifiFullScanResultEvent) pMsg; ENTER(); @@ -14475,13 +14479,12 @@ nla_put_failure: return; } -static void wlan_hdd_cfg80211_extscan_scan_res_available_event(void *ctx, - void *pMsg) +static void +wlan_hdd_cfg80211_extscan_scan_res_available_event(void *ctx, + tpSirExtScanResultsAvailableIndParams pData) { hdd_context_t *pHddCtx = (hdd_context_t *)ctx; struct sk_buff *skb = NULL; - tpSirExtScanResultsAvailableIndParams pData = - (tpSirExtScanResultsAvailableIndParams) pMsg; ENTER(); @@ -14522,13 +14525,12 @@ nla_put_failure: return; } -static void wlan_hdd_cfg80211_extscan_scan_progress_event(void *ctx, - void *pMsg) +static void +wlan_hdd_cfg80211_extscan_scan_progress_event(void *ctx, + tpSirExtScanOnScanEventIndParams pData) { hdd_context_t *pHddCtx = (hdd_context_t *)ctx; struct sk_buff *skb = NULL; - tpSirExtScanOnScanEventIndParams pData = - (tpSirExtScanOnScanEventIndParams) pMsg; ENTER(); @@ -14548,10 +14550,13 @@ static void wlan_hdd_cfg80211_extscan_scan_progress_event(void *ctx, FL("cfg80211_vendor_event_alloc failed")); return; } + hddLog(VOS_TRACE_LEVEL_INFO, "Request Id (%u)", pData->requestId); hddLog(VOS_TRACE_LEVEL_INFO, "Scan event type (%u)", pData->scanEventType); hddLog(VOS_TRACE_LEVEL_INFO, "Scan event status (%u)", pData->status); - if (nla_put_u8(skb, QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_EVENT_TYPE, + if (nla_put_u32(skb, QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_REQUEST_ID, + pData->requestId) || + nla_put_u8(skb, QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_EVENT_TYPE, pData->scanEventType) || nla_put_u32(skb, QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_SCAN_EVENT_STATUS, @@ -14570,7 +14575,7 @@ nla_put_failure: void wlan_hdd_cfg80211_extscan_callback(void *ctx, const tANI_U16 evType, - void *pMsg) + void *pMsg) { hdd_context_t *pHddCtx = (hdd_context_t *)ctx; @@ -14584,11 +14589,13 @@ void wlan_hdd_cfg80211_extscan_callback(void *ctx, const tANI_U16 evType, switch (evType) { case eSIR_EXTSCAN_START_RSP: - wlan_hdd_cfg80211_extscan_start_rsp(ctx, pMsg); + wlan_hdd_cfg80211_extscan_start_rsp(ctx, + (tpSirExtScanStartRspParams)pMsg); break; case eSIR_EXTSCAN_STOP_RSP: - wlan_hdd_cfg80211_extscan_stop_rsp(ctx, pMsg); + wlan_hdd_cfg80211_extscan_stop_rsp(ctx, + (tpSirExtScanStopRspParams)pMsg); break; case eSIR_EXTSCAN_CACHED_RESULTS_RSP: @@ -14599,48 +14606,59 @@ void wlan_hdd_cfg80211_extscan_callback(void *ctx, const tANI_U16 evType, break; case eSIR_EXTSCAN_SET_BSSID_HOTLIST_RSP: - wlan_hdd_cfg80211_extscan_set_bss_hotlist_rsp(ctx, pMsg); + wlan_hdd_cfg80211_extscan_set_bss_hotlist_rsp(ctx, + (tpSirExtScanSetBssidHotListRspParams)pMsg); break; case eSIR_EXTSCAN_RESET_BSSID_HOTLIST_RSP: - wlan_hdd_cfg80211_extscan_reset_bss_hotlist_rsp(ctx, pMsg); + wlan_hdd_cfg80211_extscan_reset_bss_hotlist_rsp(ctx, + (tpSirExtScanResetBssidHotlistRspParams)pMsg); break; case eSIR_EXTSCAN_SET_SIGNIFICANT_WIFI_CHANGE_RSP: - wlan_hdd_cfg80211_extscan_set_signf_wifi_change_rsp(ctx, pMsg); + wlan_hdd_cfg80211_extscan_set_signf_wifi_change_rsp(ctx, + (tpSirExtScanSetSignificantChangeRspParams)pMsg); break; case eSIR_EXTSCAN_RESET_SIGNIFICANT_WIFI_CHANGE_RSP: - wlan_hdd_cfg80211_extscan_reset_signf_wifi_change_rsp(ctx, pMsg); + wlan_hdd_cfg80211_extscan_reset_signf_wifi_change_rsp(ctx, + (tpSirExtScanResetSignificantChangeRspParams)pMsg); break; case eSIR_EXTSCAN_GET_CAPABILITIES_IND: - wlan_hdd_cfg80211_extscan_get_capabilities_ind(ctx, pMsg); + wlan_hdd_cfg80211_extscan_get_capabilities_ind(ctx, + (tpSirExtScanCapabilitiesEvent)pMsg); break; case eSIR_EXTSCAN_HOTLIST_MATCH_IND: - wlan_hdd_cfg80211_extscan_hotlist_match_ind(ctx, pMsg); + wlan_hdd_cfg80211_extscan_hotlist_match_ind(ctx, + (tpSirWifiScanResultEvent)pMsg); break; case eSIR_EXTSCAN_SIGNIFICANT_WIFI_CHANGE_RESULTS_IND: - wlan_hdd_cfg80211_extscan_signif_wifi_change_results_ind(ctx, - pMsg); + wlan_hdd_cfg80211_extscan_signif_wifi_change_results_ind( + ctx, + (tpSirWifiSignificantChangeEvent)pMsg); break; case eSIR_EXTSCAN_CACHED_RESULTS_IND: - wlan_hdd_cfg80211_extscan_cached_results_ind(ctx, pMsg); + wlan_hdd_cfg80211_extscan_cached_results_ind(ctx, + (tpSirWifiScanResultEvent)pMsg); break; case eSIR_EXTSCAN_SCAN_RES_AVAILABLE_IND: - wlan_hdd_cfg80211_extscan_scan_res_available_event(ctx, pMsg); + wlan_hdd_cfg80211_extscan_scan_res_available_event(ctx, + (tpSirExtScanResultsAvailableIndParams)pMsg); break; case eSIR_EXTSCAN_FULL_SCAN_RESULT_IND: - wlan_hdd_cfg80211_extscan_full_scan_result_event(ctx, pMsg); + wlan_hdd_cfg80211_extscan_full_scan_result_event(ctx, + (tpSirWifiFullScanResultEvent)pMsg); break; case eSIR_EXTSCAN_SCAN_PROGRESS_EVENT_IND: - wlan_hdd_cfg80211_extscan_scan_progress_event(ctx, pMsg); + wlan_hdd_cfg80211_extscan_scan_progress_event(ctx, + (tpSirExtScanOnScanEventIndParams)pMsg); break; default: diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h index 6217bb47cdad..c56d506223c4 100644 --- a/CORE/MAC/inc/sirApi.h +++ b/CORE/MAC/inc/sirApi.h @@ -5049,7 +5049,7 @@ typedef struct tANI_U32 numOfRssi; /* Rssi history in db */ - tANI_S32 *rssi; + tANI_S32 rssi[]; } tSirWifiSignificantChange, *tpSirWifiSignificantChange; typedef struct @@ -5058,7 +5058,7 @@ typedef struct tANI_BOOLEAN moreData; tANI_U32 numResults; - tSirWifiSignificantChange **ap; + tSirWifiSignificantChange ap[]; } tSirWifiSignificantChangeEvent, *tpSirWifiSignificantChangeEvent; typedef struct @@ -5096,8 +5096,9 @@ typedef struct typedef struct { - tANI_U8 scanEventType; + tANI_U32 requestId; tANI_U32 status; + tANI_U8 scanEventType; } tSirExtScanOnScanEventIndParams, *tpSirExtScanOnScanEventIndParams; diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 8ea40dfda88b..7c1fbf8d0b88 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -2233,6 +2233,9 @@ static int wma_extscan_operations_event_handler(void *handle, vos_mem_free(oprn_ind); return -EINVAL; } + + oprn_ind->requestId = oprn_event->request_id; + switch (oprn_event->event) { case WMI_EXTSCAN_CYCLE_COMPLETED_EVENT: oprn_ind->scanEventType = WIFI_SCAN_COMPLETE; @@ -2538,7 +2541,7 @@ static int wma_extscan_change_results_event_handler(void *handle, WMI_EXTSCAN_WLAN_CHANGE_RESULTS_EVENTID_param_tlvs *param_buf; wmi_extscan_wlan_change_results_event_fixed_param *event; tSirWifiSignificantChangeEvent *dest_chglist; - tSirWifiSignificantChange **dest_ap; + tSirWifiSignificantChange *dest_ap; wmi_extscan_wlan_change_result_bssid *src_chglist; int numap; @@ -2592,18 +2595,18 @@ static int wma_extscan_change_results_event_handler(void *handle, } dest_ap = &dest_chglist->ap[0]; for (i = 0; i < numap; i++) { - (*dest_ap)->channel = src_chglist->channel; + dest_ap->channel = src_chglist->channel; WMI_MAC_ADDR_TO_CHAR_ARRAY(&src_chglist->bssid, - (*dest_ap)->bssid); - (*dest_ap)->numOfRssi = + dest_ap->bssid); + dest_ap->numOfRssi = src_chglist->num_rssi_samples; - if ((*dest_ap)->numOfRssi) { - for (k = 0; k < (*dest_ap)->numOfRssi; k++) { - (*dest_ap)->rssi[k] = WMA_TGT_NOISE_FLOOR_DBM + + if (dest_ap->numOfRssi) { + for (k = 0; k < dest_ap->numOfRssi; k++) { + dest_ap->rssi[k] = WMA_TGT_NOISE_FLOOR_DBM + src_rssi[count++]; } } - dest_ap++; + dest_ap += dest_ap->numOfRssi * sizeof(tANI_S32); src_chglist++; } dest_chglist->requestId = event->request_id; |
