| /***************************************************************************** |
| |
| (c) Cambridge Silicon Radio Limited 2011 |
| All rights reserved and confidential information of CSR |
| |
| Refer to LICENSE.txt included with this source for details |
| on the license terms. |
| |
| *****************************************************************************/ |
| |
| /* Note: this is an auto-generated file. */ |
| #include <linux/slab.h> |
| #include "csr_wifi_sme_prim.h" |
| #include "csr_wifi_sme_lib.h" |
| |
| /*----------------------------------------------------------------------------* |
| * NAME |
| * CsrWifiSmeFreeUpstreamMessageContents |
| * |
| * DESCRIPTION |
| * |
| * |
| * PARAMETERS |
| * eventClass: only the value CSR_WIFI_SME_PRIM will be handled |
| * message: the message to free |
| *----------------------------------------------------------------------------*/ |
| void CsrWifiSmeFreeUpstreamMessageContents(u16 eventClass, void *message) |
| { |
| if (eventClass != CSR_WIFI_SME_PRIM) |
| { |
| return; |
| } |
| if (NULL == message) |
| { |
| return; |
| } |
| |
| switch (*((CsrWifiSmePrim *) message)) |
| { |
| case CSR_WIFI_SME_ASSOCIATION_COMPLETE_IND: |
| { |
| CsrWifiSmeAssociationCompleteInd *p = (CsrWifiSmeAssociationCompleteInd *)message; |
| kfree(p->connectionInfo.beaconFrame); |
| p->connectionInfo.beaconFrame = NULL; |
| kfree(p->connectionInfo.associationReqFrame); |
| p->connectionInfo.associationReqFrame = NULL; |
| kfree(p->connectionInfo.associationRspFrame); |
| p->connectionInfo.associationRspFrame = NULL; |
| kfree(p->connectionInfo.assocScanInfoElements); |
| p->connectionInfo.assocScanInfoElements = NULL; |
| kfree(p->connectionInfo.assocReqInfoElements); |
| p->connectionInfo.assocReqInfoElements = NULL; |
| kfree(p->connectionInfo.assocRspInfoElements); |
| p->connectionInfo.assocRspInfoElements = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_BLACKLIST_CFM: |
| { |
| CsrWifiSmeBlacklistCfm *p = (CsrWifiSmeBlacklistCfm *)message; |
| kfree(p->getAddresses); |
| p->getAddresses = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_CALIBRATION_DATA_GET_CFM: |
| { |
| CsrWifiSmeCalibrationDataGetCfm *p = (CsrWifiSmeCalibrationDataGetCfm *)message; |
| kfree(p->calibrationData); |
| p->calibrationData = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_CONNECTION_CONFIG_GET_CFM: |
| { |
| CsrWifiSmeConnectionConfigGetCfm *p = (CsrWifiSmeConnectionConfigGetCfm *)message; |
| kfree(p->connectionConfig.mlmeAssociateReqInformationElements); |
| p->connectionConfig.mlmeAssociateReqInformationElements = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_CONNECTION_INFO_GET_CFM: |
| { |
| CsrWifiSmeConnectionInfoGetCfm *p = (CsrWifiSmeConnectionInfoGetCfm *)message; |
| kfree(p->connectionInfo.beaconFrame); |
| p->connectionInfo.beaconFrame = NULL; |
| kfree(p->connectionInfo.associationReqFrame); |
| p->connectionInfo.associationReqFrame = NULL; |
| kfree(p->connectionInfo.associationRspFrame); |
| p->connectionInfo.associationRspFrame = NULL; |
| kfree(p->connectionInfo.assocScanInfoElements); |
| p->connectionInfo.assocScanInfoElements = NULL; |
| kfree(p->connectionInfo.assocReqInfoElements); |
| p->connectionInfo.assocReqInfoElements = NULL; |
| kfree(p->connectionInfo.assocRspInfoElements); |
| p->connectionInfo.assocRspInfoElements = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_MEDIA_STATUS_IND: |
| { |
| CsrWifiSmeMediaStatusInd *p = (CsrWifiSmeMediaStatusInd *)message; |
| kfree(p->connectionInfo.beaconFrame); |
| p->connectionInfo.beaconFrame = NULL; |
| kfree(p->connectionInfo.associationReqFrame); |
| p->connectionInfo.associationReqFrame = NULL; |
| kfree(p->connectionInfo.associationRspFrame); |
| p->connectionInfo.associationRspFrame = NULL; |
| kfree(p->connectionInfo.assocScanInfoElements); |
| p->connectionInfo.assocScanInfoElements = NULL; |
| kfree(p->connectionInfo.assocReqInfoElements); |
| p->connectionInfo.assocReqInfoElements = NULL; |
| kfree(p->connectionInfo.assocRspInfoElements); |
| p->connectionInfo.assocRspInfoElements = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_MIB_GET_CFM: |
| { |
| CsrWifiSmeMibGetCfm *p = (CsrWifiSmeMibGetCfm *)message; |
| kfree(p->mibAttribute); |
| p->mibAttribute = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_MIB_GET_NEXT_CFM: |
| { |
| CsrWifiSmeMibGetNextCfm *p = (CsrWifiSmeMibGetNextCfm *)message; |
| kfree(p->mibAttribute); |
| p->mibAttribute = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_MULTICAST_ADDRESS_CFM: |
| { |
| CsrWifiSmeMulticastAddressCfm *p = (CsrWifiSmeMulticastAddressCfm *)message; |
| kfree(p->getAddresses); |
| p->getAddresses = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_PMKID_CANDIDATE_LIST_IND: |
| { |
| CsrWifiSmePmkidCandidateListInd *p = (CsrWifiSmePmkidCandidateListInd *)message; |
| kfree(p->pmkidCandidates); |
| p->pmkidCandidates = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_PMKID_CFM: |
| { |
| CsrWifiSmePmkidCfm *p = (CsrWifiSmePmkidCfm *)message; |
| kfree(p->getPmkids); |
| p->getPmkids = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_SCAN_CONFIG_GET_CFM: |
| { |
| CsrWifiSmeScanConfigGetCfm *p = (CsrWifiSmeScanConfigGetCfm *)message; |
| kfree(p->scanConfig.passiveChannelList); |
| p->scanConfig.passiveChannelList = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_SCAN_RESULT_IND: |
| { |
| CsrWifiSmeScanResultInd *p = (CsrWifiSmeScanResultInd *)message; |
| kfree(p->result.informationElements); |
| p->result.informationElements = NULL; |
| switch (p->result.p2pDeviceRole) |
| { |
| case CSR_WIFI_SME_P2P_ROLE_GO: |
| { |
| u16 i4; |
| for (i4 = 0; i4 < p->result.deviceInfo.groupInfo.p2pClientInfoCount; i4++) |
| { |
| kfree(p->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType); |
| p->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType = NULL; |
| } |
| } |
| kfree(p->result.deviceInfo.groupInfo.p2PClientInfo); |
| p->result.deviceInfo.groupInfo.p2PClientInfo = NULL; |
| break; |
| case CSR_WIFI_SME_P2P_ROLE_STANDALONE: |
| kfree(p->result.deviceInfo.standalonedevInfo.secDeviceType); |
| p->result.deviceInfo.standalonedevInfo.secDeviceType = NULL; |
| break; |
| default: |
| break; |
| } |
| break; |
| } |
| case CSR_WIFI_SME_SCAN_RESULTS_GET_CFM: |
| { |
| CsrWifiSmeScanResultsGetCfm *p = (CsrWifiSmeScanResultsGetCfm *)message; |
| { |
| u16 i1; |
| for (i1 = 0; i1 < p->scanResultsCount; i1++) |
| { |
| kfree(p->scanResults[i1].informationElements); |
| p->scanResults[i1].informationElements = NULL; |
| switch (p->scanResults[i1].p2pDeviceRole) |
| { |
| case CSR_WIFI_SME_P2P_ROLE_GO: |
| { |
| u16 i4; |
| for (i4 = 0; i4 < p->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount; i4++) |
| { |
| kfree(p->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType); |
| p->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType = NULL; |
| } |
| } |
| kfree(p->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo); |
| p->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo = NULL; |
| break; |
| case CSR_WIFI_SME_P2P_ROLE_STANDALONE: |
| kfree(p->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType); |
| p->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType = NULL; |
| break; |
| default: |
| break; |
| } |
| } |
| } |
| kfree(p->scanResults); |
| p->scanResults = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_TSPEC_IND: |
| { |
| CsrWifiSmeTspecInd *p = (CsrWifiSmeTspecInd *)message; |
| kfree(p->tspec); |
| p->tspec = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_TSPEC_CFM: |
| { |
| CsrWifiSmeTspecCfm *p = (CsrWifiSmeTspecCfm *)message; |
| kfree(p->tspec); |
| p->tspec = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_VERSIONS_GET_CFM: |
| { |
| CsrWifiSmeVersionsGetCfm *p = (CsrWifiSmeVersionsGetCfm *)message; |
| kfree(p->versions.routerBuild); |
| p->versions.routerBuild = NULL; |
| kfree(p->versions.smeBuild); |
| p->versions.smeBuild = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_CLOAKED_SSIDS_GET_CFM: |
| { |
| CsrWifiSmeCloakedSsidsGetCfm *p = (CsrWifiSmeCloakedSsidsGetCfm *)message; |
| kfree(p->cloakedSsids.cloakedSsids); |
| p->cloakedSsids.cloakedSsids = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_ERROR_IND: |
| { |
| CsrWifiSmeErrorInd *p = (CsrWifiSmeErrorInd *)message; |
| kfree(p->errorMessage); |
| p->errorMessage = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_INFO_IND: |
| { |
| CsrWifiSmeInfoInd *p = (CsrWifiSmeInfoInd *)message; |
| kfree(p->infoMessage); |
| p->infoMessage = NULL; |
| break; |
| } |
| case CSR_WIFI_SME_CORE_DUMP_IND: |
| { |
| CsrWifiSmeCoreDumpInd *p = (CsrWifiSmeCoreDumpInd *)message; |
| kfree(p->data); |
| p->data = NULL; |
| break; |
| } |
| |
| default: |
| break; |
| } |
| } |
| |
| |