diff options
| -rw-r--r-- | core/sme/src/qos/sme_qos.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/core/sme/src/qos/sme_qos.c b/core/sme/src/qos/sme_qos.c index 76e1683501de..3ee47d21cc6f 100644 --- a/core/sme/src/qos/sme_qos.c +++ b/core/sme/src/qos/sme_qos.c @@ -4421,6 +4421,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); @@ -4453,6 +4456,34 @@ QDF_STATUS sme_qos_process_reassoc_req_ev(tpAniSirGlobal pMac, uint8_t sessionId QDF_ASSERT(0); 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 */ |
