HT40/HT20 connection cannot be established on TDLS link
Pass (v)ht_present from supplicant down to LIM correctly.
Correct AddStaParams->vhtTxWidthSet per firmware's
expectation, which is 0 for HT20_40 and 1 for HT80, and is
different than vhtCapInfo.vhtTxWidthSet value (0 for HT 80).
Change-Id: Ic7e20a002ca738f9380913183c05417aed40f16d
CRs-Fixed: 472051
diff --git a/CORE/HDD/inc/wlan_hdd_tdls.h b/CORE/HDD/inc/wlan_hdd_tdls.h
index 3284b1b..c98e679 100644
--- a/CORE/HDD/inc/wlan_hdd_tdls.h
+++ b/CORE/HDD/inc/wlan_hdd_tdls.h
@@ -225,8 +225,6 @@
eTDLSSupportMode tdls_mode,
v_BOOL_t bUpdateLast);
-static void wlan_hdd_tdls_pre_setup(tdlsCtx_t *pHddTdlsCtx, hddTdlsPeer_t *curr_peer);
-
tANI_U32 wlan_hdd_tdls_discovery_sent_cnt(hdd_context_t *pHddCtx);
void wlan_hdd_tdls_check_power_save_prohibited(hdd_adapter_t *pAdapter);
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c
index 8e20e9c..13c5bc6 100755
--- a/CORE/HDD/src/wlan_hdd_assoc.c
+++ b/CORE/HDD/src/wlan_hdd_assoc.c
@@ -1880,8 +1880,8 @@
if ( !VOS_IS_STATUS_SUCCESS( vosStatus ) )
{
VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
- "WLANTL_RegisterSTAClient() failed to register. \
- Status= %d [0x%08lX]", vosStatus, vosStatus );
+ "%s: WLANTL_RegisterSTAClient() failed to register. \
+ Status= %d [0x%08lX]", __func__, vosStatus, vosStatus );
return vosStatus;
}
@@ -1991,7 +1991,7 @@
{
status = eHAL_STATUS_FAILURE;
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
- "no availalbe slot in conn_info. staId %d cannot be stored", pRoamInfo->staId);
+ "%s: no available slot in conn_info. staId %d cannot be stored", __func__, pRoamInfo->staId);
}
pAdapter->tdlsAddStaStatus = status;
}
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 62aa33b..cb67991 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -2863,19 +2863,25 @@
{
VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
"%s: TDLS Peer Parameters.", __func__);
- VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
- "ht_capa->cap_info: %0x", StaParams->HTCap.capInfo);
- VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
- "ht_capa->extended_capabilities: %0x",
- StaParams->HTCap.extendedHtCapInfo);
+ if(StaParams->htcap_present)
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
+ "ht_capa->cap_info: %0x", StaParams->HTCap.capInfo);
+ VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
+ "ht_capa->extended_capabilities: %0x",
+ StaParams->HTCap.extendedHtCapInfo);
+ }
VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
"params->capability: %0x",StaParams->capability);
VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
"params->ext_capab_len: %0x",StaParams->extn_capability);
- VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
- "rxMcsMap %x rxHighest %x txMcsMap %x txHighest %x",
- StaParams->VHTCap.suppMcs.rxMcsMap, StaParams->VHTCap.suppMcs.rxHighest,
- StaParams->VHTCap.suppMcs.txMcsMap, StaParams->VHTCap.suppMcs.txHighest);
+ if(StaParams->vhtcap_present)
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
+ "rxMcsMap %x rxHighest %x txMcsMap %x txHighest %x",
+ StaParams->VHTCap.suppMcs.rxMcsMap, StaParams->VHTCap.suppMcs.rxHighest,
+ StaParams->VHTCap.suppMcs.txMcsMap, StaParams->VHTCap.suppMcs.txHighest);
+ }
{
int i = 0;
VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL, "Supported rates:");
@@ -2979,7 +2985,10 @@
sizeof(StaParams.extn_capability));
if (NULL != params->ht_capa)
+ {
+ StaParams.htcap_present = 1;
vos_mem_copy(&StaParams.HTCap, params->ht_capa, sizeof(tSirHTCap));
+ }
StaParams.supported_rates_len = params->supported_rates_len;
@@ -3006,7 +3015,10 @@
}
if (NULL != params->vht_capa)
+ {
+ StaParams.vhtcap_present = 1;
vos_mem_copy(&StaParams.VHTCap, params->vht_capa, sizeof(tSirVHTCap));
+ }
if (0 != params->ext_capab_len ) {
/*Define A Macro : TODO Sunil*/
diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c
index 1ba803b..f8ab7a1 100644
--- a/CORE/HDD/src/wlan_hdd_tdls.c
+++ b/CORE/HDD/src/wlan_hdd_tdls.c
@@ -43,6 +43,7 @@
static tANI_S32 wlan_hdd_get_tdls_discovery_peer_cnt(tdlsCtx_t *pHddTdlsCtx);
static tANI_S32 wlan_hdd_tdls_peer_reset_discovery_processed(tdlsCtx_t *pHddTdlsCtx);
static void wlan_hdd_tdls_timers_destroy(tdlsCtx_t *pHddTdlsCtx);
+static void wlan_hdd_tdls_pre_setup(tdlsCtx_t *pHddTdlsCtx,hddTdlsPeer_t *curr_peer);
#ifndef WLAN_FEATURE_TDLS_DEBUG
#define TDLS_LOG_LEVEL VOS_TRACE_LEVEL_INFO
@@ -262,16 +263,20 @@
curr_peer = list_entry (pos, hddTdlsPeer_t, node);
VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
- "hdd update cb " MAC_ADDRESS_STR " link_status %d"
- " tdls_support %d", MAC_ADDR_ARRAY(curr_peer->peerMac),
+ "%s: " MAC_ADDRESS_STR " link_status %d"
+ " tdls_support %d", __func__, MAC_ADDR_ARRAY(curr_peer->peerMac),
curr_peer->link_status, curr_peer->tdls_support);
if (eTDLS_CAP_SUPPORTED == curr_peer->tdls_support) {
VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
- "%s: (tx %d, rx %d, config %d) " MAC_ADDRESS_STR " (%d) ",
- __func__, curr_peer->tx_pkt, curr_peer->rx_pkt,
+ "tx %d, rx %d (thr.pkt %d/idle %d), rssi %d (thr.trig %d/hys %d/tear %d)",
+ curr_peer->tx_pkt, curr_peer->rx_pkt,
pHddTdlsCtx->threshold_config.tx_packet_n,
- MAC_ADDR_ARRAY(curr_peer->peerMac), curr_peer->link_status);
+ pHddTdlsCtx->threshold_config.idle_packet_n,
+ curr_peer->rssi,
+ pHddTdlsCtx->threshold_config.rssi_trigger_threshold,
+ pHddTdlsCtx->threshold_config.rssi_hysteresis,
+ pHddTdlsCtx->threshold_config.rssi_teardown_threshold);
if ((eTDLS_LINK_IDLE == curr_peer->link_status) ||
(eTDLS_LINK_DISCOVERING == curr_peer->link_status)){