qcacld-3.0: Send TDLS Teardown with proper AC

This is qcacld-2.0 to qcacld-3.0 propagation.

Transmit TDLS Teardown frame with VI AC on direct link
if tdls peer supports qos.

CRs-Fixed: 885035
Change-Id: I02cfd29ea1619b12b2ccb130aa7374e19b4f8491
Цей коміт міститься в:
Pradeep Reddy POTTETI
2016-09-30 15:03:41 +05:30
зафіксовано qcabuildsw
джерело a9e08e9907
коміт 983107dafb

Переглянути файл

@@ -252,6 +252,9 @@ static uint32_t lim_prepare_tdls_frame_header(tpAniSirGlobal pMac, uint8_t *pFra
? link_iden->RespStaAddr : link_iden->InitStaAddr;
uint8_t *staMac = (reqType == TDLS_INITIATOR)
? link_iden->InitStaAddr : link_iden->RespStaAddr;
tpDphHashNode sta_ds;
uint16_t aid = 0;
uint8_t qos_mode = 0;
pMacHdr = (tpSirMacDataHdr3a) (pFrame);
@@ -268,9 +271,17 @@ static uint32_t lim_prepare_tdls_frame_header(tpAniSirGlobal pMac, uint8_t *pFra
*/
pMacHdr->fc.protVer = SIR_MAC_PROTOCOL_VERSION;
pMacHdr->fc.type = SIR_MAC_DATA_FRAME;
sta_ds = dph_lookup_hash_entry(pMac, peerMac, &aid,
&psessionEntry->dph.dphHashTable);
if (sta_ds)
qos_mode = sta_ds->qosMode;
pMacHdr->fc.subType =
IS_QOS_ENABLED(psessionEntry) ? SIR_MAC_DATA_QOS_DATA :
SIR_MAC_DATA_DATA;
((IS_QOS_ENABLED(psessionEntry) &&
(tdlsLinkType == TDLS_LINK_AP)) ||
((tdlsLinkType == TDLS_LINK_DIRECT) && qos_mode))
? SIR_MAC_DATA_QOS_DATA : SIR_MAC_DATA_DATA;
/*
* TL is not setting up below fields, so we are doing it here
@@ -298,7 +309,7 @@ static uint32_t lim_prepare_tdls_frame_header(tpAniSirGlobal pMac, uint8_t *pFra
MAC_ADDR_ARRAY(pMacHdr->addr2),
MAC_ADDR_ARRAY(pMacHdr->addr3));
if (IS_QOS_ENABLED(psessionEntry)) {
if (pMacHdr->fc.subType == SIR_MAC_DATA_QOS_DATA) {
pMacHdr->qosControl.tid = tid;
header_offset += sizeof(tSirMacDataHdr3a);
} else
@@ -1274,6 +1285,10 @@ tSirRetStatus lim_send_tdls_teardown_frame(tpAniSirGlobal pMac,
uint32_t padLen = 0;
#endif
uint8_t smeSessionId = 0;
tpDphHashNode sta_ds;
uint16_t aid = 0;
uint8_t qos_mode = 0;
uint8_t tdls_link_type;
if (NULL == psessionEntry) {
lim_log(pMac, LOGE, FL("psessionEntry is NULL"));
@@ -1320,8 +1335,15 @@ tSirRetStatus lim_send_tdls_teardown_frame(tpAniSirGlobal pMac,
* 89-0d.
* 8 bytes of RFC 1042 header
*/
nBytes = nPayload + ((IS_QOS_ENABLED(psessionEntry))
sta_ds = dph_lookup_hash_entry(pMac, psessionEntry->bssId, &aid,
&psessionEntry->dph.dphHashTable);
if (sta_ds)
qos_mode = sta_ds->qosMode;
tdls_link_type = (reason == eSIR_MAC_TDLS_TEARDOWN_PEER_UNREACHABLE)
? TDLS_LINK_AP : TDLS_LINK_DIRECT;
nBytes = nPayload + (((IS_QOS_ENABLED(psessionEntry) &&
(tdls_link_type == TDLS_LINK_AP)) ||
((tdls_link_type == TDLS_LINK_DIRECT) && qos_mode))
? sizeof(tSirMacDataHdr3a) :
sizeof(tSirMacMgmtHdr))
+ sizeof(eth_890d_header)
@@ -2461,7 +2483,8 @@ static void lim_tdls_update_hash_node_info(tpAniSirGlobal pMac,
pSessStaDs = dph_lookup_hash_entry(pMac, psessionEntry->bssId, &aid,
&psessionEntry->dph.dphHashTable);
/* Lets enable QOS parameter */
pStaDs->qosMode = 1;
pStaDs->qosMode = (pTdlsAddStaReq->capability & CAPABILITIES_QOS_OFFSET)
|| pTdlsAddStaReq->htcap_present;
pStaDs->wmeEnabled = 1;
pStaDs->lleEnabled = 0;
/* TDLS Dummy AddSTA does not have qosInfo , is it OK ??