mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
qcacld-3.0: Save client operation class IE
SAP's client operation class IE shows the supported band and bandwidth of the peer. Driver will use the information to identify the peer's band capabilities. Save operation class IE to sta_ds peer struct. Change-Id: Idf0b40cdd85b3da07f9db2e8de0ee2a86b307f40 CRs-Fixed: 2592870
This commit is contained in:
parent
2826782d0d
commit
57ef9a3da1
7 changed files with 46 additions and 3 deletions
|
|
@ -10574,6 +10574,7 @@ typedef struct sDot11fReAssocRequest{
|
|||
tDot11fIEFTInfo FTInfo;
|
||||
uint16_t num_RICDataDesc;
|
||||
tDot11fIERICDataDesc RICDataDesc[2];
|
||||
tDot11fIESuppOperatingClasses SuppOperatingClasses;
|
||||
tDot11fIEWPAOpaque WPAOpaque;
|
||||
tDot11fIEHTCaps HTCaps;
|
||||
tDot11fIEWMMCaps WMMCaps;
|
||||
|
|
|
|||
|
|
@ -184,7 +184,8 @@ typedef struct sDphHashNode {
|
|||
#ifdef WLAN_FEATURE_11AX
|
||||
tDot11fIEhe_cap he_config;
|
||||
#endif
|
||||
|
||||
/* Peer operation class, extracted from ASSOC request frame*/
|
||||
tDot11fIESuppOperatingClasses supp_operating_classes;
|
||||
/*
|
||||
* When a station with already an existing dph entry tries to
|
||||
* associate again, the old dph entry will be zeroed out except
|
||||
|
|
|
|||
|
|
@ -329,6 +329,7 @@ typedef struct sSirAssocReq {
|
|||
tSirMacSupportedChannelIE supportedChannels;
|
||||
tDot11fIEHTCaps HTCaps;
|
||||
tDot11fIEWMMInfoStation WMMInfoStation;
|
||||
tDot11fIESuppOperatingClasses supp_operating_classes;
|
||||
/* / This is set if the frame is a reassoc request: */
|
||||
uint8_t reassocRequest;
|
||||
uint8_t ssidPresent;
|
||||
|
|
|
|||
|
|
@ -1424,6 +1424,14 @@ static bool lim_chk_wmm(struct mac_context *mac_ctx, tpSirMacMgmtHdr hdr,
|
|||
return true;
|
||||
}
|
||||
|
||||
static void lim_update_sta_ds_op_classes(tpSirAssocReq assoc_req,
|
||||
tpDphHashNode sta_ds)
|
||||
{
|
||||
qdf_mem_copy(&sta_ds->supp_operating_classes,
|
||||
&assoc_req->supp_operating_classes,
|
||||
sizeof(tDot11fIESuppOperatingClasses));
|
||||
}
|
||||
|
||||
/**
|
||||
* lim_update_sta_ds() - updates ds dph entry
|
||||
* @mac_ctx: pointer to Global MAC structure
|
||||
|
|
@ -1705,7 +1713,7 @@ static bool lim_update_sta_ds(struct mac_context *mac_ctx, tpSirMacMgmtHdr hdr,
|
|||
== MCSMAPMASK2x2) ? 1 : 2;
|
||||
}
|
||||
lim_update_stads_he_6ghz_op(session, sta_ds);
|
||||
|
||||
lim_update_sta_ds_op_classes(assoc_req, sta_ds);
|
||||
/* Add STA context at MAC HW (BMU, RHP & TFP) */
|
||||
sta_ds->qosMode = false;
|
||||
sta_ds->lleEnabled = false;
|
||||
|
|
|
|||
|
|
@ -6035,6 +6035,9 @@ QDF_STATUS lim_strip_supp_op_class_update_struct(struct mac_context *mac_ctx,
|
|||
pe_err("dot11f_unpack Parse Error");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
if (dst->num_classes)
|
||||
QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_PE, QDF_TRACE_LEVEL_DEBUG,
|
||||
&dst->classes[0], dst->num_classes);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11603,6 +11603,10 @@ static const tIEDefn IES_ReAssocRequest[] = {
|
|||
offsetof(tDot11fReAssocRequest, num_RICDataDesc), "RICDataDesc",
|
||||
2, 2, 550, SigIeRICDataDesc, {0, 0, 0, 0, 0},
|
||||
0, DOT11F_EID_RICDATADESC, 0, 0, },
|
||||
{ offsetof(tDot11fReAssocRequest, SuppOperatingClasses),
|
||||
offsetof(tDot11fIESuppOperatingClasses, present), 0,
|
||||
"SuppOperatingClasses", 0, 3, 34, SigIeSuppOperatingClasses,
|
||||
{0, 0, 0, 0, 0}, 0, DOT11F_EID_SUPPOPERATINGCLASSES, 0, 0, },
|
||||
{ offsetof(tDot11fReAssocRequest, WPAOpaque),
|
||||
offsetof(tDot11fIEWPAOpaque, present), 0, "WPAOpaque",
|
||||
0, 8, 255, SigIeWPAOpaque, {0, 80, 242, 1, 0},
|
||||
|
|
|
|||
|
|
@ -2762,6 +2762,19 @@ sir_convert_assoc_req_frame2_struct(struct mac_context *mac,
|
|||
ext_cap->timing_meas, ext_cap->fine_time_meas_initiator,
|
||||
ext_cap->fine_time_meas_responder);
|
||||
}
|
||||
if (ar->SuppOperatingClasses.present) {
|
||||
uint8_t num_classes = ar->SuppOperatingClasses.num_classes;
|
||||
|
||||
if (num_classes > sizeof(ar->SuppOperatingClasses.classes))
|
||||
num_classes =
|
||||
sizeof(ar->SuppOperatingClasses.classes);
|
||||
qdf_mem_copy(&pAssocReq->supp_operating_classes,
|
||||
&ar->SuppOperatingClasses,
|
||||
sizeof(tDot11fIESuppOperatingClasses));
|
||||
QDF_TRACE_HEX_DUMP(
|
||||
QDF_MODULE_ID_PE, QDF_TRACE_LEVEL_DEBUG,
|
||||
ar->SuppOperatingClasses.classes, num_classes);
|
||||
}
|
||||
|
||||
pAssocReq->vendor_vht_ie.present = ar->vendor_vht_ie.present;
|
||||
if (ar->vendor_vht_ie.present) {
|
||||
|
|
@ -3413,7 +3426,19 @@ sir_convert_reassoc_req_frame2_struct(struct mac_context *mac,
|
|||
convert_wfd_opaque(mac, &pAssocReq->addIE, &ar->WFDIEOpaque);
|
||||
}
|
||||
#endif
|
||||
if (ar->SuppOperatingClasses.present) {
|
||||
uint8_t num_classes = ar->SuppOperatingClasses.num_classes;
|
||||
|
||||
if (num_classes > sizeof(ar->SuppOperatingClasses.classes))
|
||||
num_classes =
|
||||
sizeof(ar->SuppOperatingClasses.classes);
|
||||
qdf_mem_copy(&pAssocReq->supp_operating_classes,
|
||||
&ar->SuppOperatingClasses,
|
||||
sizeof(tDot11fIESuppOperatingClasses));
|
||||
QDF_TRACE_HEX_DUMP(
|
||||
QDF_MODULE_ID_PE, QDF_TRACE_LEVEL_DEBUG,
|
||||
ar->SuppOperatingClasses.classes, num_classes);
|
||||
}
|
||||
if (ar->VHTCaps.present) {
|
||||
qdf_mem_copy(&pAssocReq->VHTCaps, &ar->VHTCaps,
|
||||
sizeof(tDot11fIEVHTCaps));
|
||||
|
|
|
|||
Loading…
Reference in a new issue