From d3507367ab3d62563e91e832f7447f1ef5bc40bc Mon Sep 17 00:00:00 2001 From: Atul Mittal Date: Fri, 19 Sep 2014 19:04:09 +0530 Subject: TDLS: Add RSN and Timeout interval IEs in TDLS Discovery response frame If RSN is enabled, add RSN and Timeout interval IEs in TDLS Discovery response frame. Change-Id: I970d1607c9454e9a59e5ac1a11221bf12c194a7c CRs-Fixed: 727086 --- CORE/MAC/src/pe/lim/limProcessTdls.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/CORE/MAC/src/pe/lim/limProcessTdls.c b/CORE/MAC/src/pe/lim/limProcessTdls.c index f9fc4d15f6b4..4d77c07ba16b 100644 --- a/CORE/MAC/src/pe/lim/limProcessTdls.c +++ b/CORE/MAC/src/pe/lim/limProcessTdls.c @@ -598,7 +598,9 @@ static void PopulateDot11fTdlsHtVhtCap(tpAniSirGlobal pMac, uint32 selfDot11Mode */ static tSirRetStatus limSendTdlsDisRspFrame(tpAniSirGlobal pMac, - tSirMacAddr peerMac, tANI_U8 dialog, tpPESession psessionEntry) + tSirMacAddr peerMac, tANI_U8 dialog, + tpPESession psessionEntry, tANI_U8 *addIe, + tANI_U16 addIeLen) { tDot11fTDLSDisRsp tdlsDisRsp ; tANI_U16 caps = 0 ; @@ -698,7 +700,7 @@ static tSirRetStatus limSendTdlsDisRspFrame(tpAniSirGlobal pMac, */ - nBytes = nPayload + sizeof( tSirMacMgmtHdr ) ; + nBytes = nPayload + sizeof( tSirMacMgmtHdr ) + addIeLen; /* Ok-- try to allocate memory from MGMT PKT pool */ @@ -750,7 +752,14 @@ static tSirRetStatus limSendTdlsDisRspFrame(tpAniSirGlobal pMac, limLog( pMac, LOGW, FL("There were warnings while packing TDLS " "Discovery Request (0x%08x)."), status ); } - + if (0 != addIeLen) + { + LIM_LOG_TDLS(VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR, + ("Copy Additional Ie Len = %d"), addIeLen )); + vos_mem_copy(pFrame + sizeof(tSirMacMgmtHdr) + nPayload, + addIe, + addIeLen); + } VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_INFO, ("transmitting Discovery response on direct link")) ; @@ -2566,15 +2575,18 @@ tSirRetStatus limProcessSmeTdlsMgmtSendReq(tpAniSirGlobal pMac, VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_INFO, "Transmit Discovery Request Frame") ; /* format TDLS discovery request frame and transmit it */ - limSendTdlsDisReqFrame(pMac, pSendMgmtReq->peerMac, pSendMgmtReq->dialog, - psessionEntry) ; + limSendTdlsDisReqFrame(pMac, pSendMgmtReq->peerMac, + pSendMgmtReq->dialog, + psessionEntry) ; resultCode = eSIR_SME_SUCCESS; break; case SIR_MAC_TDLS_DIS_RSP: { //Send a response mgmt action frame limSendTdlsDisRspFrame(pMac, pSendMgmtReq->peerMac, - pSendMgmtReq->dialog, psessionEntry) ; + pSendMgmtReq->dialog, psessionEntry, + &pSendMgmtReq->addIe[0], + (pSendMgmtReq->length - sizeof(tSirTdlsSendMgmtReq))); resultCode = eSIR_SME_SUCCESS; } break; -- cgit v1.2.3