|
@@ -4276,106 +4276,6 @@ lim_validate_delts_req(tpAniSirGlobal mac_ctx, tpSirDeltsReq delts_req,
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * lim_process_del_ts_ind() - handle del_ts_ind from HAL
|
|
|
- *
|
|
|
- * @mac_ctx: pointer to Global Mac Structure
|
|
|
- * @lim_msg: pointer to msg buff
|
|
|
- *
|
|
|
- * handles the DeleteTS indication coming from HAL or generated by PE itself
|
|
|
- * in some error cases. Validates the request, sends the DelTs action frame
|
|
|
- * to the Peer and sends DelTs indicatoin to HDD.
|
|
|
- *
|
|
|
- * Return: none
|
|
|
- */
|
|
|
-void lim_process_del_ts_ind(tpAniSirGlobal pMac, struct scheduler_msg *limMsg)
|
|
|
-{
|
|
|
- tpDphHashNode pSta;
|
|
|
- tpDelTsParams pDelTsParam = (tpDelTsParams) (limMsg->bodyptr);
|
|
|
- tpSirDeltsReq pDelTsReq = NULL;
|
|
|
- tSirMacAddr peerMacAddr;
|
|
|
- tpSirDeltsReqInfo pDelTsReqInfo;
|
|
|
- tpLimTspecInfo pTspecInfo;
|
|
|
- tpPESession psessionEntry;
|
|
|
- uint8_t sessionId;
|
|
|
-
|
|
|
- psessionEntry = pe_find_session_by_bssid(pMac, pDelTsParam->bssId,
|
|
|
- &sessionId);
|
|
|
- if (psessionEntry == NULL) {
|
|
|
- pe_err("session does not exist for given BssId");
|
|
|
- qdf_mem_free(limMsg->bodyptr);
|
|
|
- limMsg->bodyptr = NULL;
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- pTspecInfo = &(pMac->lim.tspecInfo[pDelTsParam->tspecIdx]);
|
|
|
- if (pTspecInfo->inuse == false) {
|
|
|
- pe_err("tspec entry with index: %d is not in use",
|
|
|
- pDelTsParam->tspecIdx);
|
|
|
- goto error1;
|
|
|
- }
|
|
|
-
|
|
|
- pSta =
|
|
|
- dph_get_hash_entry(pMac, pTspecInfo->assocId,
|
|
|
- &psessionEntry->dph.dphHashTable);
|
|
|
- if (pSta == NULL) {
|
|
|
- pe_err("Could not find entry in DPH table for assocId: %d",
|
|
|
- pTspecInfo->assocId);
|
|
|
- goto error1;
|
|
|
- }
|
|
|
-
|
|
|
- pDelTsReq = qdf_mem_malloc(sizeof(tSirDeltsReq));
|
|
|
- if (!pDelTsReq)
|
|
|
- goto error1;
|
|
|
-
|
|
|
- if (pSta->wmeEnabled)
|
|
|
- qdf_mem_copy(&(pDelTsReq->req.tspec), &(pTspecInfo->tspec),
|
|
|
- sizeof(tSirMacTspecIE));
|
|
|
- else
|
|
|
- qdf_mem_copy(&(pDelTsReq->req.tsinfo),
|
|
|
- &(pTspecInfo->tspec.tsinfo),
|
|
|
- sizeof(tSirMacTSInfo));
|
|
|
-
|
|
|
- /* validate the req */
|
|
|
- if (QDF_STATUS_SUCCESS !=
|
|
|
- lim_validate_delts_req(pMac, pDelTsReq, peerMacAddr, psessionEntry)) {
|
|
|
- pe_err("lim_validate_delts_req failed");
|
|
|
- goto error2;
|
|
|
- }
|
|
|
- pe_debug("Sent DELTS request to station with "
|
|
|
- "assocId = %d MacAddr = " MAC_ADDRESS_STR,
|
|
|
- pDelTsReq->aid, MAC_ADDR_ARRAY(peerMacAddr));
|
|
|
-
|
|
|
- lim_send_delts_req_action_frame(pMac, peerMacAddr,
|
|
|
- pDelTsReq->req.wmeTspecPresent,
|
|
|
- &pDelTsReq->req.tsinfo,
|
|
|
- &pDelTsReq->req.tspec, psessionEntry);
|
|
|
-
|
|
|
- /* prepare and send an sme indication to HDD */
|
|
|
- pDelTsReqInfo = qdf_mem_malloc(sizeof(tSirDeltsReqInfo));
|
|
|
- if (!pDelTsReqInfo)
|
|
|
- goto error3;
|
|
|
-
|
|
|
- if (pSta->wmeEnabled)
|
|
|
- qdf_mem_copy(&(pDelTsReqInfo->tspec), &(pTspecInfo->tspec),
|
|
|
- sizeof(tSirMacTspecIE));
|
|
|
- else
|
|
|
- qdf_mem_copy(&(pDelTsReqInfo->tsinfo),
|
|
|
- &(pTspecInfo->tspec.tsinfo),
|
|
|
- sizeof(tSirMacTSInfo));
|
|
|
-
|
|
|
- lim_send_sme_delts_ind(pMac, pDelTsReqInfo, pDelTsReq->aid, psessionEntry);
|
|
|
-
|
|
|
-error3:
|
|
|
- qdf_mem_free(pDelTsReqInfo);
|
|
|
-error2:
|
|
|
- qdf_mem_free(pDelTsReq);
|
|
|
-error1:
|
|
|
- qdf_mem_free(limMsg->bodyptr);
|
|
|
- limMsg->bodyptr = NULL;
|
|
|
- return;
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* @function : lim_post_sm_state_update()
|
|
|
*
|