qcacld-3.0: Reduce hdd_hostapd_sap_event_cb frame size

In function hdd_hostapd_sap_event_cb frame size exceeds 1024 bytes
due to changes to some structures in msm-4.4 kernel, so compilation
for 32-bit systems might fail
Thus, reduce structure allocations on heap instead of stack in
hdd_hostapd_sap_event_cb.

Change-Id: Ie710afbd6c066a3d770c6c9aac0cfd675ea57f53
CRs-fixed: 1046882
Этот коммит содержится в:
Manjeet Singh
2016-07-28 15:57:38 +05:30
коммит произвёл Vishwajith Upendra
родитель d180c5ece8
Коммит d295b1d8fd

Просмотреть файл

@@ -1325,17 +1325,22 @@ QDF_STATUS hdd_hostapd_sap_event_cb(tpSap_Event pSapEvent,
HDD_SAP_WAKE_LOCK_DURATION,
WIFI_POWER_EVENT_WAKELOCK_SAP);
{
struct station_info staInfo;
struct station_info *sta_info;
uint16_t iesLen =
pSapEvent->sapevt.
sapStationAssocReassocCompleteEvent.iesLen;
memset(&staInfo, 0, sizeof(staInfo));
sta_info = qdf_mem_malloc(sizeof(*sta_info));
if (!sta_info) {
hdd_err("Failed to allocate station info");
return QDF_STATUS_E_FAILURE;
}
memset(sta_info, 0, sizeof(*sta_info));
if (iesLen <= MAX_ASSOC_IND_IE_LEN) {
staInfo.assoc_req_ies =
sta_info->assoc_req_ies =
(const u8 *)&pSapEvent->sapevt.
sapStationAssocReassocCompleteEvent.ies[0];
staInfo.assoc_req_ies_len = iesLen;
sta_info->assoc_req_ies_len = iesLen;
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && !defined(WITH_BACKPORTS)
/*
* After Kernel 4.0, it's no longer need to set
@@ -1343,18 +1348,18 @@ QDF_STATUS hdd_hostapd_sap_event_cb(tpSap_Event pSapEvent,
* changed to use assoc_req_ies_len length to
* check the existance of request IE.
*/
staInfo.filled |= STATION_INFO_ASSOC_REQ_IES;
sta_info->filled |= STATION_INFO_ASSOC_REQ_IES;
#endif
cfg80211_new_sta(dev,
(const u8 *)&pSapEvent->sapevt.
sapStationAssocReassocCompleteEvent.
staMac.bytes[0], &staInfo,
staMac.bytes[0], sta_info,
GFP_KERNEL);
} else {
hdd_err("Assoc Ie length is too long");
}
qdf_mem_free(sta_info);
}
pScanInfo = &pHostapdAdapter->scan_info;
/* Lets do abort scan to ensure smooth authentication for client */
if ((pScanInfo != NULL) && pScanInfo->mScanPending) {
@@ -1746,6 +1751,7 @@ QDF_STATUS hdd_hostapd_sap_event_cb(tpSap_Event pSapEvent,
}
wireless_send_event(dev, we_event, &wrqu,
(char *)we_custom_event_generic);
return QDF_STATUS_SUCCESS;
stopbss: