qcacld-3.0: Fix for QoS prioritization after roaming
Voice traffic is properly prioritized when a TSPEC is added to the connection. When STA roams to a new AP, TSPEC is negotiated with that AP, firmware is programmed to handle WMM access classes but HDD is not notified of this change. This problem shows up only in non-FT roaming. Ensure that AC flows are reinitialized after roaming. CRs-Fixed: 2003210 Change-Id: I7b9e07cffa90eb966c4a23ff4c4db420fb0122fe
This commit is contained in:

committed by
snandini

parent
6f7fbbeb17
commit
cad0391ea4
@@ -4410,6 +4410,9 @@ QDF_STATUS sme_qos_process_reassoc_req_ev(tpAniSirGlobal pMac, uint8_t sessionId
|
||||
sme_QosSessionInfo *pSession;
|
||||
sme_QosACInfo *pACInfo;
|
||||
sme_QosEdcaAcType ac;
|
||||
sme_QosFlowInfoEntry *flow_info = NULL;
|
||||
tListElem *entry = NULL;
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: %d: invoked on session %d",
|
||||
__func__, __LINE__, sessionId);
|
||||
@@ -4446,6 +4449,34 @@ QDF_STATUS sme_qos_process_reassoc_req_ev(tpAniSirGlobal pMac, uint8_t sessionId
|
||||
sessionId);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Now change reason and HO renewal of
|
||||
* all the flow in this session only
|
||||
*/
|
||||
entry = csr_ll_peek_head(&sme_qos_cb.flow_list, false);
|
||||
if (!entry) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_WARN,
|
||||
FL("Flow List empty, nothing to update"));
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
do {
|
||||
flow_info = GET_BASE_ADDR(entry, sme_QosFlowInfoEntry,
|
||||
link);
|
||||
if (sessionId == flow_info->sessionId) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SME,
|
||||
QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
FL("Changing FlowID %d reason to"
|
||||
" SETUP and HO renewal to true"),
|
||||
flow_info->QosFlowID);
|
||||
flow_info->reason = SME_QOS_REASON_SETUP;
|
||||
flow_info->hoRenewal = true;
|
||||
}
|
||||
entry = csr_ll_next(&sme_qos_cb.flow_list, entry,
|
||||
false);
|
||||
} while (entry);
|
||||
|
||||
/* buffer the existing flows to be renewed after handoff is done */
|
||||
sme_qos_buffer_existing_flows(pMac, sessionId);
|
||||
/* clean up the control block partially for handoff */
|
||||
|
Reference in New Issue
Block a user