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
Цей коміт міститься в:

зафіксовано
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 ??
|
||||
|
Посилання в новій задачі
Заблокувати користувача