mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 08:36:12 -04:00
qcacld-3.0: Fix IE order in association request frame
Current driver is packing IEs associated with association request
out of order which is violating 80211 spec.
Fix the order in association request based on element ID.
Change-Id: Ie7a69ce2999d5a5d8ba88bac1e988f0a41dd10a6
CRs-Fixed: 2006920
This commit is contained in:
parent
2418c583c2
commit
971ea8c37f
3 changed files with 79 additions and 73 deletions
|
|
@ -3173,28 +3173,29 @@ FRAME AssocRequest // 7.2.3.4
|
|||
FF ListenInterval;
|
||||
MANDIE SSID;
|
||||
MANDIE SuppRates;
|
||||
OPTIE ExtSuppRates;
|
||||
OPTIE OperatingMode;
|
||||
OPTIE PowerCaps;
|
||||
OPTIE SuppChannels;
|
||||
OPTIE RSNOpaque;
|
||||
OPTIE QOSCapsStation;
|
||||
OPTIE RRMEnabledCap;
|
||||
OPTIE MobilityDomain;
|
||||
OPTIE WPAOpaque;
|
||||
OPTIE HTCaps;
|
||||
OPTIE QOSCapsStation;
|
||||
OPTIE RSNOpaque;
|
||||
OPTIE ExtSuppRates;
|
||||
OPTIE MobilityDomain;
|
||||
OPTIE SuppOperatingClasses;
|
||||
OPTIE WAPIOpaque;
|
||||
OPTIE WAPI;
|
||||
OPTIE RRMEnabledCap;
|
||||
OPTIE QosMapSet;
|
||||
OPTIE ExtCap;
|
||||
OPTIE VHTCaps;
|
||||
OPTIE WPAOpaque;
|
||||
OPTIE WMMCaps;
|
||||
OPTIE WMMInfoStation;
|
||||
OPTIE WscIEOpaque;
|
||||
OPTIE WAPIOpaque;
|
||||
OPTIE WAPI;
|
||||
OPTIE ESERadMgmtCap;
|
||||
OPTIE ESEVersion;
|
||||
OPTIE P2PIEOpaque;
|
||||
OPTIE WFDIEOpaque;
|
||||
OPTIE VHTCaps;
|
||||
OPTIE ExtCap;
|
||||
OPTIE OperatingMode;
|
||||
OPTIE QosMapSet;
|
||||
OPTIE vendor_vht_ie;
|
||||
OPTIE hs20vendor_ie;
|
||||
} // End frame AssocRequest.
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
*
|
||||
*
|
||||
* This file was automatically generated by 'framesc'
|
||||
* Mon Jan 23 14:07:41 2017 from the following file(s):
|
||||
* Tue Feb 14 11:22:39 2017 from the following file(s):
|
||||
*
|
||||
* dot11f.frms
|
||||
*
|
||||
|
|
@ -7834,34 +7834,35 @@ uint32_t dot11f_get_packed_add_ts_response_size(tpAniSirGlobal pCtx,
|
|||
#endif /* C++ */
|
||||
|
||||
typedef struct sDot11fAssocRequest{
|
||||
tDot11fFfCapabilities Capabilities;
|
||||
tDot11fFfListenInterval ListenInterval;
|
||||
tDot11fIESSID SSID;
|
||||
tDot11fIESuppRates SuppRates;
|
||||
tDot11fIEExtSuppRates ExtSuppRates;
|
||||
tDot11fIEPowerCaps PowerCaps;
|
||||
tDot11fIESuppChannels SuppChannels;
|
||||
tDot11fIERSNOpaque RSNOpaque;
|
||||
tDot11fIEQOSCapsStation QOSCapsStation;
|
||||
tDot11fIERRMEnabledCap RRMEnabledCap;
|
||||
tDot11fIEMobilityDomain MobilityDomain;
|
||||
tDot11fIEWPAOpaque WPAOpaque;
|
||||
tDot11fIEHTCaps HTCaps;
|
||||
tDot11fIEWMMCaps WMMCaps;
|
||||
tDot11fIEWMMInfoStation WMMInfoStation;
|
||||
tDot11fIEWscIEOpaque WscIEOpaque;
|
||||
tDot11fIEWAPIOpaque WAPIOpaque;
|
||||
tDot11fIEWAPI WAPI;
|
||||
tDot11fIEESERadMgmtCap ESERadMgmtCap;
|
||||
tDot11fIEESEVersion ESEVersion;
|
||||
tDot11fIEP2PIEOpaque P2PIEOpaque;
|
||||
tDot11fIEWFDIEOpaque WFDIEOpaque;
|
||||
tDot11fIEVHTCaps VHTCaps;
|
||||
tDot11fIEExtCap ExtCap;
|
||||
tDot11fIEOperatingMode OperatingMode;
|
||||
tDot11fIEQosMapSet QosMapSet;
|
||||
tDot11fIEvendor_vht_ie vendor_vht_ie;
|
||||
tDot11fIEhs20vendor_ie hs20vendor_ie;
|
||||
tDot11fFfCapabilities Capabilities;
|
||||
tDot11fFfListenInterval ListenInterval;
|
||||
tDot11fIESSID SSID;
|
||||
tDot11fIESuppRates SuppRates;
|
||||
tDot11fIEOperatingMode OperatingMode;
|
||||
tDot11fIEPowerCaps PowerCaps;
|
||||
tDot11fIESuppChannels SuppChannels;
|
||||
tDot11fIEHTCaps HTCaps;
|
||||
tDot11fIEQOSCapsStation QOSCapsStation;
|
||||
tDot11fIERSNOpaque RSNOpaque;
|
||||
tDot11fIEExtSuppRates ExtSuppRates;
|
||||
tDot11fIEMobilityDomain MobilityDomain;
|
||||
tDot11fIESuppOperatingClasses SuppOperatingClasses;
|
||||
tDot11fIEWAPIOpaque WAPIOpaque;
|
||||
tDot11fIEWAPI WAPI;
|
||||
tDot11fIERRMEnabledCap RRMEnabledCap;
|
||||
tDot11fIEQosMapSet QosMapSet;
|
||||
tDot11fIEExtCap ExtCap;
|
||||
tDot11fIEVHTCaps VHTCaps;
|
||||
tDot11fIEWPAOpaque WPAOpaque;
|
||||
tDot11fIEWMMCaps WMMCaps;
|
||||
tDot11fIEWMMInfoStation WMMInfoStation;
|
||||
tDot11fIEWscIEOpaque WscIEOpaque;
|
||||
tDot11fIEESERadMgmtCap ESERadMgmtCap;
|
||||
tDot11fIEESEVersion ESEVersion;
|
||||
tDot11fIEP2PIEOpaque P2PIEOpaque;
|
||||
tDot11fIEWFDIEOpaque WFDIEOpaque;
|
||||
tDot11fIEvendor_vht_ie vendor_vht_ie;
|
||||
tDot11fIEhs20vendor_ie hs20vendor_ie;
|
||||
} tDot11fAssocRequest;
|
||||
|
||||
#define DOT11F_ASSOCREQUEST (3)
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
*
|
||||
*
|
||||
* This file was automatically generated by 'framesc'
|
||||
* Mon Jan 23 14:07:41 2017 from the following file(s):
|
||||
* Tue Feb 14 11:22:39 2017 from the following file(s):
|
||||
*
|
||||
* dot11f.frms
|
||||
*
|
||||
|
|
@ -6202,10 +6202,10 @@ static const tIEDefn IES_AssocRequest[] = {
|
|||
{ offsetof(tDot11fAssocRequest, SuppRates), offsetof(tDot11fIESuppRates,
|
||||
present), 0, "SuppRates", 0, 2, 14, SigIeSuppRates, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_SUPPRATES, 1, },
|
||||
{ offsetof(tDot11fAssocRequest, ExtSuppRates),
|
||||
offsetof(tDot11fIEExtSuppRates, present), 0, "ExtSuppRates",
|
||||
0, 3, 14, SigIeExtSuppRates, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_EXTSUPPRATES, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, OperatingMode),
|
||||
offsetof(tDot11fIEOperatingMode, present), 0, "OperatingMode",
|
||||
0, 3, 3, SigIeOperatingMode, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_OPERATINGMODE, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, PowerCaps), offsetof(tDot11fIEPowerCaps,
|
||||
present), 0, "PowerCaps", 0, 4, 4, SigIePowerCaps, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_POWERCAPS, 0, },
|
||||
|
|
@ -6213,27 +6213,50 @@ static const tIEDefn IES_AssocRequest[] = {
|
|||
offsetof(tDot11fIESuppChannels, present), 0, "SuppChannels",
|
||||
0, 4, 98, SigIeSuppChannels, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_SUPPCHANNELS, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, RSNOpaque), offsetof(tDot11fIERSNOpaque,
|
||||
present), 0, "RSNOpaque", 0, 8, 255, SigIeRSNOpaque, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_RSNOPAQUE, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, HTCaps), offsetof(tDot11fIEHTCaps,
|
||||
present), 0, "HTCaps", 0, 28, 60, SigIeHTCaps, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_HTCAPS, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, QOSCapsStation),
|
||||
offsetof(tDot11fIEQOSCapsStation, present), 0, "QOSCapsStation",
|
||||
0, 3, 3, SigIeQOSCapsStation, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_QOSCAPSSTATION, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, RRMEnabledCap),
|
||||
offsetof(tDot11fIERRMEnabledCap, present), 0, "RRMEnabledCap",
|
||||
0, 7, 7, SigIeRRMEnabledCap, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_RRMENABLEDCAP, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, RSNOpaque), offsetof(tDot11fIERSNOpaque,
|
||||
present), 0, "RSNOpaque", 0, 8, 255, SigIeRSNOpaque, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_RSNOPAQUE, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, ExtSuppRates),
|
||||
offsetof(tDot11fIEExtSuppRates, present), 0, "ExtSuppRates",
|
||||
0, 3, 14, SigIeExtSuppRates, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_EXTSUPPRATES, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, MobilityDomain),
|
||||
offsetof(tDot11fIEMobilityDomain, present), 0, "MobilityDomain",
|
||||
0, 5, 5, SigIeMobilityDomain, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_MOBILITYDOMAIN, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, SuppOperatingClasses),
|
||||
offsetof(tDot11fIESuppOperatingClasses, present), 0,
|
||||
"SuppOperatingClasses", 0, 3, 34, SigIeSuppOperatingClasses,
|
||||
{0, 0, 0, 0, 0}, 0, DOT11F_EID_SUPPOPERATINGCLASSES, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, WAPIOpaque),
|
||||
offsetof(tDot11fIEWAPIOpaque, present), 0, "WAPIOpaque",
|
||||
0, 8, 255, SigIeWAPIOpaque, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_WAPIOPAQUE, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, WAPI), offsetof(tDot11fIEWAPI, present), 0,
|
||||
"WAPI", 0, 14, 112, SigIeWAPI, {0, 0, 0, 0, 0}, 0, DOT11F_EID_WAPI, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, RRMEnabledCap),
|
||||
offsetof(tDot11fIERRMEnabledCap, present), 0, "RRMEnabledCap",
|
||||
0, 7, 7, SigIeRRMEnabledCap, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_RRMENABLEDCAP, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, QosMapSet), offsetof(tDot11fIEQosMapSet,
|
||||
present), 0, "QosMapSet", 0, 2, 62, SigIeQosMapSet, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_QOSMAPSET, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, ExtCap), offsetof(tDot11fIEExtCap,
|
||||
present), 0, "ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_EXTCAP, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, VHTCaps), offsetof(tDot11fIEVHTCaps,
|
||||
present), 0, "VHTCaps", 0, 14, 14, SigIeVHTCaps, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_VHTCAPS, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, WPAOpaque), offsetof(tDot11fIEWPAOpaque,
|
||||
present), 0, "WPAOpaque", 0, 8, 255, SigIeWPAOpaque, {0, 80, 242, 1, 0},
|
||||
4, DOT11F_EID_WPAOPAQUE, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, HTCaps), offsetof(tDot11fIEHTCaps,
|
||||
present), 0, "HTCaps", 0, 28, 60, SigIeHTCaps, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_HTCAPS, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, WMMCaps), offsetof(tDot11fIEWMMCaps,
|
||||
present), 0, "WMMCaps", 0, 9, 9, SigIeWMMCaps, {0, 80, 242, 2, 5},
|
||||
5, DOT11F_EID_WMMCAPS, 0, },
|
||||
|
|
@ -6245,12 +6268,6 @@ static const tIEDefn IES_AssocRequest[] = {
|
|||
offsetof(tDot11fIEWscIEOpaque, present), 0, "WscIEOpaque",
|
||||
0, 8, 255, SigIeWscIEOpaque, {0, 80, 242, 4, 0},
|
||||
4, DOT11F_EID_WSCIEOPAQUE, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, WAPIOpaque),
|
||||
offsetof(tDot11fIEWAPIOpaque, present), 0, "WAPIOpaque",
|
||||
0, 8, 255, SigIeWAPIOpaque, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_WAPIOPAQUE, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, WAPI), offsetof(tDot11fIEWAPI, present), 0,
|
||||
"WAPI", 0, 14, 112, SigIeWAPI, {0, 0, 0, 0, 0}, 0, DOT11F_EID_WAPI, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, ESERadMgmtCap),
|
||||
offsetof(tDot11fIEESERadMgmtCap, present), 0, "ESERadMgmtCap",
|
||||
0, 8, 8, SigIeESERadMgmtCap, {0, 64, 150, 1, 0},
|
||||
|
|
@ -6267,19 +6284,6 @@ static const tIEDefn IES_AssocRequest[] = {
|
|||
offsetof(tDot11fIEWFDIEOpaque, present), 0, "WFDIEOpaque",
|
||||
0, 8, 255, SigIeWFDIEOpaque, {80, 111, 154, 10, 0},
|
||||
4, DOT11F_EID_WFDIEOPAQUE, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, VHTCaps), offsetof(tDot11fIEVHTCaps,
|
||||
present), 0, "VHTCaps", 0, 14, 14, SigIeVHTCaps, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_VHTCAPS, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, ExtCap), offsetof(tDot11fIEExtCap,
|
||||
present), 0, "ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_EXTCAP, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, OperatingMode),
|
||||
offsetof(tDot11fIEOperatingMode, present), 0, "OperatingMode",
|
||||
0, 3, 3, SigIeOperatingMode, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_OPERATINGMODE, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, QosMapSet), offsetof(tDot11fIEQosMapSet,
|
||||
present), 0, "QosMapSet", 0, 2, 62, SigIeQosMapSet, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_QOSMAPSET, 0, },
|
||||
{ offsetof(tDot11fAssocRequest, vendor_vht_ie),
|
||||
offsetof(tDot11fIEvendor_vht_ie, present), 0, "vendor_vht_ie",
|
||||
0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 0, 0},
|
||||
|
|
|
|||
Loading…
Reference in a new issue