mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-25 02:09:42 +00:00
![Greg Kroah-Hartman](/assets/img/avatar_default.png)
Only one function was being used in the file, so move it to where it was being called and delete the rest of the file, and csr_unicode.h as it's no longer needed as well. Cc: Mikko Virkkilä <mikko.virkkila@bluegiga.com> Cc: Lauri Hintsala <Lauri.Hintsala@bluegiga.com> Cc: Riku Mettälä <riku.mettala@bluegiga.com> Cc: Veli-Pekka Peltola <veli-pekka.peltola@bluegiga.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
5809 lines
265 KiB
C
5809 lines
265 KiB
C
/*****************************************************************************
|
|
|
|
(c) Cambridge Silicon Radio Limited 2012
|
|
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/string.h>
|
|
#include <linux/slab.h>
|
|
#include "csr_msgconv.h"
|
|
#include "csr_wifi_sme_prim.h"
|
|
#include "csr_wifi_sme_serialize.h"
|
|
|
|
void CsrWifiSmePfree(void *ptr)
|
|
{
|
|
kfree(ptr);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeAdhocConfigSetReqSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
|
|
bufferSize += 2; /* u16 primitive->adHocConfig.atimWindowTu */
|
|
bufferSize += 2; /* u16 primitive->adHocConfig.beaconPeriodTu */
|
|
bufferSize += 2; /* u16 primitive->adHocConfig.joinOnlyAttempts */
|
|
bufferSize += 2; /* u16 primitive->adHocConfig.joinAttemptIntervalMs */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeAdhocConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeAdhocConfigSetReq *primitive = (CsrWifiSmeAdhocConfigSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.atimWindowTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.beaconPeriodTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.joinOnlyAttempts);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.joinAttemptIntervalMs);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeAdhocConfigSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeAdhocConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeAdhocConfigSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->adHocConfig.atimWindowTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->adHocConfig.beaconPeriodTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->adHocConfig.joinOnlyAttempts, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->adHocConfig.joinAttemptIntervalMs, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeBlacklistReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeBlacklistReq *primitive = (CsrWifiSmeBlacklistReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
|
|
bufferSize += 1; /* u8 primitive->setAddressCount */
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->setAddressCount; i1++)
|
|
{
|
|
bufferSize += 6; /* u8 primitive->setAddresses[i1].a[6] */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeBlacklistReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeBlacklistReq *primitive = (CsrWifiSmeBlacklistReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->action);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->setAddressCount);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->setAddressCount; i1++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->setAddresses[i1].a, ((u16) (6)));
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeBlacklistReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeBlacklistReq *primitive = kmalloc(sizeof(CsrWifiSmeBlacklistReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->setAddressCount, buffer, &offset);
|
|
primitive->setAddresses = NULL;
|
|
if (primitive->setAddressCount)
|
|
{
|
|
primitive->setAddresses = kmalloc(sizeof(CsrWifiMacAddress) * primitive->setAddressCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->setAddressCount; i1++)
|
|
{
|
|
CsrMemCpyDes(primitive->setAddresses[i1].a, buffer, &offset, ((u16) (6)));
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeBlacklistReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeBlacklistReq *primitive = (CsrWifiSmeBlacklistReq *) voidPrimitivePointer;
|
|
kfree(primitive->setAddresses);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeCalibrationDataSetReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeCalibrationDataSetReq *primitive = (CsrWifiSmeCalibrationDataSetReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 6) */
|
|
bufferSize += 2; /* u16 primitive->calibrationDataLength */
|
|
bufferSize += primitive->calibrationDataLength; /* u8 primitive->calibrationData */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeCalibrationDataSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeCalibrationDataSetReq *primitive = (CsrWifiSmeCalibrationDataSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->calibrationDataLength);
|
|
if (primitive->calibrationDataLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->calibrationData, ((u16) (primitive->calibrationDataLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeCalibrationDataSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeCalibrationDataSetReq *primitive = kmalloc(sizeof(CsrWifiSmeCalibrationDataSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->calibrationDataLength, buffer, &offset);
|
|
if (primitive->calibrationDataLength)
|
|
{
|
|
primitive->calibrationData = kmalloc(primitive->calibrationDataLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->calibrationData, buffer, &offset, ((u16) (primitive->calibrationDataLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->calibrationData = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeCalibrationDataSetReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeCalibrationDataSetReq *primitive = (CsrWifiSmeCalibrationDataSetReq *) voidPrimitivePointer;
|
|
kfree(primitive->calibrationData);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeCcxConfigSetReqSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 9) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 1; /* u8 primitive->ccxConfig.keepAliveTimeMs */
|
|
bufferSize += 1; /* u8 primitive->ccxConfig.apRoamingEnabled */
|
|
bufferSize += 1; /* u8 primitive->ccxConfig.measurementsMask */
|
|
bufferSize += 1; /* u8 primitive->ccxConfig.ccxRadioMgtEnabled */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeCcxConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeCcxConfigSetReq *primitive = (CsrWifiSmeCcxConfigSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.keepAliveTimeMs);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.apRoamingEnabled);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.measurementsMask);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.ccxRadioMgtEnabled);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeCcxConfigSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeCcxConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeCcxConfigSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->ccxConfig.keepAliveTimeMs, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->ccxConfig.apRoamingEnabled, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->ccxConfig.measurementsMask, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->ccxConfig.ccxRadioMgtEnabled, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeCoexConfigSetReqSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 29) */
|
|
bufferSize += 1; /* u8 primitive->coexConfig.coexEnableSchemeManagement */
|
|
bufferSize += 1; /* u8 primitive->coexConfig.coexPeriodicWakeHost */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexTrafficBurstyLatencyMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexTrafficContinuousLatencyMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexObexBlackoutDurationMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexObexBlackoutPeriodMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpBrBlackoutDurationMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpBrBlackoutPeriodMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpEdrBlackoutDurationMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpEdrBlackoutPeriodMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexPagingBlackoutDurationMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexPagingBlackoutPeriodMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexInquiryBlackoutDurationMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexInquiryBlackoutPeriodMs */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeCoexConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeCoexConfigSetReq *primitive = (CsrWifiSmeCoexConfigSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->coexConfig.coexEnableSchemeManagement);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->coexConfig.coexPeriodicWakeHost);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexTrafficBurstyLatencyMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexTrafficContinuousLatencyMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexObexBlackoutDurationMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexObexBlackoutPeriodMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpBrBlackoutDurationMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpBrBlackoutPeriodMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpEdrBlackoutDurationMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpEdrBlackoutPeriodMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexPagingBlackoutDurationMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexPagingBlackoutPeriodMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexInquiryBlackoutDurationMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexInquiryBlackoutPeriodMs);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeCoexConfigSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeCoexConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeCoexConfigSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->coexConfig.coexEnableSchemeManagement, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->coexConfig.coexPeriodicWakeHost, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexTrafficBurstyLatencyMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexTrafficContinuousLatencyMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexObexBlackoutDurationMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexObexBlackoutPeriodMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpBrBlackoutDurationMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpBrBlackoutPeriodMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpEdrBlackoutDurationMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpEdrBlackoutPeriodMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexPagingBlackoutDurationMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexPagingBlackoutPeriodMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexInquiryBlackoutDurationMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexInquiryBlackoutPeriodMs, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeConnectReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeConnectReq *primitive = (CsrWifiSmeConnectReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 57) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 32; /* u8 primitive->connectionConfig.ssid.ssid[32] */
|
|
bufferSize += 1; /* u8 primitive->connectionConfig.ssid.length */
|
|
bufferSize += 6; /* u8 primitive->connectionConfig.bssid.a[6] */
|
|
bufferSize += 1; /* CsrWifiSmeBssType primitive->connectionConfig.bssType */
|
|
bufferSize += 1; /* CsrWifiSmeRadioIF primitive->connectionConfig.ifIndex */
|
|
bufferSize += 1; /* CsrWifiSme80211PrivacyMode primitive->connectionConfig.privacyMode */
|
|
bufferSize += 2; /* CsrWifiSmeAuthModeMask primitive->connectionConfig.authModeMask */
|
|
bufferSize += 2; /* CsrWifiSmeEncryptionMask primitive->connectionConfig.encryptionModeMask */
|
|
bufferSize += 2; /* u16 primitive->connectionConfig.mlmeAssociateReqInformationElementsLength */
|
|
bufferSize += primitive->connectionConfig.mlmeAssociateReqInformationElementsLength; /* u8 primitive->connectionConfig.mlmeAssociateReqInformationElements */
|
|
bufferSize += 1; /* CsrWifiSmeWmmQosInfoMask primitive->connectionConfig.wmmQosInfo */
|
|
bufferSize += 1; /* u8 primitive->connectionConfig.adhocJoinOnly */
|
|
bufferSize += 1; /* u8 primitive->connectionConfig.adhocChannel */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeConnectReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeConnectReq *primitive = (CsrWifiSmeConnectReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionConfig.ssid.ssid, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.ssid.length);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionConfig.bssid.a, ((u16) (6)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.bssType);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.ifIndex);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.privacyMode);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionConfig.authModeMask);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionConfig.encryptionModeMask);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionConfig.mlmeAssociateReqInformationElementsLength);
|
|
if (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionConfig.mlmeAssociateReqInformationElements, ((u16) (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)));
|
|
}
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.wmmQosInfo);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.adhocJoinOnly);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.adhocChannel);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeConnectReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeConnectReq *primitive = kmalloc(sizeof(CsrWifiSmeConnectReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionConfig.ssid.ssid, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.ssid.length, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionConfig.bssid.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.bssType, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.ifIndex, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.privacyMode, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionConfig.authModeMask, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionConfig.encryptionModeMask, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionConfig.mlmeAssociateReqInformationElementsLength, buffer, &offset);
|
|
if (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)
|
|
{
|
|
primitive->connectionConfig.mlmeAssociateReqInformationElements = kmalloc(primitive->connectionConfig.mlmeAssociateReqInformationElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionConfig.mlmeAssociateReqInformationElements, buffer, &offset, ((u16) (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionConfig.mlmeAssociateReqInformationElements = NULL;
|
|
}
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.wmmQosInfo, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.adhocJoinOnly, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.adhocChannel, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeConnectReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeConnectReq *primitive = (CsrWifiSmeConnectReq *) voidPrimitivePointer;
|
|
kfree(primitive->connectionConfig.mlmeAssociateReqInformationElements);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeHostConfigSetReqSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 1; /* CsrWifiSmeHostPowerMode primitive->hostConfig.powerMode */
|
|
bufferSize += 2; /* u16 primitive->hostConfig.applicationDataPeriodMs */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeHostConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeHostConfigSetReq *primitive = (CsrWifiSmeHostConfigSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->hostConfig.powerMode);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->hostConfig.applicationDataPeriodMs);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeHostConfigSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeHostConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeHostConfigSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->hostConfig.powerMode, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->hostConfig.applicationDataPeriodMs, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeKeyReqSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 65) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
|
|
bufferSize += 1; /* CsrWifiSmeKeyType primitive->key.keyType */
|
|
bufferSize += 1; /* u8 primitive->key.keyIndex */
|
|
bufferSize += 1; /* u8 primitive->key.wepTxKey */
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 8; i2++)
|
|
{
|
|
bufferSize += 2; /* u16 primitive->key.keyRsc[8] */
|
|
}
|
|
}
|
|
bufferSize += 1; /* u8 primitive->key.authenticator */
|
|
bufferSize += 6; /* u8 primitive->key.address.a[6] */
|
|
bufferSize += 1; /* u8 primitive->key.keyLength */
|
|
bufferSize += 32; /* u8 primitive->key.key[32] */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeKeyReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeKeyReq *primitive = (CsrWifiSmeKeyReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->action);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->key.keyType);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->key.keyIndex);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->key.wepTxKey);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 8; i2++)
|
|
{
|
|
CsrUint16Ser(ptr, len, (u16) primitive->key.keyRsc[i2]);
|
|
}
|
|
}
|
|
CsrUint8Ser(ptr, len, (u8) primitive->key.authenticator);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->key.address.a, ((u16) (6)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->key.keyLength);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->key.key, ((u16) (32)));
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeKeyReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeKeyReq *primitive = kmalloc(sizeof(CsrWifiSmeKeyReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->key.keyType, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->key.keyIndex, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->key.wepTxKey, buffer, &offset);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 8; i2++)
|
|
{
|
|
CsrUint16Des((u16 *) &primitive->key.keyRsc[i2], buffer, &offset);
|
|
}
|
|
}
|
|
CsrUint8Des((u8 *) &primitive->key.authenticator, buffer, &offset);
|
|
CsrMemCpyDes(primitive->key.address.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint8Des((u8 *) &primitive->key.keyLength, buffer, &offset);
|
|
CsrMemCpyDes(primitive->key.key, buffer, &offset, ((u16) (32)));
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeMibConfigSetReqSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
|
|
bufferSize += 1; /* u8 primitive->mibConfig.unifiFixMaxTxDataRate */
|
|
bufferSize += 1; /* u8 primitive->mibConfig.unifiFixTxDataRate */
|
|
bufferSize += 2; /* u16 primitive->mibConfig.dot11RtsThreshold */
|
|
bufferSize += 2; /* u16 primitive->mibConfig.dot11FragmentationThreshold */
|
|
bufferSize += 2; /* u16 primitive->mibConfig.dot11CurrentTxPowerLevel */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeMibConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeMibConfigSetReq *primitive = (CsrWifiSmeMibConfigSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->mibConfig.unifiFixMaxTxDataRate);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->mibConfig.unifiFixTxDataRate);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibConfig.dot11RtsThreshold);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibConfig.dot11FragmentationThreshold);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibConfig.dot11CurrentTxPowerLevel);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeMibConfigSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeMibConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeMibConfigSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->mibConfig.unifiFixMaxTxDataRate, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->mibConfig.unifiFixTxDataRate, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->mibConfig.dot11RtsThreshold, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->mibConfig.dot11FragmentationThreshold, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->mibConfig.dot11CurrentTxPowerLevel, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeMibGetNextReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeMibGetNextReq *primitive = (CsrWifiSmeMibGetNextReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 6) */
|
|
bufferSize += 2; /* u16 primitive->mibAttributeLength */
|
|
bufferSize += primitive->mibAttributeLength; /* u8 primitive->mibAttribute */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeMibGetNextReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeMibGetNextReq *primitive = (CsrWifiSmeMibGetNextReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibAttributeLength);
|
|
if (primitive->mibAttributeLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->mibAttribute, ((u16) (primitive->mibAttributeLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeMibGetNextReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeMibGetNextReq *primitive = kmalloc(sizeof(CsrWifiSmeMibGetNextReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->mibAttributeLength, buffer, &offset);
|
|
if (primitive->mibAttributeLength)
|
|
{
|
|
primitive->mibAttribute = kmalloc(primitive->mibAttributeLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->mibAttribute, buffer, &offset, ((u16) (primitive->mibAttributeLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->mibAttribute = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeMibGetNextReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeMibGetNextReq *primitive = (CsrWifiSmeMibGetNextReq *) voidPrimitivePointer;
|
|
kfree(primitive->mibAttribute);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeMibGetReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeMibGetReq *primitive = (CsrWifiSmeMibGetReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 6) */
|
|
bufferSize += 2; /* u16 primitive->mibAttributeLength */
|
|
bufferSize += primitive->mibAttributeLength; /* u8 primitive->mibAttribute */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeMibGetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeMibGetReq *primitive = (CsrWifiSmeMibGetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibAttributeLength);
|
|
if (primitive->mibAttributeLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->mibAttribute, ((u16) (primitive->mibAttributeLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeMibGetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeMibGetReq *primitive = kmalloc(sizeof(CsrWifiSmeMibGetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->mibAttributeLength, buffer, &offset);
|
|
if (primitive->mibAttributeLength)
|
|
{
|
|
primitive->mibAttribute = kmalloc(primitive->mibAttributeLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->mibAttribute, buffer, &offset, ((u16) (primitive->mibAttributeLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->mibAttribute = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeMibGetReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeMibGetReq *primitive = (CsrWifiSmeMibGetReq *) voidPrimitivePointer;
|
|
kfree(primitive->mibAttribute);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeMibSetReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeMibSetReq *primitive = (CsrWifiSmeMibSetReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 6) */
|
|
bufferSize += 2; /* u16 primitive->mibAttributeLength */
|
|
bufferSize += primitive->mibAttributeLength; /* u8 primitive->mibAttribute */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeMibSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeMibSetReq *primitive = (CsrWifiSmeMibSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibAttributeLength);
|
|
if (primitive->mibAttributeLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->mibAttribute, ((u16) (primitive->mibAttributeLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeMibSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeMibSetReq *primitive = kmalloc(sizeof(CsrWifiSmeMibSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->mibAttributeLength, buffer, &offset);
|
|
if (primitive->mibAttributeLength)
|
|
{
|
|
primitive->mibAttribute = kmalloc(primitive->mibAttributeLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->mibAttribute, buffer, &offset, ((u16) (primitive->mibAttributeLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->mibAttribute = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeMibSetReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeMibSetReq *primitive = (CsrWifiSmeMibSetReq *) voidPrimitivePointer;
|
|
kfree(primitive->mibAttribute);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeMulticastAddressReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeMulticastAddressReq *primitive = (CsrWifiSmeMulticastAddressReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
|
|
bufferSize += 1; /* u8 primitive->setAddressesCount */
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->setAddressesCount; i1++)
|
|
{
|
|
bufferSize += 6; /* u8 primitive->setAddresses[i1].a[6] */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeMulticastAddressReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeMulticastAddressReq *primitive = (CsrWifiSmeMulticastAddressReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->action);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->setAddressesCount);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->setAddressesCount; i1++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->setAddresses[i1].a, ((u16) (6)));
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeMulticastAddressReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeMulticastAddressReq *primitive = kmalloc(sizeof(CsrWifiSmeMulticastAddressReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->setAddressesCount, buffer, &offset);
|
|
primitive->setAddresses = NULL;
|
|
if (primitive->setAddressesCount)
|
|
{
|
|
primitive->setAddresses = kmalloc(sizeof(CsrWifiMacAddress) * primitive->setAddressesCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->setAddressesCount; i1++)
|
|
{
|
|
CsrMemCpyDes(primitive->setAddresses[i1].a, buffer, &offset, ((u16) (6)));
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeMulticastAddressReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeMulticastAddressReq *primitive = (CsrWifiSmeMulticastAddressReq *) voidPrimitivePointer;
|
|
kfree(primitive->setAddresses);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmePacketFilterSetReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmePacketFilterSetReq *primitive = (CsrWifiSmePacketFilterSetReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* u16 primitive->filterLength */
|
|
bufferSize += primitive->filterLength; /* u8 primitive->filter */
|
|
bufferSize += 1; /* CsrWifiSmePacketFilterMode primitive->mode */
|
|
bufferSize += 4; /* u8 primitive->arpFilterAddress.a[4] */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmePacketFilterSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmePacketFilterSetReq *primitive = (CsrWifiSmePacketFilterSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->filterLength);
|
|
if (primitive->filterLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->filter, ((u16) (primitive->filterLength)));
|
|
}
|
|
CsrUint8Ser(ptr, len, (u8) primitive->mode);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->arpFilterAddress.a, ((u16) (4)));
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmePacketFilterSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmePacketFilterSetReq *primitive = kmalloc(sizeof(CsrWifiSmePacketFilterSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->filterLength, buffer, &offset);
|
|
if (primitive->filterLength)
|
|
{
|
|
primitive->filter = kmalloc(primitive->filterLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->filter, buffer, &offset, ((u16) (primitive->filterLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->filter = NULL;
|
|
}
|
|
CsrUint8Des((u8 *) &primitive->mode, buffer, &offset);
|
|
CsrMemCpyDes(primitive->arpFilterAddress.a, buffer, &offset, ((u16) (4)));
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmePacketFilterSetReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmePacketFilterSetReq *primitive = (CsrWifiSmePacketFilterSetReq *) voidPrimitivePointer;
|
|
kfree(primitive->filter);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmePmkidReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmePmkidReq *primitive = (CsrWifiSmePmkidReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 29) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
|
|
bufferSize += 1; /* u8 primitive->setPmkidsCount */
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->setPmkidsCount; i1++)
|
|
{
|
|
bufferSize += 6; /* u8 primitive->setPmkids[i1].bssid.a[6] */
|
|
bufferSize += 16; /* u8 primitive->setPmkids[i1].pmkid[16] */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmePmkidReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmePmkidReq *primitive = (CsrWifiSmePmkidReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->action);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->setPmkidsCount);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->setPmkidsCount; i1++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->setPmkids[i1].bssid.a, ((u16) (6)));
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->setPmkids[i1].pmkid, ((u16) (16)));
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmePmkidReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmePmkidReq *primitive = kmalloc(sizeof(CsrWifiSmePmkidReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->setPmkidsCount, buffer, &offset);
|
|
primitive->setPmkids = NULL;
|
|
if (primitive->setPmkidsCount)
|
|
{
|
|
primitive->setPmkids = kmalloc(sizeof(CsrWifiSmePmkid) * primitive->setPmkidsCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->setPmkidsCount; i1++)
|
|
{
|
|
CsrMemCpyDes(primitive->setPmkids[i1].bssid.a, buffer, &offset, ((u16) (6)));
|
|
CsrMemCpyDes(primitive->setPmkids[i1].pmkid, buffer, &offset, ((u16) (16)));
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmePmkidReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmePmkidReq *primitive = (CsrWifiSmePmkidReq *) voidPrimitivePointer;
|
|
kfree(primitive->setPmkids);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmePowerConfigSetReqSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
|
|
bufferSize += 1; /* CsrWifiSmePowerSaveLevel primitive->powerConfig.powerSaveLevel */
|
|
bufferSize += 2; /* u16 primitive->powerConfig.listenIntervalTu */
|
|
bufferSize += 1; /* u8 primitive->powerConfig.rxDtims */
|
|
bufferSize += 1; /* CsrWifiSmeD3AutoScanMode primitive->powerConfig.d3AutoScanMode */
|
|
bufferSize += 1; /* u8 primitive->powerConfig.clientTrafficWindow */
|
|
bufferSize += 1; /* u8 primitive->powerConfig.opportunisticPowerSave */
|
|
bufferSize += 1; /* u8 primitive->powerConfig.noticeOfAbsence */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmePowerConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmePowerConfigSetReq *primitive = (CsrWifiSmePowerConfigSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.powerSaveLevel);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->powerConfig.listenIntervalTu);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.rxDtims);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.d3AutoScanMode);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.clientTrafficWindow);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.opportunisticPowerSave);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.noticeOfAbsence);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmePowerConfigSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmePowerConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmePowerConfigSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->powerConfig.powerSaveLevel, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->powerConfig.listenIntervalTu, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->powerConfig.rxDtims, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->powerConfig.d3AutoScanMode, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->powerConfig.clientTrafficWindow, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->powerConfig.opportunisticPowerSave, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->powerConfig.noticeOfAbsence, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeRoamingConfigSetReqSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 70) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 3; i2++)
|
|
{
|
|
bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].rssiHighThreshold */
|
|
bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].rssiLowThreshold */
|
|
bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].snrHighThreshold */
|
|
bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].snrLowThreshold */
|
|
}
|
|
}
|
|
bufferSize += 1; /* u8 primitive->roamingConfig.disableSmoothRoaming */
|
|
bufferSize += 1; /* u8 primitive->roamingConfig.disableRoamScans */
|
|
bufferSize += 1; /* u8 primitive->roamingConfig.reconnectLimit */
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.reconnectLimitIntervalMs */
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 3; i2++)
|
|
{
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].intervalSeconds */
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].validitySeconds */
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].minActiveChannelTimeTu */
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].maxActiveChannelTimeTu */
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].minPassiveChannelTimeTu */
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].maxPassiveChannelTimeTu */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeRoamingConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeRoamingConfigSetReq *primitive = (CsrWifiSmeRoamingConfigSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 3; i2++)
|
|
{
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].rssiHighThreshold);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].rssiLowThreshold);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].snrHighThreshold);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].snrLowThreshold);
|
|
}
|
|
}
|
|
CsrUint8Ser(ptr, len, (u8) primitive->roamingConfig.disableSmoothRoaming);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->roamingConfig.disableRoamScans);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->roamingConfig.reconnectLimit);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.reconnectLimitIntervalMs);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 3; i2++)
|
|
{
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].intervalSeconds);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].validitySeconds);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].minActiveChannelTimeTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].maxActiveChannelTimeTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].minPassiveChannelTimeTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].maxPassiveChannelTimeTu);
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeRoamingConfigSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeRoamingConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeRoamingConfigSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 3; i2++)
|
|
{
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].rssiHighThreshold, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].rssiLowThreshold, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].snrHighThreshold, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].snrLowThreshold, buffer, &offset);
|
|
}
|
|
}
|
|
CsrUint8Des((u8 *) &primitive->roamingConfig.disableSmoothRoaming, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->roamingConfig.disableRoamScans, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->roamingConfig.reconnectLimit, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.reconnectLimitIntervalMs, buffer, &offset);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 3; i2++)
|
|
{
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].intervalSeconds, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].validitySeconds, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].minActiveChannelTimeTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].maxActiveChannelTimeTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].minPassiveChannelTimeTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].maxPassiveChannelTimeTu, buffer, &offset);
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeScanConfigSetReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeScanConfigSetReq *primitive = (CsrWifiSmeScanConfigSetReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 63) */
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 4; i2++)
|
|
{
|
|
bufferSize += 2; /* u16 primitive->scanConfig.scanCfg[i2].intervalSeconds */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.scanCfg[i2].validitySeconds */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.scanCfg[i2].minActiveChannelTimeTu */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.scanCfg[i2].maxActiveChannelTimeTu */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.scanCfg[i2].minPassiveChannelTimeTu */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.scanCfg[i2].maxPassiveChannelTimeTu */
|
|
}
|
|
}
|
|
bufferSize += 1; /* u8 primitive->scanConfig.disableAutonomousScans */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.maxResults */
|
|
bufferSize += 1; /* s8 primitive->scanConfig.highRssiThreshold */
|
|
bufferSize += 1; /* s8 primitive->scanConfig.lowRssiThreshold */
|
|
bufferSize += 1; /* s8 primitive->scanConfig.deltaRssiThreshold */
|
|
bufferSize += 1; /* s8 primitive->scanConfig.highSnrThreshold */
|
|
bufferSize += 1; /* s8 primitive->scanConfig.lowSnrThreshold */
|
|
bufferSize += 1; /* s8 primitive->scanConfig.deltaSnrThreshold */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.passiveChannelListCount */
|
|
bufferSize += primitive->scanConfig.passiveChannelListCount; /* u8 primitive->scanConfig.passiveChannelList */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeScanConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeScanConfigSetReq *primitive = (CsrWifiSmeScanConfigSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 4; i2++)
|
|
{
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].intervalSeconds);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].validitySeconds);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].minActiveChannelTimeTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].maxActiveChannelTimeTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].minPassiveChannelTimeTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].maxPassiveChannelTimeTu);
|
|
}
|
|
}
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.disableAutonomousScans);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.maxResults);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.highRssiThreshold);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.lowRssiThreshold);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.deltaRssiThreshold);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.highSnrThreshold);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.lowSnrThreshold);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.deltaSnrThreshold);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.passiveChannelListCount);
|
|
if (primitive->scanConfig.passiveChannelListCount)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanConfig.passiveChannelList, ((u16) (primitive->scanConfig.passiveChannelListCount)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeScanConfigSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeScanConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeScanConfigSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 4; i2++)
|
|
{
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].intervalSeconds, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].validitySeconds, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].minActiveChannelTimeTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].maxActiveChannelTimeTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].minPassiveChannelTimeTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].maxPassiveChannelTimeTu, buffer, &offset);
|
|
}
|
|
}
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.disableAutonomousScans, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.maxResults, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.highRssiThreshold, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.lowRssiThreshold, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.deltaRssiThreshold, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.highSnrThreshold, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.lowSnrThreshold, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.deltaSnrThreshold, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.passiveChannelListCount, buffer, &offset);
|
|
if (primitive->scanConfig.passiveChannelListCount)
|
|
{
|
|
primitive->scanConfig.passiveChannelList = kmalloc(primitive->scanConfig.passiveChannelListCount, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->scanConfig.passiveChannelList, buffer, &offset, ((u16) (primitive->scanConfig.passiveChannelListCount)));
|
|
}
|
|
else
|
|
{
|
|
primitive->scanConfig.passiveChannelList = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeScanConfigSetReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeScanConfigSetReq *primitive = (CsrWifiSmeScanConfigSetReq *) voidPrimitivePointer;
|
|
kfree(primitive->scanConfig.passiveChannelList);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeScanFullReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeScanFullReq *primitive = (CsrWifiSmeScanFullReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 52) */
|
|
bufferSize += 1; /* u8 primitive->ssidCount */
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->ssidCount; i1++)
|
|
{
|
|
bufferSize += 32; /* u8 primitive->ssid[i1].ssid[32] */
|
|
bufferSize += 1; /* u8 primitive->ssid[i1].length */
|
|
}
|
|
}
|
|
bufferSize += 6; /* u8 primitive->bssid.a[6] */
|
|
bufferSize += 1; /* u8 primitive->forceScan */
|
|
bufferSize += 1; /* CsrWifiSmeBssType primitive->bssType */
|
|
bufferSize += 1; /* CsrWifiSmeScanType primitive->scanType */
|
|
bufferSize += 2; /* u16 primitive->channelListCount */
|
|
bufferSize += primitive->channelListCount; /* u8 primitive->channelList */
|
|
bufferSize += 2; /* u16 primitive->probeIeLength */
|
|
bufferSize += primitive->probeIeLength; /* u8 primitive->probeIe */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeScanFullReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeScanFullReq *primitive = (CsrWifiSmeScanFullReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->ssidCount);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->ssidCount; i1++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->ssid[i1].ssid, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->ssid[i1].length);
|
|
}
|
|
}
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->bssid.a, ((u16) (6)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->forceScan);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->bssType);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanType);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->channelListCount);
|
|
if (primitive->channelListCount)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->channelList, ((u16) (primitive->channelListCount)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->probeIeLength);
|
|
if (primitive->probeIeLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->probeIe, ((u16) (primitive->probeIeLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeScanFullReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeScanFullReq *primitive = kmalloc(sizeof(CsrWifiSmeScanFullReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->ssidCount, buffer, &offset);
|
|
primitive->ssid = NULL;
|
|
if (primitive->ssidCount)
|
|
{
|
|
primitive->ssid = kmalloc(sizeof(CsrWifiSsid) * primitive->ssidCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->ssidCount; i1++)
|
|
{
|
|
CsrMemCpyDes(primitive->ssid[i1].ssid, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->ssid[i1].length, buffer, &offset);
|
|
}
|
|
}
|
|
CsrMemCpyDes(primitive->bssid.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint8Des((u8 *) &primitive->forceScan, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->bssType, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanType, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->channelListCount, buffer, &offset);
|
|
if (primitive->channelListCount)
|
|
{
|
|
primitive->channelList = kmalloc(primitive->channelListCount, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->channelList, buffer, &offset, ((u16) (primitive->channelListCount)));
|
|
}
|
|
else
|
|
{
|
|
primitive->channelList = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->probeIeLength, buffer, &offset);
|
|
if (primitive->probeIeLength)
|
|
{
|
|
primitive->probeIe = kmalloc(primitive->probeIeLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->probeIe, buffer, &offset, ((u16) (primitive->probeIeLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->probeIe = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeScanFullReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeScanFullReq *primitive = (CsrWifiSmeScanFullReq *) voidPrimitivePointer;
|
|
kfree(primitive->ssid);
|
|
kfree(primitive->channelList);
|
|
kfree(primitive->probeIe);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeSmeStaConfigSetReqSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 1; /* u8 primitive->smeConfig.connectionQualityRssiChangeTrigger */
|
|
bufferSize += 1; /* u8 primitive->smeConfig.connectionQualitySnrChangeTrigger */
|
|
bufferSize += 1; /* CsrWifiSmeWmmModeMask primitive->smeConfig.wmmModeMask */
|
|
bufferSize += 1; /* CsrWifiSmeRadioIF primitive->smeConfig.ifIndex */
|
|
bufferSize += 1; /* u8 primitive->smeConfig.allowUnicastUseGroupCipher */
|
|
bufferSize += 1; /* u8 primitive->smeConfig.enableOpportunisticKeyCaching */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeSmeStaConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeSmeStaConfigSetReq *primitive = (CsrWifiSmeSmeStaConfigSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.connectionQualityRssiChangeTrigger);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.connectionQualitySnrChangeTrigger);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.wmmModeMask);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.ifIndex);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.allowUnicastUseGroupCipher);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.enableOpportunisticKeyCaching);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeSmeStaConfigSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeSmeStaConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeSmeStaConfigSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->smeConfig.connectionQualityRssiChangeTrigger, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->smeConfig.connectionQualitySnrChangeTrigger, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->smeConfig.wmmModeMask, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->smeConfig.ifIndex, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->smeConfig.allowUnicastUseGroupCipher, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->smeConfig.enableOpportunisticKeyCaching, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeTspecReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeTspecReq *primitive = (CsrWifiSmeTspecReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 18) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
|
|
bufferSize += 4; /* u32 primitive->transactionId */
|
|
bufferSize += 1; /* u8 primitive->strict */
|
|
bufferSize += 1; /* CsrWifiSmeTspecCtrlMask primitive->ctrlMask */
|
|
bufferSize += 2; /* u16 primitive->tspecLength */
|
|
bufferSize += primitive->tspecLength; /* u8 primitive->tspec */
|
|
bufferSize += 2; /* u16 primitive->tclasLength */
|
|
bufferSize += primitive->tclasLength; /* u8 primitive->tclas */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeTspecReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeTspecReq *primitive = (CsrWifiSmeTspecReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->action);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->transactionId);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->strict);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->ctrlMask);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->tspecLength);
|
|
if (primitive->tspecLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->tspec, ((u16) (primitive->tspecLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->tclasLength);
|
|
if (primitive->tclasLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->tclas, ((u16) (primitive->tclasLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeTspecReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeTspecReq *primitive = kmalloc(sizeof(CsrWifiSmeTspecReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->transactionId, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->strict, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->ctrlMask, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->tspecLength, buffer, &offset);
|
|
if (primitive->tspecLength)
|
|
{
|
|
primitive->tspec = kmalloc(primitive->tspecLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->tspec, buffer, &offset, ((u16) (primitive->tspecLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->tspec = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->tclasLength, buffer, &offset);
|
|
if (primitive->tclasLength)
|
|
{
|
|
primitive->tclas = kmalloc(primitive->tclasLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->tclas, buffer, &offset, ((u16) (primitive->tclasLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->tclas = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeTspecReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeTspecReq *primitive = (CsrWifiSmeTspecReq *) voidPrimitivePointer;
|
|
kfree(primitive->tspec);
|
|
kfree(primitive->tclas);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeWifiFlightmodeReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeWifiFlightmodeReq *primitive = (CsrWifiSmeWifiFlightmodeReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 14) */
|
|
bufferSize += 6; /* u8 primitive->address.a[6] */
|
|
bufferSize += 2; /* u16 primitive->mibFilesCount */
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
|
|
{
|
|
bufferSize += 2; /* u16 primitive->mibFiles[i1].length */
|
|
bufferSize += primitive->mibFiles[i1].length; /* u8 primitive->mibFiles[i1].data */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeWifiFlightmodeReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeWifiFlightmodeReq *primitive = (CsrWifiSmeWifiFlightmodeReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->address.a, ((u16) (6)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibFilesCount);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
|
|
{
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibFiles[i1].length);
|
|
if (primitive->mibFiles[i1].length)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->mibFiles[i1].data, ((u16) (primitive->mibFiles[i1].length)));
|
|
}
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeWifiFlightmodeReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeWifiFlightmodeReq *primitive = kmalloc(sizeof(CsrWifiSmeWifiFlightmodeReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrMemCpyDes(primitive->address.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint16Des((u16 *) &primitive->mibFilesCount, buffer, &offset);
|
|
primitive->mibFiles = NULL;
|
|
if (primitive->mibFilesCount)
|
|
{
|
|
primitive->mibFiles = kmalloc(sizeof(CsrWifiSmeDataBlock) * primitive->mibFilesCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
|
|
{
|
|
CsrUint16Des((u16 *) &primitive->mibFiles[i1].length, buffer, &offset);
|
|
if (primitive->mibFiles[i1].length)
|
|
{
|
|
primitive->mibFiles[i1].data = kmalloc(primitive->mibFiles[i1].length, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->mibFiles[i1].data, buffer, &offset, ((u16) (primitive->mibFiles[i1].length)));
|
|
}
|
|
else
|
|
{
|
|
primitive->mibFiles[i1].data = NULL;
|
|
}
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeWifiFlightmodeReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeWifiFlightmodeReq *primitive = (CsrWifiSmeWifiFlightmodeReq *) voidPrimitivePointer;
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
|
|
{
|
|
kfree(primitive->mibFiles[i1].data);
|
|
}
|
|
}
|
|
kfree(primitive->mibFiles);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeWifiOnReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeWifiOnReq *primitive = (CsrWifiSmeWifiOnReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 14) */
|
|
bufferSize += 6; /* u8 primitive->address.a[6] */
|
|
bufferSize += 2; /* u16 primitive->mibFilesCount */
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
|
|
{
|
|
bufferSize += 2; /* u16 primitive->mibFiles[i1].length */
|
|
bufferSize += primitive->mibFiles[i1].length; /* u8 primitive->mibFiles[i1].data */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeWifiOnReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeWifiOnReq *primitive = (CsrWifiSmeWifiOnReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->address.a, ((u16) (6)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibFilesCount);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
|
|
{
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibFiles[i1].length);
|
|
if (primitive->mibFiles[i1].length)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->mibFiles[i1].data, ((u16) (primitive->mibFiles[i1].length)));
|
|
}
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeWifiOnReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeWifiOnReq *primitive = kmalloc(sizeof(CsrWifiSmeWifiOnReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrMemCpyDes(primitive->address.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint16Des((u16 *) &primitive->mibFilesCount, buffer, &offset);
|
|
primitive->mibFiles = NULL;
|
|
if (primitive->mibFilesCount)
|
|
{
|
|
primitive->mibFiles = kmalloc(sizeof(CsrWifiSmeDataBlock) * primitive->mibFilesCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
|
|
{
|
|
CsrUint16Des((u16 *) &primitive->mibFiles[i1].length, buffer, &offset);
|
|
if (primitive->mibFiles[i1].length)
|
|
{
|
|
primitive->mibFiles[i1].data = kmalloc(primitive->mibFiles[i1].length, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->mibFiles[i1].data, buffer, &offset, ((u16) (primitive->mibFiles[i1].length)));
|
|
}
|
|
else
|
|
{
|
|
primitive->mibFiles[i1].data = NULL;
|
|
}
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeWifiOnReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeWifiOnReq *primitive = (CsrWifiSmeWifiOnReq *) voidPrimitivePointer;
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
|
|
{
|
|
kfree(primitive->mibFiles[i1].data);
|
|
}
|
|
}
|
|
kfree(primitive->mibFiles);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeCloakedSsidsSetReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeCloakedSsidsSetReq *primitive = (CsrWifiSmeCloakedSsidsSetReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 37) */
|
|
bufferSize += 1; /* u8 primitive->cloakedSsids.cloakedSsidsCount */
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < primitive->cloakedSsids.cloakedSsidsCount; i2++)
|
|
{
|
|
bufferSize += 32; /* u8 primitive->cloakedSsids.cloakedSsids[i2].ssid[32] */
|
|
bufferSize += 1; /* u8 primitive->cloakedSsids.cloakedSsids[i2].length */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeCloakedSsidsSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeCloakedSsidsSetReq *primitive = (CsrWifiSmeCloakedSsidsSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->cloakedSsids.cloakedSsidsCount);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < primitive->cloakedSsids.cloakedSsidsCount; i2++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->cloakedSsids.cloakedSsids[i2].ssid, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->cloakedSsids.cloakedSsids[i2].length);
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeCloakedSsidsSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeCloakedSsidsSetReq *primitive = kmalloc(sizeof(CsrWifiSmeCloakedSsidsSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->cloakedSsids.cloakedSsidsCount, buffer, &offset);
|
|
primitive->cloakedSsids.cloakedSsids = NULL;
|
|
if (primitive->cloakedSsids.cloakedSsidsCount)
|
|
{
|
|
primitive->cloakedSsids.cloakedSsids = kmalloc(sizeof(CsrWifiSsid) * primitive->cloakedSsids.cloakedSsidsCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < primitive->cloakedSsids.cloakedSsidsCount; i2++)
|
|
{
|
|
CsrMemCpyDes(primitive->cloakedSsids.cloakedSsids[i2].ssid, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->cloakedSsids.cloakedSsids[i2].length, buffer, &offset);
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeCloakedSsidsSetReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeCloakedSsidsSetReq *primitive = (CsrWifiSmeCloakedSsidsSetReq *) voidPrimitivePointer;
|
|
kfree(primitive->cloakedSsids.cloakedSsids);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeSmeCommonConfigSetReqSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
|
|
bufferSize += 1; /* CsrWifiSme80211dTrustLevel primitive->deviceConfig.trustLevel */
|
|
bufferSize += 2; /* u8 primitive->deviceConfig.countryCode[2] */
|
|
bufferSize += 1; /* CsrWifiSmeFirmwareDriverInterface primitive->deviceConfig.firmwareDriverInterface */
|
|
bufferSize += 1; /* u8 primitive->deviceConfig.enableStrictDraftN */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeSmeCommonConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeSmeCommonConfigSetReq *primitive = (CsrWifiSmeSmeCommonConfigSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->deviceConfig.trustLevel);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->deviceConfig.countryCode, ((u16) (2)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->deviceConfig.firmwareDriverInterface);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->deviceConfig.enableStrictDraftN);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeSmeCommonConfigSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeSmeCommonConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeSmeCommonConfigSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->deviceConfig.trustLevel, buffer, &offset);
|
|
CsrMemCpyDes(primitive->deviceConfig.countryCode, buffer, &offset, ((u16) (2)));
|
|
CsrUint8Des((u8 *) &primitive->deviceConfig.firmwareDriverInterface, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->deviceConfig.enableStrictDraftN, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeWpsConfigurationReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeWpsConfigurationReq *primitive = (CsrWifiSmeWpsConfigurationReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 240) */
|
|
bufferSize += 1; /* u8 primitive->wpsConfig.wpsVersion */
|
|
bufferSize += 16; /* u8 primitive->wpsConfig.uuid[16] */
|
|
bufferSize += 32; /* u8 primitive->wpsConfig.deviceName[32] */
|
|
bufferSize += 1; /* u8 primitive->wpsConfig.deviceNameLength */
|
|
bufferSize += 64; /* u8 primitive->wpsConfig.manufacturer[64] */
|
|
bufferSize += 1; /* u8 primitive->wpsConfig.manufacturerLength */
|
|
bufferSize += 32; /* u8 primitive->wpsConfig.modelName[32] */
|
|
bufferSize += 1; /* u8 primitive->wpsConfig.modelNameLength */
|
|
bufferSize += 32; /* u8 primitive->wpsConfig.modelNumber[32] */
|
|
bufferSize += 1; /* u8 primitive->wpsConfig.modelNumberLength */
|
|
bufferSize += 32; /* u8 primitive->wpsConfig.serialNumber[32] */
|
|
bufferSize += 8; /* u8 primitive->wpsConfig.primDeviceType.deviceDetails[8] */
|
|
bufferSize += 1; /* u8 primitive->wpsConfig.secondaryDeviceTypeCount */
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < primitive->wpsConfig.secondaryDeviceTypeCount; i2++)
|
|
{
|
|
bufferSize += 8; /* u8 primitive->wpsConfig.secondaryDeviceType[i2].deviceDetails[8] */
|
|
}
|
|
}
|
|
bufferSize += 2; /* CsrWifiSmeWpsConfigTypeMask primitive->wpsConfig.configMethods */
|
|
bufferSize += 1; /* u8 primitive->wpsConfig.rfBands */
|
|
bufferSize += 4; /* u8 primitive->wpsConfig.osVersion[4] */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeWpsConfigurationReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeWpsConfigurationReq *primitive = (CsrWifiSmeWpsConfigurationReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.wpsVersion);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.uuid, ((u16) (16)));
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.deviceName, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.deviceNameLength);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.manufacturer, ((u16) (64)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.manufacturerLength);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.modelName, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.modelNameLength);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.modelNumber, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.modelNumberLength);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.serialNumber, ((u16) (32)));
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.primDeviceType.deviceDetails, ((u16) (8)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.secondaryDeviceTypeCount);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < primitive->wpsConfig.secondaryDeviceTypeCount; i2++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.secondaryDeviceType[i2].deviceDetails, ((u16) (8)));
|
|
}
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->wpsConfig.configMethods);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.rfBands);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.osVersion, ((u16) (4)));
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeWpsConfigurationReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeWpsConfigurationReq *primitive = kmalloc(sizeof(CsrWifiSmeWpsConfigurationReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->wpsConfig.wpsVersion, buffer, &offset);
|
|
CsrMemCpyDes(primitive->wpsConfig.uuid, buffer, &offset, ((u16) (16)));
|
|
CsrMemCpyDes(primitive->wpsConfig.deviceName, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->wpsConfig.deviceNameLength, buffer, &offset);
|
|
CsrMemCpyDes(primitive->wpsConfig.manufacturer, buffer, &offset, ((u16) (64)));
|
|
CsrUint8Des((u8 *) &primitive->wpsConfig.manufacturerLength, buffer, &offset);
|
|
CsrMemCpyDes(primitive->wpsConfig.modelName, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->wpsConfig.modelNameLength, buffer, &offset);
|
|
CsrMemCpyDes(primitive->wpsConfig.modelNumber, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->wpsConfig.modelNumberLength, buffer, &offset);
|
|
CsrMemCpyDes(primitive->wpsConfig.serialNumber, buffer, &offset, ((u16) (32)));
|
|
CsrMemCpyDes(primitive->wpsConfig.primDeviceType.deviceDetails, buffer, &offset, ((u16) (8)));
|
|
CsrUint8Des((u8 *) &primitive->wpsConfig.secondaryDeviceTypeCount, buffer, &offset);
|
|
primitive->wpsConfig.secondaryDeviceType = NULL;
|
|
if (primitive->wpsConfig.secondaryDeviceTypeCount)
|
|
{
|
|
primitive->wpsConfig.secondaryDeviceType = kmalloc(sizeof(CsrWifiSmeWpsDeviceType) * primitive->wpsConfig.secondaryDeviceTypeCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < primitive->wpsConfig.secondaryDeviceTypeCount; i2++)
|
|
{
|
|
CsrMemCpyDes(primitive->wpsConfig.secondaryDeviceType[i2].deviceDetails, buffer, &offset, ((u16) (8)));
|
|
}
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->wpsConfig.configMethods, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->wpsConfig.rfBands, buffer, &offset);
|
|
CsrMemCpyDes(primitive->wpsConfig.osVersion, buffer, &offset, ((u16) (4)));
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeWpsConfigurationReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeWpsConfigurationReq *primitive = (CsrWifiSmeWpsConfigurationReq *) voidPrimitivePointer;
|
|
kfree(primitive->wpsConfig.secondaryDeviceType);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeSetReqSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeSetReq *primitive = (CsrWifiSmeSetReq *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
|
|
bufferSize += 4; /* u32 primitive->dataLength */
|
|
bufferSize += primitive->dataLength; /* u8 primitive->data */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeSetReqSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeSetReq *primitive = (CsrWifiSmeSetReq *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->dataLength);
|
|
if (primitive->dataLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->data, ((u16) (primitive->dataLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeSetReqDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeSetReq *primitive = kmalloc(sizeof(CsrWifiSmeSetReq), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->dataLength, buffer, &offset);
|
|
if (primitive->dataLength)
|
|
{
|
|
primitive->data = kmalloc(primitive->dataLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->data, buffer, &offset, ((u16) (primitive->dataLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->data = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeSetReqSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeSetReq *primitive = (CsrWifiSmeSetReq *) voidPrimitivePointer;
|
|
kfree(primitive->data);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeAdhocConfigGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 2; /* u16 primitive->adHocConfig.atimWindowTu */
|
|
bufferSize += 2; /* u16 primitive->adHocConfig.beaconPeriodTu */
|
|
bufferSize += 2; /* u16 primitive->adHocConfig.joinOnlyAttempts */
|
|
bufferSize += 2; /* u16 primitive->adHocConfig.joinAttemptIntervalMs */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeAdhocConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeAdhocConfigGetCfm *primitive = (CsrWifiSmeAdhocConfigGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.atimWindowTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.beaconPeriodTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.joinOnlyAttempts);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.joinAttemptIntervalMs);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeAdhocConfigGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeAdhocConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeAdhocConfigGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->adHocConfig.atimWindowTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->adHocConfig.beaconPeriodTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->adHocConfig.joinOnlyAttempts, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->adHocConfig.joinAttemptIntervalMs, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeAssociationCompleteIndSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeAssociationCompleteInd *primitive = (CsrWifiSmeAssociationCompleteInd *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 98) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 32; /* u8 primitive->connectionInfo.ssid.ssid[32] */
|
|
bufferSize += 1; /* u8 primitive->connectionInfo.ssid.length */
|
|
bufferSize += 6; /* u8 primitive->connectionInfo.bssid.a[6] */
|
|
bufferSize += 1; /* CsrWifiSme80211NetworkType primitive->connectionInfo.networkType80211 */
|
|
bufferSize += 1; /* u8 primitive->connectionInfo.channelNumber */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.channelFrequency */
|
|
bufferSize += 2; /* CsrWifiSmeAuthMode primitive->connectionInfo.authMode */
|
|
bufferSize += 2; /* CsrWifiSmeEncryption primitive->connectionInfo.pairwiseCipher */
|
|
bufferSize += 2; /* CsrWifiSmeEncryption primitive->connectionInfo.groupCipher */
|
|
bufferSize += 1; /* CsrWifiSmeRadioIF primitive->connectionInfo.ifIndex */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.atimWindowTu */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.beaconPeriodTu */
|
|
bufferSize += 1; /* u8 primitive->connectionInfo.reassociation */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.beaconFrameLength */
|
|
bufferSize += primitive->connectionInfo.beaconFrameLength; /* u8 primitive->connectionInfo.beaconFrame */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.associationReqFrameLength */
|
|
bufferSize += primitive->connectionInfo.associationReqFrameLength; /* u8 primitive->connectionInfo.associationReqFrame */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.associationRspFrameLength */
|
|
bufferSize += primitive->connectionInfo.associationRspFrameLength; /* u8 primitive->connectionInfo.associationRspFrame */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocScanInfoElementsLength */
|
|
bufferSize += primitive->connectionInfo.assocScanInfoElementsLength; /* u8 primitive->connectionInfo.assocScanInfoElements */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocReqCapabilities */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocReqListenIntervalTu */
|
|
bufferSize += 6; /* u8 primitive->connectionInfo.assocReqApAddress.a[6] */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocReqInfoElementsLength */
|
|
bufferSize += primitive->connectionInfo.assocReqInfoElementsLength; /* u8 primitive->connectionInfo.assocReqInfoElements */
|
|
bufferSize += 2; /* CsrWifiSmeIEEE80211Result primitive->connectionInfo.assocRspResult */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocRspCapabilityInfo */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocRspAssociationId */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocRspInfoElementsLength */
|
|
bufferSize += primitive->connectionInfo.assocRspInfoElementsLength; /* u8 primitive->connectionInfo.assocRspInfoElements */
|
|
bufferSize += 2; /* CsrWifiSmeIEEE80211Reason primitive->deauthReason */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeAssociationCompleteIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeAssociationCompleteInd *primitive = (CsrWifiSmeAssociationCompleteInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.ssid.ssid, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.ssid.length);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.bssid.a, ((u16) (6)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.networkType80211);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.channelNumber);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.channelFrequency);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.authMode);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.pairwiseCipher);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.groupCipher);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.ifIndex);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.atimWindowTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.beaconPeriodTu);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.reassociation);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.beaconFrameLength);
|
|
if (primitive->connectionInfo.beaconFrameLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.beaconFrame, ((u16) (primitive->connectionInfo.beaconFrameLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.associationReqFrameLength);
|
|
if (primitive->connectionInfo.associationReqFrameLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.associationReqFrame, ((u16) (primitive->connectionInfo.associationReqFrameLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.associationRspFrameLength);
|
|
if (primitive->connectionInfo.associationRspFrameLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.associationRspFrame, ((u16) (primitive->connectionInfo.associationRspFrameLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocScanInfoElementsLength);
|
|
if (primitive->connectionInfo.assocScanInfoElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocScanInfoElements, ((u16) (primitive->connectionInfo.assocScanInfoElementsLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqCapabilities);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqListenIntervalTu);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocReqApAddress.a, ((u16) (6)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqInfoElementsLength);
|
|
if (primitive->connectionInfo.assocReqInfoElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocReqInfoElements, ((u16) (primitive->connectionInfo.assocReqInfoElementsLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspResult);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspCapabilityInfo);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspAssociationId);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspInfoElementsLength);
|
|
if (primitive->connectionInfo.assocRspInfoElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocRspInfoElements, ((u16) (primitive->connectionInfo.assocRspInfoElementsLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->deauthReason);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeAssociationCompleteIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeAssociationCompleteInd *primitive = kmalloc(sizeof(CsrWifiSmeAssociationCompleteInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionInfo.ssid.ssid, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.ssid.length, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionInfo.bssid.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.networkType80211, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.channelNumber, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.channelFrequency, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.authMode, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.pairwiseCipher, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.groupCipher, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.ifIndex, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.atimWindowTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.beaconPeriodTu, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.reassociation, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.beaconFrameLength, buffer, &offset);
|
|
if (primitive->connectionInfo.beaconFrameLength)
|
|
{
|
|
primitive->connectionInfo.beaconFrame = kmalloc(primitive->connectionInfo.beaconFrameLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.beaconFrame, buffer, &offset, ((u16) (primitive->connectionInfo.beaconFrameLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.beaconFrame = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.associationReqFrameLength, buffer, &offset);
|
|
if (primitive->connectionInfo.associationReqFrameLength)
|
|
{
|
|
primitive->connectionInfo.associationReqFrame = kmalloc(primitive->connectionInfo.associationReqFrameLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.associationReqFrame, buffer, &offset, ((u16) (primitive->connectionInfo.associationReqFrameLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.associationReqFrame = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.associationRspFrameLength, buffer, &offset);
|
|
if (primitive->connectionInfo.associationRspFrameLength)
|
|
{
|
|
primitive->connectionInfo.associationRspFrame = kmalloc(primitive->connectionInfo.associationRspFrameLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.associationRspFrame, buffer, &offset, ((u16) (primitive->connectionInfo.associationRspFrameLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.associationRspFrame = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocScanInfoElementsLength, buffer, &offset);
|
|
if (primitive->connectionInfo.assocScanInfoElementsLength)
|
|
{
|
|
primitive->connectionInfo.assocScanInfoElements = kmalloc(primitive->connectionInfo.assocScanInfoElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.assocScanInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocScanInfoElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.assocScanInfoElements = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqCapabilities, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqListenIntervalTu, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionInfo.assocReqApAddress.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqInfoElementsLength, buffer, &offset);
|
|
if (primitive->connectionInfo.assocReqInfoElementsLength)
|
|
{
|
|
primitive->connectionInfo.assocReqInfoElements = kmalloc(primitive->connectionInfo.assocReqInfoElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.assocReqInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocReqInfoElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.assocReqInfoElements = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspResult, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspCapabilityInfo, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspAssociationId, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspInfoElementsLength, buffer, &offset);
|
|
if (primitive->connectionInfo.assocRspInfoElementsLength)
|
|
{
|
|
primitive->connectionInfo.assocRspInfoElements = kmalloc(primitive->connectionInfo.assocRspInfoElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.assocRspInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocRspInfoElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.assocRspInfoElements = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->deauthReason, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeAssociationCompleteIndSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeAssociationCompleteInd *primitive = (CsrWifiSmeAssociationCompleteInd *) voidPrimitivePointer;
|
|
kfree(primitive->connectionInfo.beaconFrame);
|
|
kfree(primitive->connectionInfo.associationReqFrame);
|
|
kfree(primitive->connectionInfo.associationRspFrame);
|
|
kfree(primitive->connectionInfo.assocScanInfoElements);
|
|
kfree(primitive->connectionInfo.assocReqInfoElements);
|
|
kfree(primitive->connectionInfo.assocRspInfoElements);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeAssociationStartIndSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 44) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 6; /* u8 primitive->address.a[6] */
|
|
bufferSize += 32; /* u8 primitive->ssid.ssid[32] */
|
|
bufferSize += 1; /* u8 primitive->ssid.length */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeAssociationStartIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeAssociationStartInd *primitive = (CsrWifiSmeAssociationStartInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->address.a, ((u16) (6)));
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->ssid.ssid, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->ssid.length);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeAssociationStartIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeAssociationStartInd *primitive = kmalloc(sizeof(CsrWifiSmeAssociationStartInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrMemCpyDes(primitive->address.a, buffer, &offset, ((u16) (6)));
|
|
CsrMemCpyDes(primitive->ssid.ssid, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->ssid.length, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeBlacklistCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeBlacklistCfm *primitive = (CsrWifiSmeBlacklistCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 15) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
|
|
bufferSize += 1; /* u8 primitive->getAddressCount */
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->getAddressCount; i1++)
|
|
{
|
|
bufferSize += 6; /* u8 primitive->getAddresses[i1].a[6] */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeBlacklistCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeBlacklistCfm *primitive = (CsrWifiSmeBlacklistCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->action);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->getAddressCount);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->getAddressCount; i1++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->getAddresses[i1].a, ((u16) (6)));
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeBlacklistCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeBlacklistCfm *primitive = kmalloc(sizeof(CsrWifiSmeBlacklistCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->getAddressCount, buffer, &offset);
|
|
primitive->getAddresses = NULL;
|
|
if (primitive->getAddressCount)
|
|
{
|
|
primitive->getAddresses = kmalloc(sizeof(CsrWifiMacAddress) * primitive->getAddressCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->getAddressCount; i1++)
|
|
{
|
|
CsrMemCpyDes(primitive->getAddresses[i1].a, buffer, &offset, ((u16) (6)));
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeBlacklistCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeBlacklistCfm *primitive = (CsrWifiSmeBlacklistCfm *) voidPrimitivePointer;
|
|
kfree(primitive->getAddresses);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeCalibrationDataGetCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeCalibrationDataGetCfm *primitive = (CsrWifiSmeCalibrationDataGetCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 2; /* u16 primitive->calibrationDataLength */
|
|
bufferSize += primitive->calibrationDataLength; /* u8 primitive->calibrationData */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeCalibrationDataGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeCalibrationDataGetCfm *primitive = (CsrWifiSmeCalibrationDataGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->calibrationDataLength);
|
|
if (primitive->calibrationDataLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->calibrationData, ((u16) (primitive->calibrationDataLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeCalibrationDataGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeCalibrationDataGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeCalibrationDataGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->calibrationDataLength, buffer, &offset);
|
|
if (primitive->calibrationDataLength)
|
|
{
|
|
primitive->calibrationData = kmalloc(primitive->calibrationDataLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->calibrationData, buffer, &offset, ((u16) (primitive->calibrationDataLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->calibrationData = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeCalibrationDataGetCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeCalibrationDataGetCfm *primitive = (CsrWifiSmeCalibrationDataGetCfm *) voidPrimitivePointer;
|
|
kfree(primitive->calibrationData);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeCcxConfigGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* u8 primitive->ccxConfig.keepAliveTimeMs */
|
|
bufferSize += 1; /* u8 primitive->ccxConfig.apRoamingEnabled */
|
|
bufferSize += 1; /* u8 primitive->ccxConfig.measurementsMask */
|
|
bufferSize += 1; /* u8 primitive->ccxConfig.ccxRadioMgtEnabled */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeCcxConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeCcxConfigGetCfm *primitive = (CsrWifiSmeCcxConfigGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.keepAliveTimeMs);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.apRoamingEnabled);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.measurementsMask);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.ccxRadioMgtEnabled);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeCcxConfigGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeCcxConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeCcxConfigGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->ccxConfig.keepAliveTimeMs, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->ccxConfig.apRoamingEnabled, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->ccxConfig.measurementsMask, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->ccxConfig.ccxRadioMgtEnabled, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeCcxConfigSetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeCcxConfigSetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeCcxConfigSetCfm *primitive = (CsrWifiSmeCcxConfigSetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeCcxConfigSetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeCcxConfigSetCfm *primitive = kmalloc(sizeof(CsrWifiSmeCcxConfigSetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeCoexConfigGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 31) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* u8 primitive->coexConfig.coexEnableSchemeManagement */
|
|
bufferSize += 1; /* u8 primitive->coexConfig.coexPeriodicWakeHost */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexTrafficBurstyLatencyMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexTrafficContinuousLatencyMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexObexBlackoutDurationMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexObexBlackoutPeriodMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpBrBlackoutDurationMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpBrBlackoutPeriodMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpEdrBlackoutDurationMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpEdrBlackoutPeriodMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexPagingBlackoutDurationMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexPagingBlackoutPeriodMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexInquiryBlackoutDurationMs */
|
|
bufferSize += 2; /* u16 primitive->coexConfig.coexInquiryBlackoutPeriodMs */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeCoexConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeCoexConfigGetCfm *primitive = (CsrWifiSmeCoexConfigGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->coexConfig.coexEnableSchemeManagement);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->coexConfig.coexPeriodicWakeHost);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexTrafficBurstyLatencyMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexTrafficContinuousLatencyMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexObexBlackoutDurationMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexObexBlackoutPeriodMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpBrBlackoutDurationMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpBrBlackoutPeriodMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpEdrBlackoutDurationMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpEdrBlackoutPeriodMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexPagingBlackoutDurationMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexPagingBlackoutPeriodMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexInquiryBlackoutDurationMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexInquiryBlackoutPeriodMs);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeCoexConfigGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeCoexConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeCoexConfigGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->coexConfig.coexEnableSchemeManagement, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->coexConfig.coexPeriodicWakeHost, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexTrafficBurstyLatencyMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexTrafficContinuousLatencyMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexObexBlackoutDurationMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexObexBlackoutPeriodMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpBrBlackoutDurationMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpBrBlackoutPeriodMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpEdrBlackoutDurationMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpEdrBlackoutPeriodMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexPagingBlackoutDurationMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexPagingBlackoutPeriodMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexInquiryBlackoutDurationMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexConfig.coexInquiryBlackoutPeriodMs, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeCoexInfoGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 24) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* u8 primitive->coexInfo.hasTrafficData */
|
|
bufferSize += 1; /* CsrWifiSmeTrafficType primitive->coexInfo.currentTrafficType */
|
|
bufferSize += 2; /* u16 primitive->coexInfo.currentPeriodMs */
|
|
bufferSize += 1; /* CsrWifiSmePowerSaveLevel primitive->coexInfo.currentPowerSave */
|
|
bufferSize += 2; /* u16 primitive->coexInfo.currentCoexPeriodMs */
|
|
bufferSize += 2; /* u16 primitive->coexInfo.currentCoexLatencyMs */
|
|
bufferSize += 1; /* u8 primitive->coexInfo.hasBtDevice */
|
|
bufferSize += 4; /* u32 primitive->coexInfo.currentBlackoutDurationUs */
|
|
bufferSize += 4; /* u32 primitive->coexInfo.currentBlackoutPeriodUs */
|
|
bufferSize += 1; /* CsrWifiSmeCoexScheme primitive->coexInfo.currentCoexScheme */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeCoexInfoGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeCoexInfoGetCfm *primitive = (CsrWifiSmeCoexInfoGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->coexInfo.hasTrafficData);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->coexInfo.currentTrafficType);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexInfo.currentPeriodMs);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->coexInfo.currentPowerSave);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexInfo.currentCoexPeriodMs);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->coexInfo.currentCoexLatencyMs);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->coexInfo.hasBtDevice);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->coexInfo.currentBlackoutDurationUs);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->coexInfo.currentBlackoutPeriodUs);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->coexInfo.currentCoexScheme);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeCoexInfoGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeCoexInfoGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeCoexInfoGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->coexInfo.hasTrafficData, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->coexInfo.currentTrafficType, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexInfo.currentPeriodMs, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->coexInfo.currentPowerSave, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexInfo.currentCoexPeriodMs, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->coexInfo.currentCoexLatencyMs, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->coexInfo.hasBtDevice, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->coexInfo.currentBlackoutDurationUs, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->coexInfo.currentBlackoutPeriodUs, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->coexInfo.currentCoexScheme, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeConnectCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeConnectCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeConnectCfm *primitive = (CsrWifiSmeConnectCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeConnectCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeConnectCfm *primitive = kmalloc(sizeof(CsrWifiSmeConnectCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeConnectionConfigGetCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeConnectionConfigGetCfm *primitive = (CsrWifiSmeConnectionConfigGetCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 59) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 32; /* u8 primitive->connectionConfig.ssid.ssid[32] */
|
|
bufferSize += 1; /* u8 primitive->connectionConfig.ssid.length */
|
|
bufferSize += 6; /* u8 primitive->connectionConfig.bssid.a[6] */
|
|
bufferSize += 1; /* CsrWifiSmeBssType primitive->connectionConfig.bssType */
|
|
bufferSize += 1; /* CsrWifiSmeRadioIF primitive->connectionConfig.ifIndex */
|
|
bufferSize += 1; /* CsrWifiSme80211PrivacyMode primitive->connectionConfig.privacyMode */
|
|
bufferSize += 2; /* CsrWifiSmeAuthModeMask primitive->connectionConfig.authModeMask */
|
|
bufferSize += 2; /* CsrWifiSmeEncryptionMask primitive->connectionConfig.encryptionModeMask */
|
|
bufferSize += 2; /* u16 primitive->connectionConfig.mlmeAssociateReqInformationElementsLength */
|
|
bufferSize += primitive->connectionConfig.mlmeAssociateReqInformationElementsLength; /* u8 primitive->connectionConfig.mlmeAssociateReqInformationElements */
|
|
bufferSize += 1; /* CsrWifiSmeWmmQosInfoMask primitive->connectionConfig.wmmQosInfo */
|
|
bufferSize += 1; /* u8 primitive->connectionConfig.adhocJoinOnly */
|
|
bufferSize += 1; /* u8 primitive->connectionConfig.adhocChannel */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeConnectionConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeConnectionConfigGetCfm *primitive = (CsrWifiSmeConnectionConfigGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionConfig.ssid.ssid, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.ssid.length);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionConfig.bssid.a, ((u16) (6)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.bssType);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.ifIndex);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.privacyMode);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionConfig.authModeMask);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionConfig.encryptionModeMask);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionConfig.mlmeAssociateReqInformationElementsLength);
|
|
if (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionConfig.mlmeAssociateReqInformationElements, ((u16) (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)));
|
|
}
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.wmmQosInfo);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.adhocJoinOnly);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.adhocChannel);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeConnectionConfigGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeConnectionConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeConnectionConfigGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionConfig.ssid.ssid, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.ssid.length, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionConfig.bssid.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.bssType, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.ifIndex, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.privacyMode, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionConfig.authModeMask, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionConfig.encryptionModeMask, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionConfig.mlmeAssociateReqInformationElementsLength, buffer, &offset);
|
|
if (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)
|
|
{
|
|
primitive->connectionConfig.mlmeAssociateReqInformationElements = kmalloc(primitive->connectionConfig.mlmeAssociateReqInformationElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionConfig.mlmeAssociateReqInformationElements, buffer, &offset, ((u16) (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionConfig.mlmeAssociateReqInformationElements = NULL;
|
|
}
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.wmmQosInfo, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.adhocJoinOnly, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionConfig.adhocChannel, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeConnectionConfigGetCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeConnectionConfigGetCfm *primitive = (CsrWifiSmeConnectionConfigGetCfm *) voidPrimitivePointer;
|
|
kfree(primitive->connectionConfig.mlmeAssociateReqInformationElements);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeConnectionInfoGetCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeConnectionInfoGetCfm *primitive = (CsrWifiSmeConnectionInfoGetCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 96) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 32; /* u8 primitive->connectionInfo.ssid.ssid[32] */
|
|
bufferSize += 1; /* u8 primitive->connectionInfo.ssid.length */
|
|
bufferSize += 6; /* u8 primitive->connectionInfo.bssid.a[6] */
|
|
bufferSize += 1; /* CsrWifiSme80211NetworkType primitive->connectionInfo.networkType80211 */
|
|
bufferSize += 1; /* u8 primitive->connectionInfo.channelNumber */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.channelFrequency */
|
|
bufferSize += 2; /* CsrWifiSmeAuthMode primitive->connectionInfo.authMode */
|
|
bufferSize += 2; /* CsrWifiSmeEncryption primitive->connectionInfo.pairwiseCipher */
|
|
bufferSize += 2; /* CsrWifiSmeEncryption primitive->connectionInfo.groupCipher */
|
|
bufferSize += 1; /* CsrWifiSmeRadioIF primitive->connectionInfo.ifIndex */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.atimWindowTu */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.beaconPeriodTu */
|
|
bufferSize += 1; /* u8 primitive->connectionInfo.reassociation */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.beaconFrameLength */
|
|
bufferSize += primitive->connectionInfo.beaconFrameLength; /* u8 primitive->connectionInfo.beaconFrame */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.associationReqFrameLength */
|
|
bufferSize += primitive->connectionInfo.associationReqFrameLength; /* u8 primitive->connectionInfo.associationReqFrame */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.associationRspFrameLength */
|
|
bufferSize += primitive->connectionInfo.associationRspFrameLength; /* u8 primitive->connectionInfo.associationRspFrame */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocScanInfoElementsLength */
|
|
bufferSize += primitive->connectionInfo.assocScanInfoElementsLength; /* u8 primitive->connectionInfo.assocScanInfoElements */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocReqCapabilities */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocReqListenIntervalTu */
|
|
bufferSize += 6; /* u8 primitive->connectionInfo.assocReqApAddress.a[6] */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocReqInfoElementsLength */
|
|
bufferSize += primitive->connectionInfo.assocReqInfoElementsLength; /* u8 primitive->connectionInfo.assocReqInfoElements */
|
|
bufferSize += 2; /* CsrWifiSmeIEEE80211Result primitive->connectionInfo.assocRspResult */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocRspCapabilityInfo */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocRspAssociationId */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocRspInfoElementsLength */
|
|
bufferSize += primitive->connectionInfo.assocRspInfoElementsLength; /* u8 primitive->connectionInfo.assocRspInfoElements */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeConnectionInfoGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeConnectionInfoGetCfm *primitive = (CsrWifiSmeConnectionInfoGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.ssid.ssid, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.ssid.length);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.bssid.a, ((u16) (6)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.networkType80211);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.channelNumber);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.channelFrequency);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.authMode);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.pairwiseCipher);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.groupCipher);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.ifIndex);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.atimWindowTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.beaconPeriodTu);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.reassociation);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.beaconFrameLength);
|
|
if (primitive->connectionInfo.beaconFrameLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.beaconFrame, ((u16) (primitive->connectionInfo.beaconFrameLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.associationReqFrameLength);
|
|
if (primitive->connectionInfo.associationReqFrameLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.associationReqFrame, ((u16) (primitive->connectionInfo.associationReqFrameLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.associationRspFrameLength);
|
|
if (primitive->connectionInfo.associationRspFrameLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.associationRspFrame, ((u16) (primitive->connectionInfo.associationRspFrameLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocScanInfoElementsLength);
|
|
if (primitive->connectionInfo.assocScanInfoElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocScanInfoElements, ((u16) (primitive->connectionInfo.assocScanInfoElementsLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqCapabilities);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqListenIntervalTu);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocReqApAddress.a, ((u16) (6)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqInfoElementsLength);
|
|
if (primitive->connectionInfo.assocReqInfoElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocReqInfoElements, ((u16) (primitive->connectionInfo.assocReqInfoElementsLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspResult);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspCapabilityInfo);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspAssociationId);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspInfoElementsLength);
|
|
if (primitive->connectionInfo.assocRspInfoElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocRspInfoElements, ((u16) (primitive->connectionInfo.assocRspInfoElementsLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeConnectionInfoGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeConnectionInfoGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeConnectionInfoGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionInfo.ssid.ssid, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.ssid.length, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionInfo.bssid.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.networkType80211, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.channelNumber, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.channelFrequency, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.authMode, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.pairwiseCipher, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.groupCipher, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.ifIndex, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.atimWindowTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.beaconPeriodTu, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.reassociation, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.beaconFrameLength, buffer, &offset);
|
|
if (primitive->connectionInfo.beaconFrameLength)
|
|
{
|
|
primitive->connectionInfo.beaconFrame = kmalloc(primitive->connectionInfo.beaconFrameLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.beaconFrame, buffer, &offset, ((u16) (primitive->connectionInfo.beaconFrameLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.beaconFrame = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.associationReqFrameLength, buffer, &offset);
|
|
if (primitive->connectionInfo.associationReqFrameLength)
|
|
{
|
|
primitive->connectionInfo.associationReqFrame = kmalloc(primitive->connectionInfo.associationReqFrameLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.associationReqFrame, buffer, &offset, ((u16) (primitive->connectionInfo.associationReqFrameLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.associationReqFrame = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.associationRspFrameLength, buffer, &offset);
|
|
if (primitive->connectionInfo.associationRspFrameLength)
|
|
{
|
|
primitive->connectionInfo.associationRspFrame = kmalloc(primitive->connectionInfo.associationRspFrameLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.associationRspFrame, buffer, &offset, ((u16) (primitive->connectionInfo.associationRspFrameLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.associationRspFrame = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocScanInfoElementsLength, buffer, &offset);
|
|
if (primitive->connectionInfo.assocScanInfoElementsLength)
|
|
{
|
|
primitive->connectionInfo.assocScanInfoElements = kmalloc(primitive->connectionInfo.assocScanInfoElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.assocScanInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocScanInfoElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.assocScanInfoElements = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqCapabilities, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqListenIntervalTu, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionInfo.assocReqApAddress.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqInfoElementsLength, buffer, &offset);
|
|
if (primitive->connectionInfo.assocReqInfoElementsLength)
|
|
{
|
|
primitive->connectionInfo.assocReqInfoElements = kmalloc(primitive->connectionInfo.assocReqInfoElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.assocReqInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocReqInfoElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.assocReqInfoElements = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspResult, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspCapabilityInfo, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspAssociationId, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspInfoElementsLength, buffer, &offset);
|
|
if (primitive->connectionInfo.assocRspInfoElementsLength)
|
|
{
|
|
primitive->connectionInfo.assocRspInfoElements = kmalloc(primitive->connectionInfo.assocRspInfoElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.assocRspInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocRspInfoElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.assocRspInfoElements = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeConnectionInfoGetCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeConnectionInfoGetCfm *primitive = (CsrWifiSmeConnectionInfoGetCfm *) voidPrimitivePointer;
|
|
kfree(primitive->connectionInfo.beaconFrame);
|
|
kfree(primitive->connectionInfo.associationReqFrame);
|
|
kfree(primitive->connectionInfo.associationRspFrame);
|
|
kfree(primitive->connectionInfo.assocScanInfoElements);
|
|
kfree(primitive->connectionInfo.assocReqInfoElements);
|
|
kfree(primitive->connectionInfo.assocRspInfoElements);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeConnectionQualityIndSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 9) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* s16 primitive->linkQuality.unifiRssi */
|
|
bufferSize += 2; /* s16 primitive->linkQuality.unifiSnr */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeConnectionQualityIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeConnectionQualityInd *primitive = (CsrWifiSmeConnectionQualityInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->linkQuality.unifiRssi);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->linkQuality.unifiSnr);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeConnectionQualityIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeConnectionQualityInd *primitive = kmalloc(sizeof(CsrWifiSmeConnectionQualityInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->linkQuality.unifiRssi, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->linkQuality.unifiSnr, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeConnectionStatsGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 101) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* u8 primitive->connectionStats.unifiTxDataRate */
|
|
bufferSize += 1; /* u8 primitive->connectionStats.unifiRxDataRate */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11RetryCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11MultipleRetryCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11AckFailureCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11FrameDuplicateCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11FcsErrorCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11RtsSuccessCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11RtsFailureCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11FailedCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11TransmittedFragmentCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11TransmittedFrameCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11WepExcludedCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11WepIcvErrorCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11WepUndecryptableCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11MulticastReceivedFrameCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11MulticastTransmittedFrameCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11ReceivedFragmentCount */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11Rsna4WayHandshakeFailures */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11RsnaTkipCounterMeasuresInvoked */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11RsnaStatsTkipLocalMicFailures */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11RsnaStatsTkipReplays */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11RsnaStatsTkipIcvErrors */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11RsnaStatsCcmpReplays */
|
|
bufferSize += 4; /* u32 primitive->connectionStats.dot11RsnaStatsCcmpDecryptErrors */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeConnectionStatsGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeConnectionStatsGetCfm *primitive = (CsrWifiSmeConnectionStatsGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionStats.unifiTxDataRate);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionStats.unifiRxDataRate);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RetryCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11MultipleRetryCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11AckFailureCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11FrameDuplicateCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11FcsErrorCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RtsSuccessCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RtsFailureCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11FailedCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11TransmittedFragmentCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11TransmittedFrameCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11WepExcludedCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11WepIcvErrorCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11WepUndecryptableCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11MulticastReceivedFrameCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11MulticastTransmittedFrameCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11ReceivedFragmentCount);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11Rsna4WayHandshakeFailures);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RsnaTkipCounterMeasuresInvoked);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RsnaStatsTkipLocalMicFailures);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RsnaStatsTkipReplays);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RsnaStatsTkipIcvErrors);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RsnaStatsCcmpReplays);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RsnaStatsCcmpDecryptErrors);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeConnectionStatsGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeConnectionStatsGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeConnectionStatsGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionStats.unifiTxDataRate, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionStats.unifiRxDataRate, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11RetryCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11MultipleRetryCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11AckFailureCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11FrameDuplicateCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11FcsErrorCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11RtsSuccessCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11RtsFailureCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11FailedCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11TransmittedFragmentCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11TransmittedFrameCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11WepExcludedCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11WepIcvErrorCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11WepUndecryptableCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11MulticastReceivedFrameCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11MulticastTransmittedFrameCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11ReceivedFragmentCount, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11Rsna4WayHandshakeFailures, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11RsnaTkipCounterMeasuresInvoked, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11RsnaStatsTkipLocalMicFailures, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11RsnaStatsTkipReplays, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11RsnaStatsTkipIcvErrors, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11RsnaStatsCcmpReplays, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->connectionStats.dot11RsnaStatsCcmpDecryptErrors, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeDisconnectCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeDisconnectCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeDisconnectCfm *primitive = (CsrWifiSmeDisconnectCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeDisconnectCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeDisconnectCfm *primitive = kmalloc(sizeof(CsrWifiSmeDisconnectCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeHostConfigGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 10) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* CsrWifiSmeHostPowerMode primitive->hostConfig.powerMode */
|
|
bufferSize += 2; /* u16 primitive->hostConfig.applicationDataPeriodMs */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeHostConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeHostConfigGetCfm *primitive = (CsrWifiSmeHostConfigGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->hostConfig.powerMode);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->hostConfig.applicationDataPeriodMs);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeHostConfigGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeHostConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeHostConfigGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->hostConfig.powerMode, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->hostConfig.applicationDataPeriodMs, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeHostConfigSetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeHostConfigSetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeHostConfigSetCfm *primitive = (CsrWifiSmeHostConfigSetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeHostConfigSetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeHostConfigSetCfm *primitive = kmalloc(sizeof(CsrWifiSmeHostConfigSetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeIbssStationIndSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 10) */
|
|
bufferSize += 6; /* u8 primitive->address.a[6] */
|
|
bufferSize += 1; /* u8 primitive->isconnected */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeIbssStationIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeIbssStationInd *primitive = (CsrWifiSmeIbssStationInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->address.a, ((u16) (6)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->isconnected);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeIbssStationIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeIbssStationInd *primitive = kmalloc(sizeof(CsrWifiSmeIbssStationInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrMemCpyDes(primitive->address.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint8Des((u8 *) &primitive->isconnected, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeKeyCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 15) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
|
|
bufferSize += 1; /* CsrWifiSmeKeyType primitive->keyType */
|
|
bufferSize += 6; /* u8 primitive->peerMacAddress.a[6] */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeKeyCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeKeyCfm *primitive = (CsrWifiSmeKeyCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->action);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->keyType);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->peerMacAddress.a, ((u16) (6)));
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeKeyCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeKeyCfm *primitive = kmalloc(sizeof(CsrWifiSmeKeyCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->keyType, buffer, &offset);
|
|
CsrMemCpyDes(primitive->peerMacAddress.a, buffer, &offset, ((u16) (6)));
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeLinkQualityGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 2; /* s16 primitive->linkQuality.unifiRssi */
|
|
bufferSize += 2; /* s16 primitive->linkQuality.unifiSnr */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeLinkQualityGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeLinkQualityGetCfm *primitive = (CsrWifiSmeLinkQualityGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->linkQuality.unifiRssi);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->linkQuality.unifiSnr);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeLinkQualityGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeLinkQualityGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeLinkQualityGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->linkQuality.unifiRssi, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->linkQuality.unifiSnr, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeMediaStatusIndSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeMediaStatusInd *primitive = (CsrWifiSmeMediaStatusInd *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 99) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 1; /* CsrWifiSmeMediaStatus primitive->mediaStatus */
|
|
bufferSize += 32; /* u8 primitive->connectionInfo.ssid.ssid[32] */
|
|
bufferSize += 1; /* u8 primitive->connectionInfo.ssid.length */
|
|
bufferSize += 6; /* u8 primitive->connectionInfo.bssid.a[6] */
|
|
bufferSize += 1; /* CsrWifiSme80211NetworkType primitive->connectionInfo.networkType80211 */
|
|
bufferSize += 1; /* u8 primitive->connectionInfo.channelNumber */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.channelFrequency */
|
|
bufferSize += 2; /* CsrWifiSmeAuthMode primitive->connectionInfo.authMode */
|
|
bufferSize += 2; /* CsrWifiSmeEncryption primitive->connectionInfo.pairwiseCipher */
|
|
bufferSize += 2; /* CsrWifiSmeEncryption primitive->connectionInfo.groupCipher */
|
|
bufferSize += 1; /* CsrWifiSmeRadioIF primitive->connectionInfo.ifIndex */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.atimWindowTu */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.beaconPeriodTu */
|
|
bufferSize += 1; /* u8 primitive->connectionInfo.reassociation */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.beaconFrameLength */
|
|
bufferSize += primitive->connectionInfo.beaconFrameLength; /* u8 primitive->connectionInfo.beaconFrame */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.associationReqFrameLength */
|
|
bufferSize += primitive->connectionInfo.associationReqFrameLength; /* u8 primitive->connectionInfo.associationReqFrame */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.associationRspFrameLength */
|
|
bufferSize += primitive->connectionInfo.associationRspFrameLength; /* u8 primitive->connectionInfo.associationRspFrame */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocScanInfoElementsLength */
|
|
bufferSize += primitive->connectionInfo.assocScanInfoElementsLength; /* u8 primitive->connectionInfo.assocScanInfoElements */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocReqCapabilities */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocReqListenIntervalTu */
|
|
bufferSize += 6; /* u8 primitive->connectionInfo.assocReqApAddress.a[6] */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocReqInfoElementsLength */
|
|
bufferSize += primitive->connectionInfo.assocReqInfoElementsLength; /* u8 primitive->connectionInfo.assocReqInfoElements */
|
|
bufferSize += 2; /* CsrWifiSmeIEEE80211Result primitive->connectionInfo.assocRspResult */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocRspCapabilityInfo */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocRspAssociationId */
|
|
bufferSize += 2; /* u16 primitive->connectionInfo.assocRspInfoElementsLength */
|
|
bufferSize += primitive->connectionInfo.assocRspInfoElementsLength; /* u8 primitive->connectionInfo.assocRspInfoElements */
|
|
bufferSize += 2; /* CsrWifiSmeIEEE80211Reason primitive->disassocReason */
|
|
bufferSize += 2; /* CsrWifiSmeIEEE80211Reason primitive->deauthReason */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeMediaStatusIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeMediaStatusInd *primitive = (CsrWifiSmeMediaStatusInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->mediaStatus);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.ssid.ssid, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.ssid.length);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.bssid.a, ((u16) (6)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.networkType80211);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.channelNumber);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.channelFrequency);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.authMode);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.pairwiseCipher);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.groupCipher);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.ifIndex);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.atimWindowTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.beaconPeriodTu);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.reassociation);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.beaconFrameLength);
|
|
if (primitive->connectionInfo.beaconFrameLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.beaconFrame, ((u16) (primitive->connectionInfo.beaconFrameLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.associationReqFrameLength);
|
|
if (primitive->connectionInfo.associationReqFrameLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.associationReqFrame, ((u16) (primitive->connectionInfo.associationReqFrameLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.associationRspFrameLength);
|
|
if (primitive->connectionInfo.associationRspFrameLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.associationRspFrame, ((u16) (primitive->connectionInfo.associationRspFrameLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocScanInfoElementsLength);
|
|
if (primitive->connectionInfo.assocScanInfoElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocScanInfoElements, ((u16) (primitive->connectionInfo.assocScanInfoElementsLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqCapabilities);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqListenIntervalTu);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocReqApAddress.a, ((u16) (6)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqInfoElementsLength);
|
|
if (primitive->connectionInfo.assocReqInfoElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocReqInfoElements, ((u16) (primitive->connectionInfo.assocReqInfoElementsLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspResult);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspCapabilityInfo);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspAssociationId);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspInfoElementsLength);
|
|
if (primitive->connectionInfo.assocRspInfoElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocRspInfoElements, ((u16) (primitive->connectionInfo.assocRspInfoElementsLength)));
|
|
}
|
|
CsrUint16Ser(ptr, len, (u16) primitive->disassocReason);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->deauthReason);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeMediaStatusIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeMediaStatusInd *primitive = kmalloc(sizeof(CsrWifiSmeMediaStatusInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->mediaStatus, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionInfo.ssid.ssid, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.ssid.length, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionInfo.bssid.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.networkType80211, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.channelNumber, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.channelFrequency, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.authMode, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.pairwiseCipher, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.groupCipher, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.ifIndex, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.atimWindowTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.beaconPeriodTu, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->connectionInfo.reassociation, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.beaconFrameLength, buffer, &offset);
|
|
if (primitive->connectionInfo.beaconFrameLength)
|
|
{
|
|
primitive->connectionInfo.beaconFrame = kmalloc(primitive->connectionInfo.beaconFrameLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.beaconFrame, buffer, &offset, ((u16) (primitive->connectionInfo.beaconFrameLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.beaconFrame = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.associationReqFrameLength, buffer, &offset);
|
|
if (primitive->connectionInfo.associationReqFrameLength)
|
|
{
|
|
primitive->connectionInfo.associationReqFrame = kmalloc(primitive->connectionInfo.associationReqFrameLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.associationReqFrame, buffer, &offset, ((u16) (primitive->connectionInfo.associationReqFrameLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.associationReqFrame = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.associationRspFrameLength, buffer, &offset);
|
|
if (primitive->connectionInfo.associationRspFrameLength)
|
|
{
|
|
primitive->connectionInfo.associationRspFrame = kmalloc(primitive->connectionInfo.associationRspFrameLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.associationRspFrame, buffer, &offset, ((u16) (primitive->connectionInfo.associationRspFrameLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.associationRspFrame = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocScanInfoElementsLength, buffer, &offset);
|
|
if (primitive->connectionInfo.assocScanInfoElementsLength)
|
|
{
|
|
primitive->connectionInfo.assocScanInfoElements = kmalloc(primitive->connectionInfo.assocScanInfoElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.assocScanInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocScanInfoElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.assocScanInfoElements = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqCapabilities, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqListenIntervalTu, buffer, &offset);
|
|
CsrMemCpyDes(primitive->connectionInfo.assocReqApAddress.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqInfoElementsLength, buffer, &offset);
|
|
if (primitive->connectionInfo.assocReqInfoElementsLength)
|
|
{
|
|
primitive->connectionInfo.assocReqInfoElements = kmalloc(primitive->connectionInfo.assocReqInfoElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.assocReqInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocReqInfoElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.assocReqInfoElements = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspResult, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspCapabilityInfo, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspAssociationId, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspInfoElementsLength, buffer, &offset);
|
|
if (primitive->connectionInfo.assocRspInfoElementsLength)
|
|
{
|
|
primitive->connectionInfo.assocRspInfoElements = kmalloc(primitive->connectionInfo.assocRspInfoElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->connectionInfo.assocRspInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocRspInfoElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->connectionInfo.assocRspInfoElements = NULL;
|
|
}
|
|
CsrUint16Des((u16 *) &primitive->disassocReason, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->deauthReason, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeMediaStatusIndSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeMediaStatusInd *primitive = (CsrWifiSmeMediaStatusInd *) voidPrimitivePointer;
|
|
kfree(primitive->connectionInfo.beaconFrame);
|
|
kfree(primitive->connectionInfo.associationReqFrame);
|
|
kfree(primitive->connectionInfo.associationRspFrame);
|
|
kfree(primitive->connectionInfo.assocScanInfoElements);
|
|
kfree(primitive->connectionInfo.assocReqInfoElements);
|
|
kfree(primitive->connectionInfo.assocRspInfoElements);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeMibConfigGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* u8 primitive->mibConfig.unifiFixMaxTxDataRate */
|
|
bufferSize += 1; /* u8 primitive->mibConfig.unifiFixTxDataRate */
|
|
bufferSize += 2; /* u16 primitive->mibConfig.dot11RtsThreshold */
|
|
bufferSize += 2; /* u16 primitive->mibConfig.dot11FragmentationThreshold */
|
|
bufferSize += 2; /* u16 primitive->mibConfig.dot11CurrentTxPowerLevel */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeMibConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeMibConfigGetCfm *primitive = (CsrWifiSmeMibConfigGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->mibConfig.unifiFixMaxTxDataRate);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->mibConfig.unifiFixTxDataRate);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibConfig.dot11RtsThreshold);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibConfig.dot11FragmentationThreshold);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibConfig.dot11CurrentTxPowerLevel);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeMibConfigGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeMibConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeMibConfigGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->mibConfig.unifiFixMaxTxDataRate, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->mibConfig.unifiFixTxDataRate, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->mibConfig.dot11RtsThreshold, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->mibConfig.dot11FragmentationThreshold, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->mibConfig.dot11CurrentTxPowerLevel, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeMibGetCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeMibGetCfm *primitive = (CsrWifiSmeMibGetCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 2; /* u16 primitive->mibAttributeLength */
|
|
bufferSize += primitive->mibAttributeLength; /* u8 primitive->mibAttribute */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeMibGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeMibGetCfm *primitive = (CsrWifiSmeMibGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibAttributeLength);
|
|
if (primitive->mibAttributeLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->mibAttribute, ((u16) (primitive->mibAttributeLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeMibGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeMibGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeMibGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->mibAttributeLength, buffer, &offset);
|
|
if (primitive->mibAttributeLength)
|
|
{
|
|
primitive->mibAttribute = kmalloc(primitive->mibAttributeLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->mibAttribute, buffer, &offset, ((u16) (primitive->mibAttributeLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->mibAttribute = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeMibGetCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeMibGetCfm *primitive = (CsrWifiSmeMibGetCfm *) voidPrimitivePointer;
|
|
kfree(primitive->mibAttribute);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeMibGetNextCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeMibGetNextCfm *primitive = (CsrWifiSmeMibGetNextCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 2; /* u16 primitive->mibAttributeLength */
|
|
bufferSize += primitive->mibAttributeLength; /* u8 primitive->mibAttribute */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeMibGetNextCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeMibGetNextCfm *primitive = (CsrWifiSmeMibGetNextCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->mibAttributeLength);
|
|
if (primitive->mibAttributeLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->mibAttribute, ((u16) (primitive->mibAttributeLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeMibGetNextCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeMibGetNextCfm *primitive = kmalloc(sizeof(CsrWifiSmeMibGetNextCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->mibAttributeLength, buffer, &offset);
|
|
if (primitive->mibAttributeLength)
|
|
{
|
|
primitive->mibAttribute = kmalloc(primitive->mibAttributeLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->mibAttribute, buffer, &offset, ((u16) (primitive->mibAttributeLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->mibAttribute = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeMibGetNextCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeMibGetNextCfm *primitive = (CsrWifiSmeMibGetNextCfm *) voidPrimitivePointer;
|
|
kfree(primitive->mibAttribute);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeMicFailureIndSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 15) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 1; /* u8 primitive->secondFailure */
|
|
bufferSize += 2; /* u16 primitive->count */
|
|
bufferSize += 6; /* u8 primitive->address.a[6] */
|
|
bufferSize += 1; /* CsrWifiSmeKeyType primitive->keyType */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeMicFailureIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeMicFailureInd *primitive = (CsrWifiSmeMicFailureInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->secondFailure);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->count);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->address.a, ((u16) (6)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->keyType);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeMicFailureIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeMicFailureInd *primitive = kmalloc(sizeof(CsrWifiSmeMicFailureInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->secondFailure, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->count, buffer, &offset);
|
|
CsrMemCpyDes(primitive->address.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint8Des((u8 *) &primitive->keyType, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeMulticastAddressCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeMulticastAddressCfm *primitive = (CsrWifiSmeMulticastAddressCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 15) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
|
|
bufferSize += 1; /* u8 primitive->getAddressesCount */
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->getAddressesCount; i1++)
|
|
{
|
|
bufferSize += 6; /* u8 primitive->getAddresses[i1].a[6] */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeMulticastAddressCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeMulticastAddressCfm *primitive = (CsrWifiSmeMulticastAddressCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->action);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->getAddressesCount);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->getAddressesCount; i1++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->getAddresses[i1].a, ((u16) (6)));
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeMulticastAddressCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeMulticastAddressCfm *primitive = kmalloc(sizeof(CsrWifiSmeMulticastAddressCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->getAddressesCount, buffer, &offset);
|
|
primitive->getAddresses = NULL;
|
|
if (primitive->getAddressesCount)
|
|
{
|
|
primitive->getAddresses = kmalloc(sizeof(CsrWifiMacAddress) * primitive->getAddressesCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->getAddressesCount; i1++)
|
|
{
|
|
CsrMemCpyDes(primitive->getAddresses[i1].a, buffer, &offset, ((u16) (6)));
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeMulticastAddressCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeMulticastAddressCfm *primitive = (CsrWifiSmeMulticastAddressCfm *) voidPrimitivePointer;
|
|
kfree(primitive->getAddresses);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmePacketFilterSetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmePacketFilterSetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmePacketFilterSetCfm *primitive = (CsrWifiSmePacketFilterSetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmePacketFilterSetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmePacketFilterSetCfm *primitive = kmalloc(sizeof(CsrWifiSmePacketFilterSetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmePermanentMacAddressGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 6; /* u8 primitive->permanentMacAddress.a[6] */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmePermanentMacAddressGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmePermanentMacAddressGetCfm *primitive = (CsrWifiSmePermanentMacAddressGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->permanentMacAddress.a, ((u16) (6)));
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmePermanentMacAddressGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmePermanentMacAddressGetCfm *primitive = kmalloc(sizeof(CsrWifiSmePermanentMacAddressGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrMemCpyDes(primitive->permanentMacAddress.a, buffer, &offset, ((u16) (6)));
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmePmkidCandidateListIndSizeof(void *msg)
|
|
{
|
|
CsrWifiSmePmkidCandidateListInd *primitive = (CsrWifiSmePmkidCandidateListInd *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 1; /* u8 primitive->pmkidCandidatesCount */
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->pmkidCandidatesCount; i1++)
|
|
{
|
|
bufferSize += 6; /* u8 primitive->pmkidCandidates[i1].bssid.a[6] */
|
|
bufferSize += 1; /* u8 primitive->pmkidCandidates[i1].preAuthAllowed */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmePmkidCandidateListIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmePmkidCandidateListInd *primitive = (CsrWifiSmePmkidCandidateListInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->pmkidCandidatesCount);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->pmkidCandidatesCount; i1++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->pmkidCandidates[i1].bssid.a, ((u16) (6)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->pmkidCandidates[i1].preAuthAllowed);
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmePmkidCandidateListIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmePmkidCandidateListInd *primitive = kmalloc(sizeof(CsrWifiSmePmkidCandidateListInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->pmkidCandidatesCount, buffer, &offset);
|
|
primitive->pmkidCandidates = NULL;
|
|
if (primitive->pmkidCandidatesCount)
|
|
{
|
|
primitive->pmkidCandidates = kmalloc(sizeof(CsrWifiSmePmkidCandidate) * primitive->pmkidCandidatesCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->pmkidCandidatesCount; i1++)
|
|
{
|
|
CsrMemCpyDes(primitive->pmkidCandidates[i1].bssid.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint8Des((u8 *) &primitive->pmkidCandidates[i1].preAuthAllowed, buffer, &offset);
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmePmkidCandidateListIndSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmePmkidCandidateListInd *primitive = (CsrWifiSmePmkidCandidateListInd *) voidPrimitivePointer;
|
|
kfree(primitive->pmkidCandidates);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmePmkidCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmePmkidCfm *primitive = (CsrWifiSmePmkidCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 31) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
|
|
bufferSize += 1; /* u8 primitive->getPmkidsCount */
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->getPmkidsCount; i1++)
|
|
{
|
|
bufferSize += 6; /* u8 primitive->getPmkids[i1].bssid.a[6] */
|
|
bufferSize += 16; /* u8 primitive->getPmkids[i1].pmkid[16] */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmePmkidCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmePmkidCfm *primitive = (CsrWifiSmePmkidCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->action);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->getPmkidsCount);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->getPmkidsCount; i1++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->getPmkids[i1].bssid.a, ((u16) (6)));
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->getPmkids[i1].pmkid, ((u16) (16)));
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmePmkidCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmePmkidCfm *primitive = kmalloc(sizeof(CsrWifiSmePmkidCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->getPmkidsCount, buffer, &offset);
|
|
primitive->getPmkids = NULL;
|
|
if (primitive->getPmkidsCount)
|
|
{
|
|
primitive->getPmkids = kmalloc(sizeof(CsrWifiSmePmkid) * primitive->getPmkidsCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->getPmkidsCount; i1++)
|
|
{
|
|
CsrMemCpyDes(primitive->getPmkids[i1].bssid.a, buffer, &offset, ((u16) (6)));
|
|
CsrMemCpyDes(primitive->getPmkids[i1].pmkid, buffer, &offset, ((u16) (16)));
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmePmkidCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmePmkidCfm *primitive = (CsrWifiSmePmkidCfm *) voidPrimitivePointer;
|
|
kfree(primitive->getPmkids);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmePowerConfigGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* CsrWifiSmePowerSaveLevel primitive->powerConfig.powerSaveLevel */
|
|
bufferSize += 2; /* u16 primitive->powerConfig.listenIntervalTu */
|
|
bufferSize += 1; /* u8 primitive->powerConfig.rxDtims */
|
|
bufferSize += 1; /* CsrWifiSmeD3AutoScanMode primitive->powerConfig.d3AutoScanMode */
|
|
bufferSize += 1; /* u8 primitive->powerConfig.clientTrafficWindow */
|
|
bufferSize += 1; /* u8 primitive->powerConfig.opportunisticPowerSave */
|
|
bufferSize += 1; /* u8 primitive->powerConfig.noticeOfAbsence */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmePowerConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmePowerConfigGetCfm *primitive = (CsrWifiSmePowerConfigGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.powerSaveLevel);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->powerConfig.listenIntervalTu);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.rxDtims);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.d3AutoScanMode);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.clientTrafficWindow);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.opportunisticPowerSave);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.noticeOfAbsence);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmePowerConfigGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmePowerConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmePowerConfigGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->powerConfig.powerSaveLevel, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->powerConfig.listenIntervalTu, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->powerConfig.rxDtims, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->powerConfig.d3AutoScanMode, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->powerConfig.clientTrafficWindow, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->powerConfig.opportunisticPowerSave, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->powerConfig.noticeOfAbsence, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeRegulatoryDomainInfoGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 10) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* u8 primitive->regDomInfo.dot11MultiDomainCapabilityImplemented */
|
|
bufferSize += 1; /* u8 primitive->regDomInfo.dot11MultiDomainCapabilityEnabled */
|
|
bufferSize += 1; /* CsrWifiSmeRegulatoryDomain primitive->regDomInfo.currentRegulatoryDomain */
|
|
bufferSize += 2; /* u8 primitive->regDomInfo.currentCountryCode[2] */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeRegulatoryDomainInfoGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeRegulatoryDomainInfoGetCfm *primitive = (CsrWifiSmeRegulatoryDomainInfoGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->regDomInfo.dot11MultiDomainCapabilityImplemented);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->regDomInfo.dot11MultiDomainCapabilityEnabled);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->regDomInfo.currentRegulatoryDomain);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->regDomInfo.currentCountryCode, ((u16) (2)));
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeRegulatoryDomainInfoGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeRegulatoryDomainInfoGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeRegulatoryDomainInfoGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->regDomInfo.dot11MultiDomainCapabilityImplemented, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->regDomInfo.dot11MultiDomainCapabilityEnabled, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->regDomInfo.currentRegulatoryDomain, buffer, &offset);
|
|
CsrMemCpyDes(primitive->regDomInfo.currentCountryCode, buffer, &offset, ((u16) (2)));
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeRoamCompleteIndSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeRoamCompleteIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeRoamCompleteInd *primitive = (CsrWifiSmeRoamCompleteInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeRoamCompleteIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeRoamCompleteInd *primitive = kmalloc(sizeof(CsrWifiSmeRoamCompleteInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeRoamStartIndSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 1; /* CsrWifiSmeRoamReason primitive->roamReason */
|
|
bufferSize += 2; /* CsrWifiSmeIEEE80211Reason primitive->reason80211 */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeRoamStartIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeRoamStartInd *primitive = (CsrWifiSmeRoamStartInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->roamReason);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->reason80211);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeRoamStartIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeRoamStartInd *primitive = kmalloc(sizeof(CsrWifiSmeRoamStartInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->roamReason, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->reason80211, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeRoamingConfigGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 72) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 3; i2++)
|
|
{
|
|
bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].rssiHighThreshold */
|
|
bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].rssiLowThreshold */
|
|
bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].snrHighThreshold */
|
|
bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].snrLowThreshold */
|
|
}
|
|
}
|
|
bufferSize += 1; /* u8 primitive->roamingConfig.disableSmoothRoaming */
|
|
bufferSize += 1; /* u8 primitive->roamingConfig.disableRoamScans */
|
|
bufferSize += 1; /* u8 primitive->roamingConfig.reconnectLimit */
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.reconnectLimitIntervalMs */
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 3; i2++)
|
|
{
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].intervalSeconds */
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].validitySeconds */
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].minActiveChannelTimeTu */
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].maxActiveChannelTimeTu */
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].minPassiveChannelTimeTu */
|
|
bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].maxPassiveChannelTimeTu */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeRoamingConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeRoamingConfigGetCfm *primitive = (CsrWifiSmeRoamingConfigGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 3; i2++)
|
|
{
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].rssiHighThreshold);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].rssiLowThreshold);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].snrHighThreshold);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].snrLowThreshold);
|
|
}
|
|
}
|
|
CsrUint8Ser(ptr, len, (u8) primitive->roamingConfig.disableSmoothRoaming);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->roamingConfig.disableRoamScans);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->roamingConfig.reconnectLimit);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.reconnectLimitIntervalMs);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 3; i2++)
|
|
{
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].intervalSeconds);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].validitySeconds);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].minActiveChannelTimeTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].maxActiveChannelTimeTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].minPassiveChannelTimeTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].maxPassiveChannelTimeTu);
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeRoamingConfigGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeRoamingConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeRoamingConfigGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 3; i2++)
|
|
{
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].rssiHighThreshold, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].rssiLowThreshold, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].snrHighThreshold, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].snrLowThreshold, buffer, &offset);
|
|
}
|
|
}
|
|
CsrUint8Des((u8 *) &primitive->roamingConfig.disableSmoothRoaming, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->roamingConfig.disableRoamScans, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->roamingConfig.reconnectLimit, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.reconnectLimitIntervalMs, buffer, &offset);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 3; i2++)
|
|
{
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].intervalSeconds, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].validitySeconds, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].minActiveChannelTimeTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].maxActiveChannelTimeTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].minPassiveChannelTimeTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].maxPassiveChannelTimeTu, buffer, &offset);
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeRoamingConfigSetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeRoamingConfigSetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeRoamingConfigSetCfm *primitive = (CsrWifiSmeRoamingConfigSetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeRoamingConfigSetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeRoamingConfigSetCfm *primitive = kmalloc(sizeof(CsrWifiSmeRoamingConfigSetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeScanConfigGetCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeScanConfigGetCfm *primitive = (CsrWifiSmeScanConfigGetCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 65) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 4; i2++)
|
|
{
|
|
bufferSize += 2; /* u16 primitive->scanConfig.scanCfg[i2].intervalSeconds */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.scanCfg[i2].validitySeconds */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.scanCfg[i2].minActiveChannelTimeTu */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.scanCfg[i2].maxActiveChannelTimeTu */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.scanCfg[i2].minPassiveChannelTimeTu */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.scanCfg[i2].maxPassiveChannelTimeTu */
|
|
}
|
|
}
|
|
bufferSize += 1; /* u8 primitive->scanConfig.disableAutonomousScans */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.maxResults */
|
|
bufferSize += 1; /* s8 primitive->scanConfig.highRssiThreshold */
|
|
bufferSize += 1; /* s8 primitive->scanConfig.lowRssiThreshold */
|
|
bufferSize += 1; /* s8 primitive->scanConfig.deltaRssiThreshold */
|
|
bufferSize += 1; /* s8 primitive->scanConfig.highSnrThreshold */
|
|
bufferSize += 1; /* s8 primitive->scanConfig.lowSnrThreshold */
|
|
bufferSize += 1; /* s8 primitive->scanConfig.deltaSnrThreshold */
|
|
bufferSize += 2; /* u16 primitive->scanConfig.passiveChannelListCount */
|
|
bufferSize += primitive->scanConfig.passiveChannelListCount; /* u8 primitive->scanConfig.passiveChannelList */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeScanConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeScanConfigGetCfm *primitive = (CsrWifiSmeScanConfigGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 4; i2++)
|
|
{
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].intervalSeconds);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].validitySeconds);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].minActiveChannelTimeTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].maxActiveChannelTimeTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].minPassiveChannelTimeTu);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].maxPassiveChannelTimeTu);
|
|
}
|
|
}
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.disableAutonomousScans);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.maxResults);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.highRssiThreshold);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.lowRssiThreshold);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.deltaRssiThreshold);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.highSnrThreshold);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.lowSnrThreshold);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.deltaSnrThreshold);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.passiveChannelListCount);
|
|
if (primitive->scanConfig.passiveChannelListCount)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanConfig.passiveChannelList, ((u16) (primitive->scanConfig.passiveChannelListCount)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeScanConfigGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeScanConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeScanConfigGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < 4; i2++)
|
|
{
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].intervalSeconds, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].validitySeconds, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].minActiveChannelTimeTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].maxActiveChannelTimeTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].minPassiveChannelTimeTu, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].maxPassiveChannelTimeTu, buffer, &offset);
|
|
}
|
|
}
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.disableAutonomousScans, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.maxResults, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.highRssiThreshold, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.lowRssiThreshold, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.deltaRssiThreshold, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.highSnrThreshold, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.lowSnrThreshold, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanConfig.deltaSnrThreshold, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanConfig.passiveChannelListCount, buffer, &offset);
|
|
if (primitive->scanConfig.passiveChannelListCount)
|
|
{
|
|
primitive->scanConfig.passiveChannelList = kmalloc(primitive->scanConfig.passiveChannelListCount, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->scanConfig.passiveChannelList, buffer, &offset, ((u16) (primitive->scanConfig.passiveChannelListCount)));
|
|
}
|
|
else
|
|
{
|
|
primitive->scanConfig.passiveChannelList = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeScanConfigGetCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeScanConfigGetCfm *primitive = (CsrWifiSmeScanConfigGetCfm *) voidPrimitivePointer;
|
|
kfree(primitive->scanConfig.passiveChannelList);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeScanResultIndSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeScanResultInd *primitive = (CsrWifiSmeScanResultInd *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 149) */
|
|
bufferSize += 32; /* u8 primitive->result.ssid.ssid[32] */
|
|
bufferSize += 1; /* u8 primitive->result.ssid.length */
|
|
bufferSize += 6; /* u8 primitive->result.bssid.a[6] */
|
|
bufferSize += 2; /* s16 primitive->result.rssi */
|
|
bufferSize += 2; /* s16 primitive->result.snr */
|
|
bufferSize += 1; /* CsrWifiSmeRadioIF primitive->result.ifIndex */
|
|
bufferSize += 2; /* u16 primitive->result.beaconPeriodTu */
|
|
bufferSize += 8; /* u8 primitive->result.timeStamp.data[8] */
|
|
bufferSize += 8; /* u8 primitive->result.localTime.data[8] */
|
|
bufferSize += 2; /* u16 primitive->result.channelFrequency */
|
|
bufferSize += 2; /* u16 primitive->result.capabilityInformation */
|
|
bufferSize += 1; /* u8 primitive->result.channelNumber */
|
|
bufferSize += 1; /* CsrWifiSmeBasicUsability primitive->result.usability */
|
|
bufferSize += 1; /* CsrWifiSmeBssType primitive->result.bssType */
|
|
bufferSize += 2; /* u16 primitive->result.informationElementsLength */
|
|
bufferSize += primitive->result.informationElementsLength; /* u8 primitive->result.informationElements */
|
|
bufferSize += 1; /* CsrWifiSmeP2pRole primitive->result.p2pDeviceRole */
|
|
switch (primitive->result.p2pDeviceRole)
|
|
{
|
|
case CSR_WIFI_SME_P2P_ROLE_CLI:
|
|
bufferSize += 1; /* u8 primitive->result.deviceInfo.reservedCli.empty */
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_GO:
|
|
bufferSize += 1; /* CsrWifiSmeP2pGroupCapabilityMask primitive->result.deviceInfo.groupInfo.groupCapability */
|
|
bufferSize += 6; /* u8 primitive->result.deviceInfo.groupInfo.p2pDeviceAddress.a[6] */
|
|
bufferSize += 1; /* u8 primitive->result.deviceInfo.groupInfo.p2pClientInfoCount */
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->result.deviceInfo.groupInfo.p2pClientInfoCount; i4++)
|
|
{
|
|
bufferSize += 6; /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].p2PClientInterfaceAddress.a[6] */
|
|
bufferSize += 6; /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceAddress.a[6] */
|
|
bufferSize += 2; /* CsrWifiSmeWpsConfigTypeMask primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.configMethods */
|
|
bufferSize += 1; /* CsrWifiSmeP2pCapabilityMask primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.p2PDeviceCap */
|
|
bufferSize += 8; /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.primDeviceType.deviceDetails[8] */
|
|
bufferSize += 1; /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount */
|
|
{
|
|
u16 i6;
|
|
for (i6 = 0; i6 < primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount; i6++)
|
|
{
|
|
bufferSize += 8; /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType[i6].deviceDetails[8] */
|
|
}
|
|
}
|
|
bufferSize += 32; /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceName[32] */
|
|
bufferSize += 1; /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceNameLength */
|
|
}
|
|
}
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_NONE:
|
|
bufferSize += 1; /* u8 primitive->result.deviceInfo.reservedNone.empty */
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
|
|
bufferSize += 6; /* u8 primitive->result.deviceInfo.standalonedevInfo.deviceAddress.a[6] */
|
|
bufferSize += 2; /* CsrWifiSmeWpsConfigTypeMask primitive->result.deviceInfo.standalonedevInfo.configMethods */
|
|
bufferSize += 1; /* CsrWifiSmeP2pCapabilityMask primitive->result.deviceInfo.standalonedevInfo.p2PDeviceCap */
|
|
bufferSize += 8; /* u8 primitive->result.deviceInfo.standalonedevInfo.primDeviceType.deviceDetails[8] */
|
|
bufferSize += 1; /* u8 primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount */
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount; i4++)
|
|
{
|
|
bufferSize += 8; /* u8 primitive->result.deviceInfo.standalonedevInfo.secDeviceType[i4].deviceDetails[8] */
|
|
}
|
|
}
|
|
bufferSize += 32; /* u8 primitive->result.deviceInfo.standalonedevInfo.deviceName[32] */
|
|
bufferSize += 1; /* u8 primitive->result.deviceInfo.standalonedevInfo.deviceNameLength */
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeScanResultIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeScanResultInd *primitive = (CsrWifiSmeScanResultInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.ssid.ssid, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.ssid.length);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.bssid.a, ((u16) (6)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->result.rssi);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->result.snr);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.ifIndex);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->result.beaconPeriodTu);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.timeStamp.data, ((u16) (8)));
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.localTime.data, ((u16) (8)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->result.channelFrequency);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->result.capabilityInformation);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.channelNumber);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.usability);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.bssType);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->result.informationElementsLength);
|
|
if (primitive->result.informationElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.informationElements, ((u16) (primitive->result.informationElementsLength)));
|
|
}
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.p2pDeviceRole);
|
|
switch (primitive->result.p2pDeviceRole)
|
|
{
|
|
case CSR_WIFI_SME_P2P_ROLE_CLI:
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.reservedCli.empty);
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_GO:
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.groupInfo.groupCapability);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.groupInfo.p2pDeviceAddress.a, ((u16) (6)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.groupInfo.p2pClientInfoCount);
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->result.deviceInfo.groupInfo.p2pClientInfoCount; i4++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].p2PClientInterfaceAddress.a, ((u16) (6)));
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceAddress.a, ((u16) (6)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.configMethods);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.p2PDeviceCap);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.primDeviceType.deviceDetails, ((u16) (8)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount);
|
|
{
|
|
u16 i6;
|
|
for (i6 = 0; i6 < primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount; i6++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType[i6].deviceDetails, ((u16) (8)));
|
|
}
|
|
}
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceName, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceNameLength);
|
|
}
|
|
}
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_NONE:
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.reservedNone.empty);
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.standalonedevInfo.deviceAddress.a, ((u16) (6)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->result.deviceInfo.standalonedevInfo.configMethods);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.standalonedevInfo.p2PDeviceCap);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.standalonedevInfo.primDeviceType.deviceDetails, ((u16) (8)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount);
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount; i4++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.standalonedevInfo.secDeviceType[i4].deviceDetails, ((u16) (8)));
|
|
}
|
|
}
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.standalonedevInfo.deviceName, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.standalonedevInfo.deviceNameLength);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeScanResultIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeScanResultInd *primitive = kmalloc(sizeof(CsrWifiSmeScanResultInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrMemCpyDes(primitive->result.ssid.ssid, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->result.ssid.length, buffer, &offset);
|
|
CsrMemCpyDes(primitive->result.bssid.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint16Des((u16 *) &primitive->result.rssi, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->result.snr, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->result.ifIndex, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->result.beaconPeriodTu, buffer, &offset);
|
|
CsrMemCpyDes(primitive->result.timeStamp.data, buffer, &offset, ((u16) (8)));
|
|
CsrMemCpyDes(primitive->result.localTime.data, buffer, &offset, ((u16) (8)));
|
|
CsrUint16Des((u16 *) &primitive->result.channelFrequency, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->result.capabilityInformation, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->result.channelNumber, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->result.usability, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->result.bssType, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->result.informationElementsLength, buffer, &offset);
|
|
if (primitive->result.informationElementsLength)
|
|
{
|
|
primitive->result.informationElements = kmalloc(primitive->result.informationElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->result.informationElements, buffer, &offset, ((u16) (primitive->result.informationElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->result.informationElements = NULL;
|
|
}
|
|
CsrUint8Des((u8 *) &primitive->result.p2pDeviceRole, buffer, &offset);
|
|
switch (primitive->result.p2pDeviceRole)
|
|
{
|
|
case CSR_WIFI_SME_P2P_ROLE_CLI:
|
|
CsrUint8Des((u8 *) &primitive->result.deviceInfo.reservedCli.empty, buffer, &offset);
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_GO:
|
|
CsrUint8Des((u8 *) &primitive->result.deviceInfo.groupInfo.groupCapability, buffer, &offset);
|
|
CsrMemCpyDes(primitive->result.deviceInfo.groupInfo.p2pDeviceAddress.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint8Des((u8 *) &primitive->result.deviceInfo.groupInfo.p2pClientInfoCount, buffer, &offset);
|
|
primitive->result.deviceInfo.groupInfo.p2PClientInfo = NULL;
|
|
if (primitive->result.deviceInfo.groupInfo.p2pClientInfoCount)
|
|
{
|
|
primitive->result.deviceInfo.groupInfo.p2PClientInfo = kmalloc(sizeof(CsrWifiSmeP2pClientInfoType) * primitive->result.deviceInfo.groupInfo.p2pClientInfoCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->result.deviceInfo.groupInfo.p2pClientInfoCount; i4++)
|
|
{
|
|
CsrMemCpyDes(primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].p2PClientInterfaceAddress.a, buffer, &offset, ((u16) (6)));
|
|
CsrMemCpyDes(primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceAddress.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint16Des((u16 *) &primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.configMethods, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.p2PDeviceCap, buffer, &offset);
|
|
CsrMemCpyDes(primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.primDeviceType.deviceDetails, buffer, &offset, ((u16) (8)));
|
|
CsrUint8Des((u8 *) &primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount, buffer, &offset);
|
|
primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType = NULL;
|
|
if (primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount)
|
|
{
|
|
primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType = kmalloc(sizeof(CsrWifiSmeWpsDeviceType) * primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i6;
|
|
for (i6 = 0; i6 < primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount; i6++)
|
|
{
|
|
CsrMemCpyDes(primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType[i6].deviceDetails, buffer, &offset, ((u16) (8)));
|
|
}
|
|
}
|
|
CsrMemCpyDes(primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceName, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceNameLength, buffer, &offset);
|
|
}
|
|
}
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_NONE:
|
|
CsrUint8Des((u8 *) &primitive->result.deviceInfo.reservedNone.empty, buffer, &offset);
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
|
|
CsrMemCpyDes(primitive->result.deviceInfo.standalonedevInfo.deviceAddress.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint16Des((u16 *) &primitive->result.deviceInfo.standalonedevInfo.configMethods, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->result.deviceInfo.standalonedevInfo.p2PDeviceCap, buffer, &offset);
|
|
CsrMemCpyDes(primitive->result.deviceInfo.standalonedevInfo.primDeviceType.deviceDetails, buffer, &offset, ((u16) (8)));
|
|
CsrUint8Des((u8 *) &primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount, buffer, &offset);
|
|
primitive->result.deviceInfo.standalonedevInfo.secDeviceType = NULL;
|
|
if (primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount)
|
|
{
|
|
primitive->result.deviceInfo.standalonedevInfo.secDeviceType = kmalloc(sizeof(CsrWifiSmeWpsDeviceType) * primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount; i4++)
|
|
{
|
|
CsrMemCpyDes(primitive->result.deviceInfo.standalonedevInfo.secDeviceType[i4].deviceDetails, buffer, &offset, ((u16) (8)));
|
|
}
|
|
}
|
|
CsrMemCpyDes(primitive->result.deviceInfo.standalonedevInfo.deviceName, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->result.deviceInfo.standalonedevInfo.deviceNameLength, buffer, &offset);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeScanResultIndSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeScanResultInd *primitive = (CsrWifiSmeScanResultInd *) voidPrimitivePointer;
|
|
kfree(primitive->result.informationElements);
|
|
switch (primitive->result.p2pDeviceRole)
|
|
{
|
|
case CSR_WIFI_SME_P2P_ROLE_GO:
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->result.deviceInfo.groupInfo.p2pClientInfoCount; i4++)
|
|
{
|
|
kfree(primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType);
|
|
}
|
|
}
|
|
kfree(primitive->result.deviceInfo.groupInfo.p2PClientInfo);
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
|
|
kfree(primitive->result.deviceInfo.standalonedevInfo.secDeviceType);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeScanResultsGetCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeScanResultsGetCfm *primitive = (CsrWifiSmeScanResultsGetCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 153) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 2; /* u16 primitive->scanResultsCount */
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->scanResultsCount; i1++)
|
|
{
|
|
bufferSize += 32; /* u8 primitive->scanResults[i1].ssid.ssid[32] */
|
|
bufferSize += 1; /* u8 primitive->scanResults[i1].ssid.length */
|
|
bufferSize += 6; /* u8 primitive->scanResults[i1].bssid.a[6] */
|
|
bufferSize += 2; /* s16 primitive->scanResults[i1].rssi */
|
|
bufferSize += 2; /* s16 primitive->scanResults[i1].snr */
|
|
bufferSize += 1; /* CsrWifiSmeRadioIF primitive->scanResults[i1].ifIndex */
|
|
bufferSize += 2; /* u16 primitive->scanResults[i1].beaconPeriodTu */
|
|
bufferSize += 8; /* u8 primitive->scanResults[i1].timeStamp.data[8] */
|
|
bufferSize += 8; /* u8 primitive->scanResults[i1].localTime.data[8] */
|
|
bufferSize += 2; /* u16 primitive->scanResults[i1].channelFrequency */
|
|
bufferSize += 2; /* u16 primitive->scanResults[i1].capabilityInformation */
|
|
bufferSize += 1; /* u8 primitive->scanResults[i1].channelNumber */
|
|
bufferSize += 1; /* CsrWifiSmeBasicUsability primitive->scanResults[i1].usability */
|
|
bufferSize += 1; /* CsrWifiSmeBssType primitive->scanResults[i1].bssType */
|
|
bufferSize += 2; /* u16 primitive->scanResults[i1].informationElementsLength */
|
|
bufferSize += primitive->scanResults[i1].informationElementsLength; /* u8 primitive->scanResults[i1].informationElements */
|
|
bufferSize += 1; /* CsrWifiSmeP2pRole primitive->scanResults[i1].p2pDeviceRole */
|
|
switch (primitive->scanResults[i1].p2pDeviceRole)
|
|
{
|
|
case CSR_WIFI_SME_P2P_ROLE_CLI:
|
|
bufferSize += 1; /* u8 primitive->scanResults[i1].deviceInfo.reservedCli.empty */
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_GO:
|
|
bufferSize += 1; /* CsrWifiSmeP2pGroupCapabilityMask primitive->scanResults[i1].deviceInfo.groupInfo.groupCapability */
|
|
bufferSize += 6; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2pDeviceAddress.a[6] */
|
|
bufferSize += 1; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount */
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount; i4++)
|
|
{
|
|
bufferSize += 6; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].p2PClientInterfaceAddress.a[6] */
|
|
bufferSize += 6; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceAddress.a[6] */
|
|
bufferSize += 2; /* CsrWifiSmeWpsConfigTypeMask primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.configMethods */
|
|
bufferSize += 1; /* CsrWifiSmeP2pCapabilityMask primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.p2PDeviceCap */
|
|
bufferSize += 8; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.primDeviceType.deviceDetails[8] */
|
|
bufferSize += 1; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount */
|
|
{
|
|
u16 i6;
|
|
for (i6 = 0; i6 < primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount; i6++)
|
|
{
|
|
bufferSize += 8; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType[i6].deviceDetails[8] */
|
|
}
|
|
}
|
|
bufferSize += 32; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceName[32] */
|
|
bufferSize += 1; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceNameLength */
|
|
}
|
|
}
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_NONE:
|
|
bufferSize += 1; /* u8 primitive->scanResults[i1].deviceInfo.reservedNone.empty */
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
|
|
bufferSize += 6; /* u8 primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceAddress.a[6] */
|
|
bufferSize += 2; /* CsrWifiSmeWpsConfigTypeMask primitive->scanResults[i1].deviceInfo.standalonedevInfo.configMethods */
|
|
bufferSize += 1; /* CsrWifiSmeP2pCapabilityMask primitive->scanResults[i1].deviceInfo.standalonedevInfo.p2PDeviceCap */
|
|
bufferSize += 8; /* u8 primitive->scanResults[i1].deviceInfo.standalonedevInfo.primDeviceType.deviceDetails[8] */
|
|
bufferSize += 1; /* u8 primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount */
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount; i4++)
|
|
{
|
|
bufferSize += 8; /* u8 primitive->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType[i4].deviceDetails[8] */
|
|
}
|
|
}
|
|
bufferSize += 32; /* u8 primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceName[32] */
|
|
bufferSize += 1; /* u8 primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceNameLength */
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeScanResultsGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeScanResultsGetCfm *primitive = (CsrWifiSmeScanResultsGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanResultsCount);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->scanResultsCount; i1++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].ssid.ssid, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].ssid.length);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].bssid.a, ((u16) (6)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].rssi);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].snr);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].ifIndex);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].beaconPeriodTu);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].timeStamp.data, ((u16) (8)));
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].localTime.data, ((u16) (8)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].channelFrequency);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].capabilityInformation);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].channelNumber);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].usability);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].bssType);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].informationElementsLength);
|
|
if (primitive->scanResults[i1].informationElementsLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].informationElements, ((u16) (primitive->scanResults[i1].informationElementsLength)));
|
|
}
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].p2pDeviceRole);
|
|
switch (primitive->scanResults[i1].p2pDeviceRole)
|
|
{
|
|
case CSR_WIFI_SME_P2P_ROLE_CLI:
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.reservedCli.empty);
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_GO:
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.groupInfo.groupCapability);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.groupInfo.p2pDeviceAddress.a, ((u16) (6)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount);
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount; i4++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].p2PClientInterfaceAddress.a, ((u16) (6)));
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceAddress.a, ((u16) (6)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.configMethods);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.p2PDeviceCap);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.primDeviceType.deviceDetails, ((u16) (8)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount);
|
|
{
|
|
u16 i6;
|
|
for (i6 = 0; i6 < primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount; i6++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType[i6].deviceDetails, ((u16) (8)));
|
|
}
|
|
}
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceName, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceNameLength);
|
|
}
|
|
}
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_NONE:
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.reservedNone.empty);
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceAddress.a, ((u16) (6)));
|
|
CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].deviceInfo.standalonedevInfo.configMethods);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.standalonedevInfo.p2PDeviceCap);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.standalonedevInfo.primDeviceType.deviceDetails, ((u16) (8)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount);
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount; i4++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType[i4].deviceDetails, ((u16) (8)));
|
|
}
|
|
}
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceName, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceNameLength);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeScanResultsGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeScanResultsGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeScanResultsGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanResultsCount, buffer, &offset);
|
|
primitive->scanResults = NULL;
|
|
if (primitive->scanResultsCount)
|
|
{
|
|
primitive->scanResults = kmalloc(sizeof(CsrWifiSmeScanResult) * primitive->scanResultsCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->scanResultsCount; i1++)
|
|
{
|
|
CsrMemCpyDes(primitive->scanResults[i1].ssid.ssid, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].ssid.length, buffer, &offset);
|
|
CsrMemCpyDes(primitive->scanResults[i1].bssid.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint16Des((u16 *) &primitive->scanResults[i1].rssi, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanResults[i1].snr, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].ifIndex, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanResults[i1].beaconPeriodTu, buffer, &offset);
|
|
CsrMemCpyDes(primitive->scanResults[i1].timeStamp.data, buffer, &offset, ((u16) (8)));
|
|
CsrMemCpyDes(primitive->scanResults[i1].localTime.data, buffer, &offset, ((u16) (8)));
|
|
CsrUint16Des((u16 *) &primitive->scanResults[i1].channelFrequency, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanResults[i1].capabilityInformation, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].channelNumber, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].usability, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].bssType, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->scanResults[i1].informationElementsLength, buffer, &offset);
|
|
if (primitive->scanResults[i1].informationElementsLength)
|
|
{
|
|
primitive->scanResults[i1].informationElements = kmalloc(primitive->scanResults[i1].informationElementsLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->scanResults[i1].informationElements, buffer, &offset, ((u16) (primitive->scanResults[i1].informationElementsLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->scanResults[i1].informationElements = NULL;
|
|
}
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].p2pDeviceRole, buffer, &offset);
|
|
switch (primitive->scanResults[i1].p2pDeviceRole)
|
|
{
|
|
case CSR_WIFI_SME_P2P_ROLE_CLI:
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.reservedCli.empty, buffer, &offset);
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_GO:
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.groupInfo.groupCapability, buffer, &offset);
|
|
CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.groupInfo.p2pDeviceAddress.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount, buffer, &offset);
|
|
primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo = NULL;
|
|
if (primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount)
|
|
{
|
|
primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo = kmalloc(sizeof(CsrWifiSmeP2pClientInfoType) * primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount; i4++)
|
|
{
|
|
CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].p2PClientInterfaceAddress.a, buffer, &offset, ((u16) (6)));
|
|
CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceAddress.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint16Des((u16 *) &primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.configMethods, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.p2PDeviceCap, buffer, &offset);
|
|
CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.primDeviceType.deviceDetails, buffer, &offset, ((u16) (8)));
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount, buffer, &offset);
|
|
primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType = NULL;
|
|
if (primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount)
|
|
{
|
|
primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType = kmalloc(sizeof(CsrWifiSmeWpsDeviceType) * primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i6;
|
|
for (i6 = 0; i6 < primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount; i6++)
|
|
{
|
|
CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType[i6].deviceDetails, buffer, &offset, ((u16) (8)));
|
|
}
|
|
}
|
|
CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceName, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceNameLength, buffer, &offset);
|
|
}
|
|
}
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_NONE:
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.reservedNone.empty, buffer, &offset);
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
|
|
CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceAddress.a, buffer, &offset, ((u16) (6)));
|
|
CsrUint16Des((u16 *) &primitive->scanResults[i1].deviceInfo.standalonedevInfo.configMethods, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.standalonedevInfo.p2PDeviceCap, buffer, &offset);
|
|
CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.standalonedevInfo.primDeviceType.deviceDetails, buffer, &offset, ((u16) (8)));
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount, buffer, &offset);
|
|
primitive->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType = NULL;
|
|
if (primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount)
|
|
{
|
|
primitive->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType = kmalloc(sizeof(CsrWifiSmeWpsDeviceType) * primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount; i4++)
|
|
{
|
|
CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType[i4].deviceDetails, buffer, &offset, ((u16) (8)));
|
|
}
|
|
}
|
|
CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceName, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceNameLength, buffer, &offset);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeScanResultsGetCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeScanResultsGetCfm *primitive = (CsrWifiSmeScanResultsGetCfm *) voidPrimitivePointer;
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < primitive->scanResultsCount; i1++)
|
|
{
|
|
kfree(primitive->scanResults[i1].informationElements);
|
|
switch (primitive->scanResults[i1].p2pDeviceRole)
|
|
{
|
|
case CSR_WIFI_SME_P2P_ROLE_GO:
|
|
{
|
|
u16 i4;
|
|
for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount; i4++)
|
|
{
|
|
kfree(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType);
|
|
}
|
|
}
|
|
kfree(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo);
|
|
break;
|
|
case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
|
|
kfree(primitive->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
kfree(primitive->scanResults);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeSmeStaConfigGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* u8 primitive->smeConfig.connectionQualityRssiChangeTrigger */
|
|
bufferSize += 1; /* u8 primitive->smeConfig.connectionQualitySnrChangeTrigger */
|
|
bufferSize += 1; /* CsrWifiSmeWmmModeMask primitive->smeConfig.wmmModeMask */
|
|
bufferSize += 1; /* CsrWifiSmeRadioIF primitive->smeConfig.ifIndex */
|
|
bufferSize += 1; /* u8 primitive->smeConfig.allowUnicastUseGroupCipher */
|
|
bufferSize += 1; /* u8 primitive->smeConfig.enableOpportunisticKeyCaching */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeSmeStaConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeSmeStaConfigGetCfm *primitive = (CsrWifiSmeSmeStaConfigGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.connectionQualityRssiChangeTrigger);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.connectionQualitySnrChangeTrigger);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.wmmModeMask);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.ifIndex);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.allowUnicastUseGroupCipher);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.enableOpportunisticKeyCaching);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeSmeStaConfigGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeSmeStaConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeSmeStaConfigGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->smeConfig.connectionQualityRssiChangeTrigger, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->smeConfig.connectionQualitySnrChangeTrigger, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->smeConfig.wmmModeMask, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->smeConfig.ifIndex, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->smeConfig.allowUnicastUseGroupCipher, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->smeConfig.enableOpportunisticKeyCaching, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeSmeStaConfigSetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeSmeStaConfigSetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeSmeStaConfigSetCfm *primitive = (CsrWifiSmeSmeStaConfigSetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeSmeStaConfigSetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeSmeStaConfigSetCfm *primitive = kmalloc(sizeof(CsrWifiSmeSmeStaConfigSetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeStationMacAddressGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 17) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < 2; i1++)
|
|
{
|
|
bufferSize += 6; /* u8 primitive->stationMacAddress[i1].a[6] */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeStationMacAddressGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeStationMacAddressGetCfm *primitive = (CsrWifiSmeStationMacAddressGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < 2; i1++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->stationMacAddress[i1].a, ((u16) (6)));
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeStationMacAddressGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeStationMacAddressGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeStationMacAddressGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
{
|
|
u16 i1;
|
|
for (i1 = 0; i1 < 2; i1++)
|
|
{
|
|
CsrMemCpyDes(primitive->stationMacAddress[i1].a, buffer, &offset, ((u16) (6)));
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeTspecIndSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeTspecInd *primitive = (CsrWifiSmeTspecInd *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 4; /* u32 primitive->transactionId */
|
|
bufferSize += 1; /* CsrWifiSmeTspecResultCode primitive->tspecResultCode */
|
|
bufferSize += 2; /* u16 primitive->tspecLength */
|
|
bufferSize += primitive->tspecLength; /* u8 primitive->tspec */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeTspecIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeTspecInd *primitive = (CsrWifiSmeTspecInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->transactionId);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->tspecResultCode);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->tspecLength);
|
|
if (primitive->tspecLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->tspec, ((u16) (primitive->tspecLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeTspecIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeTspecInd *primitive = kmalloc(sizeof(CsrWifiSmeTspecInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->transactionId, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->tspecResultCode, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->tspecLength, buffer, &offset);
|
|
if (primitive->tspecLength)
|
|
{
|
|
primitive->tspec = kmalloc(primitive->tspecLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->tspec, buffer, &offset, ((u16) (primitive->tspecLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->tspec = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeTspecIndSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeTspecInd *primitive = (CsrWifiSmeTspecInd *) voidPrimitivePointer;
|
|
kfree(primitive->tspec);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeTspecCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeTspecCfm *primitive = (CsrWifiSmeTspecCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 15) */
|
|
bufferSize += 2; /* u16 primitive->interfaceTag */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 4; /* u32 primitive->transactionId */
|
|
bufferSize += 1; /* CsrWifiSmeTspecResultCode primitive->tspecResultCode */
|
|
bufferSize += 2; /* u16 primitive->tspecLength */
|
|
bufferSize += primitive->tspecLength; /* u8 primitive->tspec */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeTspecCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeTspecCfm *primitive = (CsrWifiSmeTspecCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->transactionId);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->tspecResultCode);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->tspecLength);
|
|
if (primitive->tspecLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->tspec, ((u16) (primitive->tspecLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeTspecCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeTspecCfm *primitive = kmalloc(sizeof(CsrWifiSmeTspecCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->transactionId, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->tspecResultCode, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->tspecLength, buffer, &offset);
|
|
if (primitive->tspecLength)
|
|
{
|
|
primitive->tspec = kmalloc(primitive->tspecLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->tspec, buffer, &offset, ((u16) (primitive->tspecLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->tspec = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeTspecCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeTspecCfm *primitive = (CsrWifiSmeTspecCfm *) voidPrimitivePointer;
|
|
kfree(primitive->tspec);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeVersionsGetCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeVersionsGetCfm *primitive = (CsrWifiSmeVersionsGetCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 33) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 4; /* u32 primitive->versions.chipId */
|
|
bufferSize += 4; /* u32 primitive->versions.chipVersion */
|
|
bufferSize += 4; /* u32 primitive->versions.firmwareBuild */
|
|
bufferSize += 4; /* u32 primitive->versions.firmwarePatch */
|
|
bufferSize += 4; /* u32 primitive->versions.firmwareHip */
|
|
bufferSize += (primitive->versions.routerBuild ? strlen(primitive->versions.routerBuild) : 0) + 1; /* char* primitive->versions.routerBuild (0 byte len + 1 for NULL Term) */
|
|
bufferSize += 4; /* u32 primitive->versions.routerHip */
|
|
bufferSize += (primitive->versions.smeBuild ? strlen(primitive->versions.smeBuild) : 0) + 1; /* char* primitive->versions.smeBuild (0 byte len + 1 for NULL Term) */
|
|
bufferSize += 4; /* u32 primitive->versions.smeHip */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeVersionsGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeVersionsGetCfm *primitive = (CsrWifiSmeVersionsGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->versions.chipId);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->versions.chipVersion);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->versions.firmwareBuild);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->versions.firmwarePatch);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->versions.firmwareHip);
|
|
CsrCharStringSer(ptr, len, primitive->versions.routerBuild);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->versions.routerHip);
|
|
CsrCharStringSer(ptr, len, primitive->versions.smeBuild);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->versions.smeHip);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeVersionsGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeVersionsGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeVersionsGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->versions.chipId, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->versions.chipVersion, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->versions.firmwareBuild, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->versions.firmwarePatch, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->versions.firmwareHip, buffer, &offset);
|
|
CsrCharStringDes(&primitive->versions.routerBuild, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->versions.routerHip, buffer, &offset);
|
|
CsrCharStringDes(&primitive->versions.smeBuild, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->versions.smeHip, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeVersionsGetCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeVersionsGetCfm *primitive = (CsrWifiSmeVersionsGetCfm *) voidPrimitivePointer;
|
|
kfree(primitive->versions.routerBuild);
|
|
kfree(primitive->versions.smeBuild);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeCloakedSsidsGetCfmSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeCloakedSsidsGetCfm *primitive = (CsrWifiSmeCloakedSsidsGetCfm *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 39) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* u8 primitive->cloakedSsids.cloakedSsidsCount */
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < primitive->cloakedSsids.cloakedSsidsCount; i2++)
|
|
{
|
|
bufferSize += 32; /* u8 primitive->cloakedSsids.cloakedSsids[i2].ssid[32] */
|
|
bufferSize += 1; /* u8 primitive->cloakedSsids.cloakedSsids[i2].length */
|
|
}
|
|
}
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeCloakedSsidsGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeCloakedSsidsGetCfm *primitive = (CsrWifiSmeCloakedSsidsGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->cloakedSsids.cloakedSsidsCount);
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < primitive->cloakedSsids.cloakedSsidsCount; i2++)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->cloakedSsids.cloakedSsids[i2].ssid, ((u16) (32)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->cloakedSsids.cloakedSsids[i2].length);
|
|
}
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeCloakedSsidsGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeCloakedSsidsGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeCloakedSsidsGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->cloakedSsids.cloakedSsidsCount, buffer, &offset);
|
|
primitive->cloakedSsids.cloakedSsids = NULL;
|
|
if (primitive->cloakedSsids.cloakedSsidsCount)
|
|
{
|
|
primitive->cloakedSsids.cloakedSsids = kmalloc(sizeof(CsrWifiSsid) * primitive->cloakedSsids.cloakedSsidsCount, GFP_KERNEL);
|
|
}
|
|
{
|
|
u16 i2;
|
|
for (i2 = 0; i2 < primitive->cloakedSsids.cloakedSsidsCount; i2++)
|
|
{
|
|
CsrMemCpyDes(primitive->cloakedSsids.cloakedSsids[i2].ssid, buffer, &offset, ((u16) (32)));
|
|
CsrUint8Des((u8 *) &primitive->cloakedSsids.cloakedSsids[i2].length, buffer, &offset);
|
|
}
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeCloakedSsidsGetCfmSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeCloakedSsidsGetCfm *primitive = (CsrWifiSmeCloakedSsidsGetCfm *) voidPrimitivePointer;
|
|
kfree(primitive->cloakedSsids.cloakedSsids);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeWifiOnIndSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 9) */
|
|
bufferSize += 6; /* u8 primitive->address.a[6] */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeWifiOnIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeWifiOnInd *primitive = (CsrWifiSmeWifiOnInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->address.a, ((u16) (6)));
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeWifiOnIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeWifiOnInd *primitive = kmalloc(sizeof(CsrWifiSmeWifiOnInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrMemCpyDes(primitive->address.a, buffer, &offset, ((u16) (6)));
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeSmeCommonConfigGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 10) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 1; /* CsrWifiSme80211dTrustLevel primitive->deviceConfig.trustLevel */
|
|
bufferSize += 2; /* u8 primitive->deviceConfig.countryCode[2] */
|
|
bufferSize += 1; /* CsrWifiSmeFirmwareDriverInterface primitive->deviceConfig.firmwareDriverInterface */
|
|
bufferSize += 1; /* u8 primitive->deviceConfig.enableStrictDraftN */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeSmeCommonConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeSmeCommonConfigGetCfm *primitive = (CsrWifiSmeSmeCommonConfigGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->deviceConfig.trustLevel);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->deviceConfig.countryCode, ((u16) (2)));
|
|
CsrUint8Ser(ptr, len, (u8) primitive->deviceConfig.firmwareDriverInterface);
|
|
CsrUint8Ser(ptr, len, (u8) primitive->deviceConfig.enableStrictDraftN);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeSmeCommonConfigGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeSmeCommonConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeSmeCommonConfigGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->deviceConfig.trustLevel, buffer, &offset);
|
|
CsrMemCpyDes(primitive->deviceConfig.countryCode, buffer, &offset, ((u16) (2)));
|
|
CsrUint8Des((u8 *) &primitive->deviceConfig.firmwareDriverInterface, buffer, &offset);
|
|
CsrUint8Des((u8 *) &primitive->deviceConfig.enableStrictDraftN, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeInterfaceCapabilityGetCfmSizeof(void *msg)
|
|
{
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 9) */
|
|
bufferSize += 2; /* CsrResult primitive->status */
|
|
bufferSize += 2; /* u16 primitive->numInterfaces */
|
|
bufferSize += 2; /* u8 primitive->capBitmap[2] */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeInterfaceCapabilityGetCfmSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeInterfaceCapabilityGetCfm *primitive = (CsrWifiSmeInterfaceCapabilityGetCfm *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->status);
|
|
CsrUint16Ser(ptr, len, (u16) primitive->numInterfaces);
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->capBitmap, ((u16) (2)));
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeInterfaceCapabilityGetCfmDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeInterfaceCapabilityGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeInterfaceCapabilityGetCfm), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
|
|
CsrUint16Des((u16 *) &primitive->numInterfaces, buffer, &offset);
|
|
CsrMemCpyDes(primitive->capBitmap, buffer, &offset, ((u16) (2)));
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeErrorIndSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeErrorInd *primitive = (CsrWifiSmeErrorInd *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 3) */
|
|
bufferSize += (primitive->errorMessage ? strlen(primitive->errorMessage) : 0) + 1; /* char* primitive->errorMessage (0 byte len + 1 for NULL Term) */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeErrorIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeErrorInd *primitive = (CsrWifiSmeErrorInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrCharStringSer(ptr, len, primitive->errorMessage);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeErrorIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeErrorInd *primitive = kmalloc(sizeof(CsrWifiSmeErrorInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrCharStringDes(&primitive->errorMessage, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeErrorIndSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeErrorInd *primitive = (CsrWifiSmeErrorInd *) voidPrimitivePointer;
|
|
kfree(primitive->errorMessage);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeInfoIndSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeInfoInd *primitive = (CsrWifiSmeInfoInd *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 3) */
|
|
bufferSize += (primitive->infoMessage ? strlen(primitive->infoMessage) : 0) + 1; /* char* primitive->infoMessage (0 byte len + 1 for NULL Term) */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeInfoIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeInfoInd *primitive = (CsrWifiSmeInfoInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrCharStringSer(ptr, len, primitive->infoMessage);
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeInfoIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeInfoInd *primitive = kmalloc(sizeof(CsrWifiSmeInfoInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrCharStringDes(&primitive->infoMessage, buffer, &offset);
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeInfoIndSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeInfoInd *primitive = (CsrWifiSmeInfoInd *) voidPrimitivePointer;
|
|
kfree(primitive->infoMessage);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|
|
size_t CsrWifiSmeCoreDumpIndSizeof(void *msg)
|
|
{
|
|
CsrWifiSmeCoreDumpInd *primitive = (CsrWifiSmeCoreDumpInd *) msg;
|
|
size_t bufferSize = 2;
|
|
|
|
/* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
|
|
bufferSize += 4; /* u32 primitive->dataLength */
|
|
bufferSize += primitive->dataLength; /* u8 primitive->data */
|
|
return bufferSize;
|
|
}
|
|
|
|
|
|
u8* CsrWifiSmeCoreDumpIndSer(u8 *ptr, size_t *len, void *msg)
|
|
{
|
|
CsrWifiSmeCoreDumpInd *primitive = (CsrWifiSmeCoreDumpInd *)msg;
|
|
*len = 0;
|
|
CsrUint16Ser(ptr, len, primitive->common.type);
|
|
CsrUint32Ser(ptr, len, (u32) primitive->dataLength);
|
|
if (primitive->dataLength)
|
|
{
|
|
CsrMemCpySer(ptr, len, (const void *) primitive->data, ((u16) (primitive->dataLength)));
|
|
}
|
|
return(ptr);
|
|
}
|
|
|
|
|
|
void* CsrWifiSmeCoreDumpIndDes(u8 *buffer, size_t length)
|
|
{
|
|
CsrWifiSmeCoreDumpInd *primitive = kmalloc(sizeof(CsrWifiSmeCoreDumpInd), GFP_KERNEL);
|
|
size_t offset;
|
|
offset = 0;
|
|
|
|
CsrUint16Des(&primitive->common.type, buffer, &offset);
|
|
CsrUint32Des((u32 *) &primitive->dataLength, buffer, &offset);
|
|
if (primitive->dataLength)
|
|
{
|
|
primitive->data = kmalloc(primitive->dataLength, GFP_KERNEL);
|
|
CsrMemCpyDes(primitive->data, buffer, &offset, ((u16) (primitive->dataLength)));
|
|
}
|
|
else
|
|
{
|
|
primitive->data = NULL;
|
|
}
|
|
|
|
return primitive;
|
|
}
|
|
|
|
|
|
void CsrWifiSmeCoreDumpIndSerFree(void *voidPrimitivePointer)
|
|
{
|
|
CsrWifiSmeCoreDumpInd *primitive = (CsrWifiSmeCoreDumpInd *) voidPrimitivePointer;
|
|
kfree(primitive->data);
|
|
kfree(primitive);
|
|
}
|
|
|
|
|