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
这个提交包含在:
Naveen Rawat
2016-11-22 10:46:21 -08:00
提交者 qcabuildsw
父节点 d4c0c5475b
当前提交 cd11831498
修改 9 个文件,包含 19 行新增26 行删除

查看文件

@@ -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);