qcacld-3.0: Populate roam_request qos params from sme_session
While preparing roam_scan_offload_request in csr, populate QoS parameters from current sme_session. Change-Id: I8ec26b61babf15b622d2a96b304f068c15f78795 CRs-Fixed: 1092258
这个提交包含在:
@@ -607,13 +607,6 @@ typedef struct sAniSirLim {
|
|||||||
/* UAPSD flag used on AP */
|
/* UAPSD flag used on AP */
|
||||||
uint8_t gUapsdEnable;
|
uint8_t gUapsdEnable;
|
||||||
|
|
||||||
/* Used on STA, this is a static UAPSD mask setting
|
|
||||||
* derived from SME_JOIN_REQ and SME_REASSOC_REQ. If a
|
|
||||||
* particular AC bit is set, it means the AC is both
|
|
||||||
* trigger enabled and delivery enabled.
|
|
||||||
*/
|
|
||||||
uint8_t gUapsdPerAcBitmask;
|
|
||||||
|
|
||||||
/* Used on STA for AC downgrade. This is a dynamic mask
|
/* Used on STA for AC downgrade. This is a dynamic mask
|
||||||
* setting which keep tracks of ACs being admitted.
|
* setting which keep tracks of ACs being admitted.
|
||||||
* If bit is set to 0: That partiular AC is not admitted
|
* If bit is set to 0: That partiular AC is not admitted
|
||||||
|
@@ -680,7 +680,7 @@ populate_dot11f_qos_caps_ap(tpAniSirGlobal pMac,
|
|||||||
tpPESession psessionEntry);
|
tpPESession psessionEntry);
|
||||||
|
|
||||||
void
|
void
|
||||||
populate_dot11f_qos_caps_station(tpAniSirGlobal pMac,
|
populate_dot11f_qos_caps_station(tpAniSirGlobal pMac, tpPESession session,
|
||||||
tDot11fIEQOSCapsStation *pDot11f);
|
tDot11fIEQOSCapsStation *pDot11f);
|
||||||
|
|
||||||
tSirRetStatus
|
tSirRetStatus
|
||||||
|
@@ -234,7 +234,6 @@ static void __lim_init_vars(tpAniSirGlobal pMac)
|
|||||||
|
|
||||||
/* WMM Related Flag */
|
/* WMM Related Flag */
|
||||||
pMac->lim.gUapsdEnable = 0;
|
pMac->lim.gUapsdEnable = 0;
|
||||||
pMac->lim.gUapsdPerAcBitmask = 0;
|
|
||||||
|
|
||||||
/* QoS-AC Downgrade: Initially, no AC is admitted */
|
/* QoS-AC Downgrade: Initially, no AC is admitted */
|
||||||
pMac->lim.gAcAdmitMask[SIR_MAC_DIRECTION_UPLINK] = 0;
|
pMac->lim.gAcAdmitMask[SIR_MAC_DIRECTION_UPLINK] = 0;
|
||||||
|
@@ -161,7 +161,8 @@ void lim_send_reassoc_req_with_ft_ies_mgmt_frame(tpAniSirGlobal mac_ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (qos_enabled)
|
if (qos_enabled)
|
||||||
populate_dot11f_qos_caps_station(mac_ctx, &frm.QOSCapsStation);
|
populate_dot11f_qos_caps_station(mac_ctx, pe_session,
|
||||||
|
&frm.QOSCapsStation);
|
||||||
|
|
||||||
populate_dot11f_ext_supp_rates(mac_ctx,
|
populate_dot11f_ext_supp_rates(mac_ctx,
|
||||||
POPULATE_DOT11F_RATES_OPERATIONAL, &frm.ExtSuppRates,
|
POPULATE_DOT11F_RATES_OPERATIONAL, &frm.ExtSuppRates,
|
||||||
@@ -624,7 +625,8 @@ void lim_send_reassoc_req_mgmt_frame(tpAniSirGlobal pMac,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (fQosEnabled)
|
if (fQosEnabled)
|
||||||
populate_dot11f_qos_caps_station(pMac, &frm.QOSCapsStation);
|
populate_dot11f_qos_caps_station(pMac, psessionEntry,
|
||||||
|
&frm.QOSCapsStation);
|
||||||
|
|
||||||
populate_dot11f_ext_supp_rates(pMac, POPULATE_DOT11F_RATES_OPERATIONAL,
|
populate_dot11f_ext_supp_rates(pMac, POPULATE_DOT11F_RATES_OPERATIONAL,
|
||||||
&frm.ExtSuppRates, psessionEntry);
|
&frm.ExtSuppRates, psessionEntry);
|
||||||
|
@@ -1732,7 +1732,8 @@ lim_send_assoc_req_mgmt_frame(tpAniSirGlobal mac_ctx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (qos_enabled)
|
if (qos_enabled)
|
||||||
populate_dot11f_qos_caps_station(mac_ctx, &frm->QOSCapsStation);
|
populate_dot11f_qos_caps_station(mac_ctx, pe_session,
|
||||||
|
&frm->QOSCapsStation);
|
||||||
|
|
||||||
populate_dot11f_ext_supp_rates(mac_ctx,
|
populate_dot11f_ext_supp_rates(mac_ctx,
|
||||||
POPULATE_DOT11F_RATES_OPERATIONAL, &frm->ExtSuppRates,
|
POPULATE_DOT11F_RATES_OPERATIONAL, &frm->ExtSuppRates,
|
||||||
|
@@ -1516,7 +1516,7 @@ populate_dot11f_qos_caps_ap(tpAniSirGlobal pMac,
|
|||||||
} /* End PopulatedDot11fQOSCaps. */
|
} /* End PopulatedDot11fQOSCaps. */
|
||||||
|
|
||||||
void
|
void
|
||||||
populate_dot11f_qos_caps_station(tpAniSirGlobal pMac,
|
populate_dot11f_qos_caps_station(tpAniSirGlobal pMac, tpPESession pe_session,
|
||||||
tDot11fIEQOSCapsStation *pDot11f)
|
tDot11fIEQOSCapsStation *pDot11f)
|
||||||
{
|
{
|
||||||
uint32_t val = 0;
|
uint32_t val = 0;
|
||||||
@@ -1531,13 +1531,13 @@ populate_dot11f_qos_caps_station(tpAniSirGlobal pMac,
|
|||||||
|
|
||||||
if (pMac->lim.gUapsdEnable) {
|
if (pMac->lim.gUapsdEnable) {
|
||||||
pDot11f->acbe_uapsd =
|
pDot11f->acbe_uapsd =
|
||||||
LIM_UAPSD_GET(ACBE, pMac->lim.gUapsdPerAcBitmask);
|
LIM_UAPSD_GET(ACBE, pe_session->gUapsdPerAcBitmask);
|
||||||
pDot11f->acbk_uapsd =
|
pDot11f->acbk_uapsd =
|
||||||
LIM_UAPSD_GET(ACBK, pMac->lim.gUapsdPerAcBitmask);
|
LIM_UAPSD_GET(ACBK, pe_session->gUapsdPerAcBitmask);
|
||||||
pDot11f->acvi_uapsd =
|
pDot11f->acvi_uapsd =
|
||||||
LIM_UAPSD_GET(ACVI, pMac->lim.gUapsdPerAcBitmask);
|
LIM_UAPSD_GET(ACVI, pe_session->gUapsdPerAcBitmask);
|
||||||
pDot11f->acvo_uapsd =
|
pDot11f->acvo_uapsd =
|
||||||
LIM_UAPSD_GET(ACVO, pMac->lim.gUapsdPerAcBitmask);
|
LIM_UAPSD_GET(ACVO, pe_session->gUapsdPerAcBitmask);
|
||||||
}
|
}
|
||||||
pDot11f->present = 1;
|
pDot11f->present = 1;
|
||||||
} /* End PopulatedDot11fQOSCaps. */
|
} /* End PopulatedDot11fQOSCaps. */
|
||||||
|
@@ -1002,6 +1002,7 @@ typedef struct tagCsrRoamSession {
|
|||||||
bool disable_hi_rssi;
|
bool disable_hi_rssi;
|
||||||
bool dhcp_done;
|
bool dhcp_done;
|
||||||
uint8_t disconnect_reason;
|
uint8_t disconnect_reason;
|
||||||
|
uint8_t uapsd_mask;
|
||||||
} tCsrRoamSession;
|
} tCsrRoamSession;
|
||||||
|
|
||||||
typedef struct tagCsrRoamStruct {
|
typedef struct tagCsrRoamStruct {
|
||||||
|
@@ -13928,6 +13928,7 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId,
|
|||||||
FL("CSR PERSONA=%d CSR CbMode %d"),
|
FL("CSR PERSONA=%d CSR CbMode %d"),
|
||||||
pProfile->csrPersona, pSession->bssParams.cbMode);
|
pProfile->csrPersona, pSession->bssParams.cbMode);
|
||||||
csr_join_req->uapsdPerAcBitmask = pProfile->uapsd_mask;
|
csr_join_req->uapsdPerAcBitmask = pProfile->uapsd_mask;
|
||||||
|
pSession->uapsd_mask = pProfile->uapsd_mask;
|
||||||
status =
|
status =
|
||||||
csr_get_rate_set(pMac, pProfile,
|
csr_get_rate_set(pMac, pProfile,
|
||||||
(eCsrPhyMode) pProfile->phyMode,
|
(eCsrPhyMode) pProfile->phyMode,
|
||||||
@@ -16919,14 +16920,10 @@ csr_update_roam_scan_offload_request(tpAniSirGlobal mac_ctx,
|
|||||||
SIR_BTK_KEY_LEN);
|
SIR_BTK_KEY_LEN);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
req_buf->AcUapsd.acbe_uapsd =
|
req_buf->AcUapsd.acbe_uapsd = SIR_UAPSD_GET(ACBE, session->uapsd_mask);
|
||||||
SIR_UAPSD_GET(ACBE, mac_ctx->lim.gUapsdPerAcBitmask);
|
req_buf->AcUapsd.acbk_uapsd = SIR_UAPSD_GET(ACBK, session->uapsd_mask);
|
||||||
req_buf->AcUapsd.acbk_uapsd =
|
req_buf->AcUapsd.acvi_uapsd = SIR_UAPSD_GET(ACVI, session->uapsd_mask);
|
||||||
SIR_UAPSD_GET(ACBK, mac_ctx->lim.gUapsdPerAcBitmask);
|
req_buf->AcUapsd.acvo_uapsd = SIR_UAPSD_GET(ACVO, session->uapsd_mask);
|
||||||
req_buf->AcUapsd.acvi_uapsd =
|
|
||||||
SIR_UAPSD_GET(ACVI, mac_ctx->lim.gUapsdPerAcBitmask);
|
|
||||||
req_buf->AcUapsd.acvo_uapsd =
|
|
||||||
SIR_UAPSD_GET(ACVO, mac_ctx->lim.gUapsdPerAcBitmask);
|
|
||||||
}
|
}
|
||||||
#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
|
#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
|
||||||
|
|
||||||
|
@@ -806,7 +806,7 @@ QDF_STATUS wma_roam_scan_offload_mode(tp_wma_handle wma_handle,
|
|||||||
roam_req->assoc_ie.length);
|
roam_req->assoc_ie.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
WMA_LOGE(FL("my_dbg: qos_caps: %d, qos_enabled: %d"),
|
WMA_LOGD(FL("qos_caps: %d, qos_enabled: %d"),
|
||||||
params->roam_offload_params.qos_caps,
|
params->roam_offload_params.qos_caps,
|
||||||
params->roam_offload_params.qos_enabled);
|
params->roam_offload_params.qos_enabled);
|
||||||
|
|
||||||
|
在新工单中引用
屏蔽一个用户