qcacld-3.0: Changes to add supported operating class IE
qcacld-2.0 to qcacld-3.0 propagation Add supported class IE in beacon and probe response frames. Change-Id: Ife4cb1b3db0119a9472cad0f861887c487b147d3 CRs-Fixed: 941466
Cette révision appartient à :

révisé par
Satish Singh

Parent
695468e069
révision
5cd1e0eb17
@@ -361,6 +361,9 @@
|
|||||||
#define SIR_MAC_CHNL_EXTENDED_SWITCH_ANN_EID_MIN 0
|
#define SIR_MAC_CHNL_EXTENDED_SWITCH_ANN_EID_MIN 0
|
||||||
#define SIR_MAC_CHNL_EXTENDED_SWITCH_ANN_EID_MAX 255
|
#define SIR_MAC_CHNL_EXTENDED_SWITCH_ANN_EID_MAX 255
|
||||||
|
|
||||||
|
#define SIR_MAC_OPERATING_CLASS_EID 59
|
||||||
|
#define SIR_MAC_OPERATING_CLASS_EID_MIN 2
|
||||||
|
#define SIR_MAC_OPERATING_CLASS_EID_MAX 253
|
||||||
/* reserved 51-69 */
|
/* reserved 51-69 */
|
||||||
#define SIR_MAC_RM_ENABLED_CAPABILITY_EID 70
|
#define SIR_MAC_RM_ENABLED_CAPABILITY_EID 70
|
||||||
#define SIR_MAC_RM_ENABLED_CAPABILITY_EID_MIN 5
|
#define SIR_MAC_RM_ENABLED_CAPABILITY_EID_MIN 5
|
||||||
|
@@ -2815,6 +2815,7 @@ FRAME Beacon // C.f. Sec. 7.2.3.1
|
|||||||
OPTIE PowerConstraints;
|
OPTIE PowerConstraints;
|
||||||
OPTIE ChanSwitchAnn;
|
OPTIE ChanSwitchAnn;
|
||||||
OPTIE ext_chan_switch_ann;
|
OPTIE ext_chan_switch_ann;
|
||||||
|
OPTIE SuppOperatingClasses;
|
||||||
OPTIE Quiet;
|
OPTIE Quiet;
|
||||||
OPTIE TPCReport;
|
OPTIE TPCReport;
|
||||||
OPTIE ERPInfo;
|
OPTIE ERPInfo;
|
||||||
@@ -2904,6 +2905,7 @@ FRAME Beacon2
|
|||||||
OPTIE PowerConstraints;
|
OPTIE PowerConstraints;
|
||||||
OPTIE ChanSwitchAnn;
|
OPTIE ChanSwitchAnn;
|
||||||
OPTIE ext_chan_switch_ann;
|
OPTIE ext_chan_switch_ann;
|
||||||
|
OPTIE SuppOperatingClasses;
|
||||||
OPTIE Quiet;
|
OPTIE Quiet;
|
||||||
OPTIE TPCReport;
|
OPTIE TPCReport;
|
||||||
OPTIE ERPInfo;
|
OPTIE ERPInfo;
|
||||||
@@ -2963,6 +2965,7 @@ FRAME BeaconIEs
|
|||||||
OPTIE PowerConstraints;
|
OPTIE PowerConstraints;
|
||||||
OPTIE ChanSwitchAnn;
|
OPTIE ChanSwitchAnn;
|
||||||
OPTIE ext_chan_switch_ann;
|
OPTIE ext_chan_switch_ann;
|
||||||
|
OPTIE SuppOperatingClasses;
|
||||||
OPTIE Quiet;
|
OPTIE Quiet;
|
||||||
OPTIE TPCReport;
|
OPTIE TPCReport;
|
||||||
OPTIE ERPInfo;
|
OPTIE ERPInfo;
|
||||||
@@ -3178,6 +3181,7 @@ FRAME ProbeResponse // 7.2.3.9
|
|||||||
OPTIE PowerConstraints;
|
OPTIE PowerConstraints;
|
||||||
OPTIE ChanSwitchAnn;
|
OPTIE ChanSwitchAnn;
|
||||||
OPTIE ext_chan_switch_ann;
|
OPTIE ext_chan_switch_ann;
|
||||||
|
OPTIE SuppOperatingClasses;
|
||||||
OPTIE Quiet;
|
OPTIE Quiet;
|
||||||
OPTIE TPCReport;
|
OPTIE TPCReport;
|
||||||
OPTIE ERPInfo;
|
OPTIE ERPInfo;
|
||||||
|
@@ -35,7 +35,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* This file was automatically generated by 'framesc'
|
* This file was automatically generated by 'framesc'
|
||||||
* Mon Nov 16 10:55:21 2015 from the following file(s):
|
* Mon Nov 16 14:10:10 2015 from the following file(s):
|
||||||
*
|
*
|
||||||
* dot11f.frms
|
* dot11f.frms
|
||||||
*
|
*
|
||||||
@@ -7533,6 +7533,7 @@ typedef struct sDot11fBeacon{
|
|||||||
tDot11fIEPowerConstraints PowerConstraints;
|
tDot11fIEPowerConstraints PowerConstraints;
|
||||||
tDot11fIEChanSwitchAnn ChanSwitchAnn;
|
tDot11fIEChanSwitchAnn ChanSwitchAnn;
|
||||||
tDot11fIEext_chan_switch_ann ext_chan_switch_ann;
|
tDot11fIEext_chan_switch_ann ext_chan_switch_ann;
|
||||||
|
tDot11fIESuppOperatingClasses SuppOperatingClasses;
|
||||||
tDot11fIEQuiet Quiet;
|
tDot11fIEQuiet Quiet;
|
||||||
tDot11fIETPCReport TPCReport;
|
tDot11fIETPCReport TPCReport;
|
||||||
tDot11fIEERPInfo ERPInfo;
|
tDot11fIEERPInfo ERPInfo;
|
||||||
@@ -7627,6 +7628,7 @@ typedef struct sDot11fBeacon2{
|
|||||||
tDot11fIEPowerConstraints PowerConstraints;
|
tDot11fIEPowerConstraints PowerConstraints;
|
||||||
tDot11fIEChanSwitchAnn ChanSwitchAnn;
|
tDot11fIEChanSwitchAnn ChanSwitchAnn;
|
||||||
tDot11fIEext_chan_switch_ann ext_chan_switch_ann;
|
tDot11fIEext_chan_switch_ann ext_chan_switch_ann;
|
||||||
|
tDot11fIESuppOperatingClasses SuppOperatingClasses;
|
||||||
tDot11fIEQuiet Quiet;
|
tDot11fIEQuiet Quiet;
|
||||||
tDot11fIETPCReport TPCReport;
|
tDot11fIETPCReport TPCReport;
|
||||||
tDot11fIEERPInfo ERPInfo;
|
tDot11fIEERPInfo ERPInfo;
|
||||||
@@ -7698,6 +7700,7 @@ typedef struct sDot11fBeaconIEs{
|
|||||||
tDot11fIEPowerConstraints PowerConstraints;
|
tDot11fIEPowerConstraints PowerConstraints;
|
||||||
tDot11fIEChanSwitchAnn ChanSwitchAnn;
|
tDot11fIEChanSwitchAnn ChanSwitchAnn;
|
||||||
tDot11fIEext_chan_switch_ann ext_chan_switch_ann;
|
tDot11fIEext_chan_switch_ann ext_chan_switch_ann;
|
||||||
|
tDot11fIESuppOperatingClasses SuppOperatingClasses;
|
||||||
tDot11fIEQuiet Quiet;
|
tDot11fIEQuiet Quiet;
|
||||||
tDot11fIETPCReport TPCReport;
|
tDot11fIETPCReport TPCReport;
|
||||||
tDot11fIEERPInfo ERPInfo;
|
tDot11fIEERPInfo ERPInfo;
|
||||||
@@ -8110,6 +8113,7 @@ typedef struct sDot11fProbeResponse{
|
|||||||
tDot11fIEPowerConstraints PowerConstraints;
|
tDot11fIEPowerConstraints PowerConstraints;
|
||||||
tDot11fIEChanSwitchAnn ChanSwitchAnn;
|
tDot11fIEChanSwitchAnn ChanSwitchAnn;
|
||||||
tDot11fIEext_chan_switch_ann ext_chan_switch_ann;
|
tDot11fIEext_chan_switch_ann ext_chan_switch_ann;
|
||||||
|
tDot11fIESuppOperatingClasses SuppOperatingClasses;
|
||||||
tDot11fIEQuiet Quiet;
|
tDot11fIEQuiet Quiet;
|
||||||
tDot11fIETPCReport TPCReport;
|
tDot11fIETPCReport TPCReport;
|
||||||
tDot11fIEERPInfo ERPInfo;
|
tDot11fIEERPInfo ERPInfo;
|
||||||
|
@@ -109,6 +109,7 @@ typedef struct sSirProbeRespBeacon {
|
|||||||
tDot11fIEChanSwitchAnn channelSwitchIE;
|
tDot11fIEChanSwitchAnn channelSwitchIE;
|
||||||
tDot11fIEsec_chan_offset_ele sec_chan_offset;
|
tDot11fIEsec_chan_offset_ele sec_chan_offset;
|
||||||
tDot11fIEext_chan_switch_ann ext_chan_switch;
|
tDot11fIEext_chan_switch_ann ext_chan_switch;
|
||||||
|
tDot11fIESuppOperatingClasses supp_operating_classes;
|
||||||
tSirMacAddr bssid;
|
tSirMacAddr bssid;
|
||||||
tDot11fIEQuiet quietIE;
|
tDot11fIEQuiet quietIE;
|
||||||
tDot11fIEHTCaps HTCaps;
|
tDot11fIEHTCaps HTCaps;
|
||||||
@@ -124,6 +125,7 @@ typedef struct sSirProbeRespBeacon {
|
|||||||
uint8_t ssidPresent;
|
uint8_t ssidPresent;
|
||||||
uint8_t suppRatesPresent;
|
uint8_t suppRatesPresent;
|
||||||
uint8_t extendedRatesPresent;
|
uint8_t extendedRatesPresent;
|
||||||
|
uint8_t supp_operating_class_present;
|
||||||
uint8_t cfPresent;
|
uint8_t cfPresent;
|
||||||
uint8_t dsParamsPresent;
|
uint8_t dsParamsPresent;
|
||||||
uint8_t timPresent;
|
uint8_t timPresent;
|
||||||
@@ -961,5 +963,7 @@ populate_dot11f_avoid_channel_ie(tpAniSirGlobal mac_ctx,
|
|||||||
|
|
||||||
tSirRetStatus populate_dot11f_timing_advert_frame(tpAniSirGlobal pMac,
|
tSirRetStatus populate_dot11f_timing_advert_frame(tpAniSirGlobal pMac,
|
||||||
tDot11fTimingAdvertisementFrame *frame);
|
tDot11fTimingAdvertisementFrame *frame);
|
||||||
|
void populate_dot11_supp_operating_classes(tpAniSirGlobal mac_ptr,
|
||||||
|
tDot11fIESuppOperatingClasses *dot_11_ptr, tpPESession session_entry);
|
||||||
|
|
||||||
#endif /* __PARSE_H__ */
|
#endif /* __PARSE_H__ */
|
||||||
|
@@ -293,6 +293,8 @@ sch_set_fixed_beacon_fields(tpAniSirGlobal mac_ctx, tpPESession session)
|
|||||||
&bcn_2->ext_chan_switch_ann,
|
&bcn_2->ext_chan_switch_ann,
|
||||||
session);
|
session);
|
||||||
|
|
||||||
|
populate_dot11_supp_operating_classes(mac_ctx,
|
||||||
|
&bcn_2->SuppOperatingClasses, session);
|
||||||
populate_dot11f_country(mac_ctx, &bcn_2->Country, session);
|
populate_dot11f_country(mac_ctx, &bcn_2->Country, session);
|
||||||
if (bcn_1->Capabilities.qos)
|
if (bcn_1->Capabilities.qos)
|
||||||
populate_dot11f_edca_param_set(mac_ctx, &bcn_2->EDCAParamSet,
|
populate_dot11f_edca_param_set(mac_ctx, &bcn_2->EDCAParamSet,
|
||||||
@@ -582,6 +584,15 @@ void lim_update_probe_rsp_template_ie_bitmap_beacon2(tpAniSirGlobal pMac,
|
|||||||
sizeof(beacon2->ext_chan_switch_ann));
|
sizeof(beacon2->ext_chan_switch_ann));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Supported operating class */
|
||||||
|
if (beacon2->SuppOperatingClasses.present) {
|
||||||
|
set_probe_rsp_ie_bitmap(DefProbeRspIeBitmap,
|
||||||
|
SIR_MAC_OPERATING_CLASS_EID);
|
||||||
|
cdf_mem_copy((void *)&prb_rsp->SuppOperatingClasses,
|
||||||
|
(void *)&beacon2->SuppOperatingClasses,
|
||||||
|
sizeof(beacon2->SuppOperatingClasses));
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
|
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
|
||||||
if (beacon2->QComVendorIE.present) {
|
if (beacon2->QComVendorIE.present) {
|
||||||
set_probe_rsp_ie_bitmap(DefProbeRspIeBitmap,
|
set_probe_rsp_ie_bitmap(DefProbeRspIeBitmap,
|
||||||
|
@@ -6136,6 +6136,10 @@ static const tIEDefn IES_Beacon[] = {
|
|||||||
offsetof(tDot11fIEext_chan_switch_ann, present), 0, "ext_chan_switch_ann",
|
offsetof(tDot11fIEext_chan_switch_ann, present), 0, "ext_chan_switch_ann",
|
||||||
0, 6, 6, SigIeext_chan_switch_ann, {0, 0, 0, 0, 0},
|
0, 6, 6, SigIeext_chan_switch_ann, {0, 0, 0, 0, 0},
|
||||||
0, DOT11F_EID_EXT_CHAN_SWITCH_ANN, 0, },
|
0, DOT11F_EID_EXT_CHAN_SWITCH_ANN, 0, },
|
||||||
|
{ offsetof(tDot11fBeacon, SuppOperatingClasses),
|
||||||
|
offsetof(tDot11fIESuppOperatingClasses, present), 0,
|
||||||
|
"SuppOperatingClasses", 0, 3, 34, SigIeSuppOperatingClasses,
|
||||||
|
{0, 0, 0, 0, 0}, 0, DOT11F_EID_SUPPOPERATINGCLASSES, 0, },
|
||||||
{ offsetof(tDot11fBeacon, Quiet), offsetof(tDot11fIEQuiet, present), 0,
|
{ offsetof(tDot11fBeacon, Quiet), offsetof(tDot11fIEQuiet, present), 0,
|
||||||
"Quiet", 0, 8, 8, SigIeQuiet, {0, 0, 0, 0, 0}, 0, DOT11F_EID_QUIET, 0, },
|
"Quiet", 0, 8, 8, SigIeQuiet, {0, 0, 0, 0, 0}, 0, DOT11F_EID_QUIET, 0, },
|
||||||
{ offsetof(tDot11fBeacon, TPCReport), offsetof(tDot11fIETPCReport,
|
{ offsetof(tDot11fBeacon, TPCReport), offsetof(tDot11fIETPCReport,
|
||||||
@@ -6331,6 +6335,10 @@ static const tIEDefn IES_Beacon2[] = {
|
|||||||
offsetof(tDot11fIEext_chan_switch_ann, present), 0, "ext_chan_switch_ann",
|
offsetof(tDot11fIEext_chan_switch_ann, present), 0, "ext_chan_switch_ann",
|
||||||
0, 6, 6, SigIeext_chan_switch_ann, {0, 0, 0, 0, 0},
|
0, 6, 6, SigIeext_chan_switch_ann, {0, 0, 0, 0, 0},
|
||||||
0, DOT11F_EID_EXT_CHAN_SWITCH_ANN, 0, },
|
0, DOT11F_EID_EXT_CHAN_SWITCH_ANN, 0, },
|
||||||
|
{ offsetof(tDot11fBeacon2, SuppOperatingClasses),
|
||||||
|
offsetof(tDot11fIESuppOperatingClasses, present), 0,
|
||||||
|
"SuppOperatingClasses", 0, 3, 34, SigIeSuppOperatingClasses,
|
||||||
|
{0, 0, 0, 0, 0}, 0, DOT11F_EID_SUPPOPERATINGCLASSES, 0, },
|
||||||
{ offsetof(tDot11fBeacon2, Quiet), offsetof(tDot11fIEQuiet, present), 0,
|
{ offsetof(tDot11fBeacon2, Quiet), offsetof(tDot11fIEQuiet, present), 0,
|
||||||
"Quiet", 0, 8, 8, SigIeQuiet, {0, 0, 0, 0, 0}, 0, DOT11F_EID_QUIET, 0, },
|
"Quiet", 0, 8, 8, SigIeQuiet, {0, 0, 0, 0, 0}, 0, DOT11F_EID_QUIET, 0, },
|
||||||
{ offsetof(tDot11fBeacon2, TPCReport), offsetof(tDot11fIETPCReport,
|
{ offsetof(tDot11fBeacon2, TPCReport), offsetof(tDot11fIETPCReport,
|
||||||
@@ -6507,6 +6515,10 @@ static const tIEDefn IES_BeaconIEs[] = {
|
|||||||
offsetof(tDot11fIEext_chan_switch_ann, present), 0, "ext_chan_switch_ann",
|
offsetof(tDot11fIEext_chan_switch_ann, present), 0, "ext_chan_switch_ann",
|
||||||
0, 6, 6, SigIeext_chan_switch_ann, {0, 0, 0, 0, 0},
|
0, 6, 6, SigIeext_chan_switch_ann, {0, 0, 0, 0, 0},
|
||||||
0, DOT11F_EID_EXT_CHAN_SWITCH_ANN, 0, },
|
0, DOT11F_EID_EXT_CHAN_SWITCH_ANN, 0, },
|
||||||
|
{ offsetof(tDot11fBeaconIEs, SuppOperatingClasses),
|
||||||
|
offsetof(tDot11fIESuppOperatingClasses, present), 0,
|
||||||
|
"SuppOperatingClasses", 0, 3, 34, SigIeSuppOperatingClasses,
|
||||||
|
{0, 0, 0, 0, 0}, 0, DOT11F_EID_SUPPOPERATINGCLASSES, 0, },
|
||||||
{ offsetof(tDot11fBeaconIEs, Quiet), offsetof(tDot11fIEQuiet, present), 0,
|
{ offsetof(tDot11fBeaconIEs, Quiet), offsetof(tDot11fIEQuiet, present), 0,
|
||||||
"Quiet", 0, 8, 8, SigIeQuiet, {0, 0, 0, 0, 0}, 0, DOT11F_EID_QUIET, 0, },
|
"Quiet", 0, 8, 8, SigIeQuiet, {0, 0, 0, 0, 0}, 0, DOT11F_EID_QUIET, 0, },
|
||||||
{ offsetof(tDot11fBeaconIEs, TPCReport), offsetof(tDot11fIETPCReport,
|
{ offsetof(tDot11fBeaconIEs, TPCReport), offsetof(tDot11fIETPCReport,
|
||||||
@@ -7115,6 +7127,10 @@ static const tIEDefn IES_ProbeResponse[] = {
|
|||||||
offsetof(tDot11fIEext_chan_switch_ann, present), 0, "ext_chan_switch_ann",
|
offsetof(tDot11fIEext_chan_switch_ann, present), 0, "ext_chan_switch_ann",
|
||||||
0, 6, 6, SigIeext_chan_switch_ann, {0, 0, 0, 0, 0},
|
0, 6, 6, SigIeext_chan_switch_ann, {0, 0, 0, 0, 0},
|
||||||
0, DOT11F_EID_EXT_CHAN_SWITCH_ANN, 0, },
|
0, DOT11F_EID_EXT_CHAN_SWITCH_ANN, 0, },
|
||||||
|
{ offsetof(tDot11fProbeResponse, SuppOperatingClasses),
|
||||||
|
offsetof(tDot11fIESuppOperatingClasses, present), 0,
|
||||||
|
"SuppOperatingClasses", 0, 3, 34, SigIeSuppOperatingClasses,
|
||||||
|
{0, 0, 0, 0, 0}, 0, DOT11F_EID_SUPPOPERATINGCLASSES, 0, },
|
||||||
{ offsetof(tDot11fProbeResponse, Quiet), offsetof(tDot11fIEQuiet,
|
{ offsetof(tDot11fProbeResponse, Quiet), offsetof(tDot11fIEQuiet,
|
||||||
present), 0, "Quiet", 0, 8, 8, SigIeQuiet, {0, 0, 0, 0, 0},
|
present), 0, "Quiet", 0, 8, 8, SigIeQuiet, {0, 0, 0, 0, 0},
|
||||||
0, DOT11F_EID_QUIET, 0, },
|
0, DOT11F_EID_QUIET, 0, },
|
||||||
|
@@ -275,6 +275,48 @@ populate_dot11f_chan_switch_ann(tpAniSirGlobal pMac,
|
|||||||
pDot11f->present = 1;
|
pDot11f->present = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* populate_dot11_supp_operating_classes() - Function to populate supported
|
||||||
|
* operating class IE
|
||||||
|
* @mac_ptr: Pointer to PMAC structure
|
||||||
|
* @dot_11_ptr: Operating class element
|
||||||
|
* @session_entry: PE session entry
|
||||||
|
*
|
||||||
|
* Return: None
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
populate_dot11_supp_operating_classes(tpAniSirGlobal mac_ptr,
|
||||||
|
tDot11fIESuppOperatingClasses *dot_11_ptr,
|
||||||
|
tpPESession session_entry)
|
||||||
|
{
|
||||||
|
uint8_t ch_bandwidth;
|
||||||
|
|
||||||
|
if (session_entry->vhtTxChannelWidthSet == eHT_CHANNEL_WIDTH_80MHZ) {
|
||||||
|
ch_bandwidth = BW80;
|
||||||
|
} else {
|
||||||
|
switch (session_entry->htSecondaryChannelOffset) {
|
||||||
|
case PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
|
||||||
|
ch_bandwidth = BW40_HIGH_PRIMARY;
|
||||||
|
break;
|
||||||
|
case PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
|
||||||
|
ch_bandwidth = BW40_LOW_PRIMARY;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ch_bandwidth = BW20;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cds_regdm_get_curr_opclasses(&dot_11_ptr->num_classes,
|
||||||
|
&dot_11_ptr->classes[1]);
|
||||||
|
dot_11_ptr->classes[0] = cds_regdm_get_opclass_from_channel(
|
||||||
|
mac_ptr->scan.countryCodeCurrent,
|
||||||
|
session_entry->currentOperChannel,
|
||||||
|
ch_bandwidth);
|
||||||
|
dot_11_ptr->num_classes++;
|
||||||
|
dot_11_ptr->present = 1;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
populate_dot11f_chan_switch_wrapper(tpAniSirGlobal pMac,
|
populate_dot11f_chan_switch_wrapper(tpAniSirGlobal pMac,
|
||||||
tDot11fIEChannelSwitchWrapper *pDot11f,
|
tDot11fIEChannelSwitchWrapper *pDot11f,
|
||||||
@@ -2293,6 +2335,13 @@ tSirRetStatus sir_convert_probe_frame2_struct(tpAniSirGlobal pMac,
|
|||||||
sizeof(tDot11fIEext_chan_switch_ann));
|
sizeof(tDot11fIEext_chan_switch_ann));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pr->SuppOperatingClasses.present) {
|
||||||
|
pProbeResp->supp_operating_class_present = 1;
|
||||||
|
cdf_mem_copy(&pProbeResp->supp_operating_classes,
|
||||||
|
&pr->SuppOperatingClasses,
|
||||||
|
sizeof(tDot11fIESuppOperatingClasses));
|
||||||
|
}
|
||||||
|
|
||||||
if (pr->sec_chan_offset_ele.present) {
|
if (pr->sec_chan_offset_ele.present) {
|
||||||
pProbeResp->sec_chan_offset_present = 1;
|
pProbeResp->sec_chan_offset_present = 1;
|
||||||
cdf_mem_copy(&pProbeResp->sec_chan_offset,
|
cdf_mem_copy(&pProbeResp->sec_chan_offset,
|
||||||
@@ -3484,6 +3533,13 @@ sir_parse_beacon_ie(tpAniSirGlobal pMac,
|
|||||||
sizeof(pBeaconStruct->channelSwitchIE));
|
sizeof(pBeaconStruct->channelSwitchIE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pBies->SuppOperatingClasses.present) {
|
||||||
|
pBeaconStruct->supp_operating_class_present = 1;
|
||||||
|
cdf_mem_copy(&pBeaconStruct->supp_operating_classes,
|
||||||
|
&pBies->SuppOperatingClasses,
|
||||||
|
sizeof(tDot11fIESuppOperatingClasses));
|
||||||
|
}
|
||||||
|
|
||||||
if (pBies->ext_chan_switch_ann.present) {
|
if (pBies->ext_chan_switch_ann.present) {
|
||||||
pBeaconStruct->ext_chan_switch_present = 1;
|
pBeaconStruct->ext_chan_switch_present = 1;
|
||||||
cdf_mem_copy(&pBeaconStruct->ext_chan_switch,
|
cdf_mem_copy(&pBeaconStruct->ext_chan_switch,
|
||||||
|
@@ -18602,6 +18602,7 @@ csr_update_op_class_array(tpAniSirGlobal mac_ctx,
|
|||||||
uint8_t j = 0, idx = 0, class = 0;
|
uint8_t j = 0, idx = 0, class = 0;
|
||||||
bool found = false;
|
bool found = false;
|
||||||
uint8_t num_channels = channel_info->numChannels;
|
uint8_t num_channels = channel_info->numChannels;
|
||||||
|
uint8_t ch_bandwidth;
|
||||||
|
|
||||||
sms_log(mac_ctx, LOG1,
|
sms_log(mac_ctx, LOG1,
|
||||||
FL("Num of %s channels, %d"),
|
FL("Num of %s channels, %d"),
|
||||||
@@ -18609,23 +18610,28 @@ csr_update_op_class_array(tpAniSirGlobal mac_ctx,
|
|||||||
|
|
||||||
for (idx = 0; idx < num_channels
|
for (idx = 0; idx < num_channels
|
||||||
&& *i < (SIR_MAC_MAX_SUPP_OPER_CLASSES - 1); idx++) {
|
&& *i < (SIR_MAC_MAX_SUPP_OPER_CLASSES - 1); idx++) {
|
||||||
class = cds_regdm_get_opclass_from_channel(
|
for (ch_bandwidth = BW20; ch_bandwidth < BWALL;
|
||||||
mac_ctx->scan.countryCodeCurrent,
|
ch_bandwidth++) {
|
||||||
channel_info->channelList[idx],
|
class = cds_regdm_get_opclass_from_channel(
|
||||||
BWALL);
|
mac_ctx->scan.countryCodeCurrent,
|
||||||
sms_log(mac_ctx, LOG4, FL("for chan %d, op class: %d"),
|
channel_info->channelList[idx],
|
||||||
channel_info->channelList[idx], class);
|
ch_bandwidth);
|
||||||
|
sms_log(mac_ctx, LOG4, FL("for chan %d, op class: %d"),
|
||||||
|
channel_info->channelList[idx], class);
|
||||||
|
|
||||||
found = false;
|
found = false;
|
||||||
for (j = 0; j < SIR_MAC_MAX_SUPP_OPER_CLASSES - 1; j++) {
|
for (j = 0; j < SIR_MAC_MAX_SUPP_OPER_CLASSES - 1;
|
||||||
if (op_classes[j] == class) {
|
j++) {
|
||||||
found = true;
|
if (op_classes[j] == class) {
|
||||||
break;
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found) {
|
||||||
|
op_classes[*i] = class;
|
||||||
|
*i = *i + 1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!found) {
|
|
||||||
op_classes[*i] = class;
|
|
||||||
*i = *i + 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur