summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-06-22 02:24:14 -0600
committerLinux Build Service Account <lnxbuild@localhost>2016-06-22 02:24:14 -0600
commitc04dc51b3267acc1e64f89b79b34e6b0deddb457 (patch)
tree3852775573de3859fba53755e57511d180211d85
parentb8a8552b12995c792a5e4747a07129df46e686c1 (diff)
parente6ff9c0a6745d72567f6c96f2fcc91472f043916 (diff)
Promotion of wlan-cld2.driver.lnx.1.0-00036.
CRs Change ID Subject -------------------------------------------------------------------------------------------------------------- 1030590 Idc0b4f15f2b7464507aacfaefb99e1ba48ad1eca qcacld-2.0: Fix max dwell time for passive scan beacon r 1030380 Icea6228c6491d8b7d0588a699fe7f16d0dd0d3f1 qcacld-2.0: Add check for NDI role in __limFreshScanReqd 1028085 I155bc141087104ad1443d250711423d5fa936254 qcacld-2.0: Check consistency in throughput before setti 688141 If87bc869d97dd810d8be3b23eeb6cc67b7b4d279 Release 4.0.11.104 688141 Ia1bdb327b957022671462cddf911ed86aef69802 Release 4.0.11.103 1025378 I915e67fe7a15ebe622273af971d8a88ad78585cf qcacld-2.0: Fix buffer overflow 956590 Ib6ed5744cf38924a6b1dc20e3291639554c42c6b qcacld-2.0: Convert pr_info logs to vos_trace logs 1032026 I1fb81226f90e90d6a5d3870d5b585c7df22db755 qcacld-2.0: Reduce log level in smeTraceDump 1031987 Ied13b8655d9e2831fb097156c8fb72239b443f94 qcacld-2.0: Move IPA dp logs under HDD_DATA module id 1029923 Ifc6e14031ce1427247093e185ee16510ed3168da qcacld-2.0: Fix mac address print issue in WOW RX API Change-Id: Icce0d0c2b7e17ca6cd3515a04550f3849c649160 CRs-Fixed: 1025378, 1032026, 1029923, 956590, 1030590, 1031987, 688141, 1028085, 1030380
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg.h16
-rw-r--r--CORE/HDD/inc/wlan_hdd_main.h1
-rw-r--r--CORE/HDD/inc/wlan_hdd_tx_rx.h10
-rw-r--r--CORE/HDD/src/wlan_hdd_assoc.c28
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c20
-rw-r--r--CORE/HDD/src/wlan_hdd_early_suspend.c1
-rw-r--r--CORE/HDD/src/wlan_hdd_ipa.c11
-rw-r--r--CORE/HDD/src/wlan_hdd_main.c15
-rw-r--r--CORE/HDD/src/wlan_hdd_tx_rx.c24
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/MAC/src/pe/include/rrmGlobal.h5
-rw-r--r--CORE/MAC/src/pe/lim/limAIDmgmt.c3
-rw-r--r--CORE/MAC/src/pe/lim/limP2P.c2
-rw-r--r--CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c147
-rw-r--r--CORE/MAC/src/pe/rrm/rrmApi.c4
-rw-r--r--CORE/SERVICES/WMA/wma.c4
-rw-r--r--CORE/SME/src/sme_common/sme_Trace.c8
17 files changed, 204 insertions, 99 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 515e61f1e43d..828f126c8333 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -1005,13 +1005,13 @@ enum
#define CFG_RRM_OPERATING_CHAN_MAX_DURATION_NAME "gRrmOperChanMax" //section 11.10.3 IEEE std. 802.11k-2008
#define CFG_RRM_OPERATING_CHAN_MAX_DURATION_MIN (0) //Maxduration = 2^(maxDuration - 4) * bcnIntvl.
-#define CFG_RRM_OPERATING_CHAN_MAX_DURATION_MAX (8)
-#define CFG_RRM_OPERATING_CHAN_MAX_DURATION_DEFAULT (3) //max duration = 2^-1 * bcnIntvl (50% of bcn intvl)
+#define CFG_RRM_OPERATING_CHAN_MAX_DURATION_MAX (7)
+#define CFG_RRM_OPERATING_CHAN_MAX_DURATION_DEFAULT (4) //max duration = 2^0 * bcnIntvl (100% of bcn intvl)
#define CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_NAME "gRrmNonOperChanMax" //Same as above.
#define CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MIN (0)
-#define CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MAX (8)
-#define CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_DEFAULT (3)
+#define CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MAX (7)
+#define CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_DEFAULT (4)
#define CFG_RRM_MEAS_RANDOMIZATION_INTVL_NAME "gRrmRandnIntvl"
#define CFG_RRM_MEAS_RANDOMIZATION_INTVL_MIN (10)
@@ -1028,7 +1028,7 @@ enum
* Comma is used as a separator for each byte.
*/
#define CFG_RM_CAPABILITY_NAME "rm_capability"
-#define CFG_RM_CAPABILITY_DEFAULT "73,00,6D,00,04"
+#define CFG_RM_CAPABILITY_DEFAULT "73,00,91,00,04"
#endif
#define CFG_QOS_IMPLICIT_SETUP_ENABLED_NAME "ImplicitQosIsEnabled"
@@ -2901,6 +2901,11 @@ This feature requires the dependent cfg.ini "gRoamPrefer5GHz" set to 1 */
#define CFG_TCP_DELACK_THRESHOLD_LOW_MIN ( 0 )
#define CFG_TCP_DELACK_THRESHOLD_LOW_MAX ( 10000 )
+#define CFG_TCP_DELACK_TIMER_COUNT "gTcpDelAckTimerCount"
+#define CFG_TCP_DELACK_TIMER_COUNT_DEFAULT ( 30 )
+#define CFG_TCP_DELACK_TIMER_COUNT_MIN ( 1 )
+#define CFG_TCP_DELACK_TIMER_COUNT_MAX ( 1000 )
+
/* TCP_TX_HIGH_TPUT_THRESHOLD specifies the threshold of packets transmitted
* over a period of 100 ms beyond which TCP can be considered to have a high
@@ -4451,6 +4456,7 @@ struct hdd_config {
v_U32_t busBandwidthComputeInterval;
v_U32_t tcpDelackThresholdHigh;
v_U32_t tcpDelackThresholdLow;
+ uint32_t tcpDelackTimerCount;
uint32_t tcp_tx_high_tput_thres;
#endif /* FEATURE_BUS_BANDWIDTH */
#ifdef QCA_SUPPORT_TXRX_HL_BUNDLE
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 7e9e60d8e1d4..7e3a85a3b86c 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -1819,6 +1819,7 @@ struct hdd_context_s
* at runtime and intersecting it with target capab before updating.
*/
uint32_t fine_time_meas_cap_target;
+ uint32_t rx_high_ind_cnt;
int radio_index;
diff --git a/CORE/HDD/inc/wlan_hdd_tx_rx.h b/CORE/HDD/inc/wlan_hdd_tx_rx.h
index 5d6a83e97baf..df434b1da0b1 100644
--- a/CORE/HDD/inc/wlan_hdd_tx_rx.h
+++ b/CORE/HDD/inc/wlan_hdd_tx_rx.h
@@ -244,6 +244,16 @@ void hdd_tx_resume_timer_expired_handler(void *adapter_context);
#endif /* QCA_LL_TX_FLOW_CT */
/**
+ * hdd_rst_tcp_delack() - Reset tcp delack value to original level.
+ * @hdd_context_t : HDD context
+ *
+ * HDD will call this API on unloading path to clear delack value.
+ *
+ * Return: None
+ */
+void hdd_rst_tcp_delack(hdd_context_t *hdd_ctx);
+
+/**
* hdd_mon_rx_packet_cbk() - Receive callback registered with TL.
* @vosContext: [in] pointer to VOS context
* @staId: [in] Station Id
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c
index 2b2538f3e402..d71149c89541 100644
--- a/CORE/HDD/src/wlan_hdd_assoc.c
+++ b/CORE/HDD/src/wlan_hdd_assoc.c
@@ -810,12 +810,15 @@ static void hdd_SendAssociationEvent(struct net_device *dev,tCsrRoamInfo *pCsrRo
wlan_hdd_incr_active_session(pHddCtx, pAdapter->device_mode);
memcpy(wrqu.ap_addr.sa_data, pHddStaCtx->conn_info.bssId, ETH_ALEN);
type = WLAN_STA_ASSOC_DONE_IND;
- pr_info("wlan: new IBSS connection to " MAC_ADDRESS_STR"\n",
- MAC_ADDR_ARRAY(pHddStaCtx->conn_info.bssId));
+
+ VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "wlan: new IBSS connection to " MAC_ADDRESS_STR,
+ MAC_ADDR_ARRAY(pHddStaCtx->conn_info.bssId));
}
else /* Not Associated */
{
- pr_info("wlan: disconnected\n");
+ VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "wlan: disconnected");
type = WLAN_STA_DISASSOC_DONE_IND;
memset(wrqu.ap_addr.sa_data,'\0',ETH_ALEN);
wlan_hdd_decr_active_session(pHddCtx, pAdapter->device_mode);
@@ -2075,13 +2078,12 @@ static eHalStatus hdd_AssociationCompletionHandler( hdd_adapter_t *pAdapter, tCs
hdd_wext_state_t *pWextState = WLAN_HDD_GET_WEXT_STATE_PTR(pAdapter);
if (pRoamInfo)
- pr_info("wlan: connection failed with " MAC_ADDRESS_STR
- " result:%d and Status:%d\n",
- MAC_ADDR_ARRAY(pRoamInfo->bssid),
- roamResult, roamStatus);
+ VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "wlan: connection failed with " MAC_ADDRESS_STR " result:%d and Status:%d",
+ MAC_ADDR_ARRAY(pRoamInfo->bssid), roamResult, roamStatus);
else
- pr_info("wlan: connection failed with " MAC_ADDRESS_STR
- " result:%d and Status:%d\n",
+ VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "wlan: connection failed with " MAC_ADDRESS_STR " result:%d and Status:%d",
MAC_ADDR_ARRAY(pWextState->req_bssId),
roamResult, roamStatus);
@@ -2765,8 +2767,8 @@ static eHalStatus roamRoamConnectStatusUpdateHandler( hdd_adapter_t *pAdapter, t
hdd_station_ctx_t *pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
struct station_info staInfo;
- pr_info ( "IBSS New Peer indication from SME "
- "with peerMac " MAC_ADDRESS_STR " BSSID: " MAC_ADDRESS_STR " and stationID= %d",
+ VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "IBSS New Peer indication from SME with peerMac " MAC_ADDRESS_STR " BSSID: " MAC_ADDRESS_STR " and stationID= %d",
MAC_ADDR_ARRAY(pRoamInfo->peerMac),
MAC_ADDR_ARRAY(pHddStaCtx->conn_info.bssId),
pRoamInfo->staId );
@@ -2853,8 +2855,8 @@ static eHalStatus roamRoamConnectStatusUpdateHandler( hdd_adapter_t *pAdapter, t
"IBSS peer departed by cannot find peer in our registration table with TL" );
}
- pr_info ( "IBSS Peer Departed from SME "
- "with peerMac " MAC_ADDRESS_STR " BSSID: " MAC_ADDRESS_STR " and stationID= %d",
+ VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "IBSS Peer Departed from SME with peerMac " MAC_ADDRESS_STR " BSSID: " MAC_ADDRESS_STR " and stationID= %d",
MAC_ADDR_ARRAY(pRoamInfo->peerMac),
MAC_ADDR_ARRAY(pHddStaCtx->conn_info.bssId),
pRoamInfo->staId );
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index af88009372fb..3c1e918f7982 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -3546,6 +3546,13 @@ REG_TABLE_ENTRY g_registry_table[] =
CFG_TCP_DELACK_THRESHOLD_LOW_MIN,
CFG_TCP_DELACK_THRESHOLD_LOW_MAX ),
+ REG_VARIABLE( CFG_TCP_DELACK_TIMER_COUNT, WLAN_PARAM_Integer,
+ hdd_config_t, tcpDelackTimerCount,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_TCP_DELACK_TIMER_COUNT_DEFAULT,
+ CFG_TCP_DELACK_TIMER_COUNT_MIN,
+ CFG_TCP_DELACK_TIMER_COUNT_MAX ),
+
REG_VARIABLE( CFG_TCP_TX_HIGH_TPUT_THRESHOLD_NAME, WLAN_PARAM_Integer,
hdd_config_t, tcp_tx_high_tput_thres,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -5199,6 +5206,9 @@ void print_hdd_cfg(hdd_context_t *pHddCtx)
"Name = [gTcpDelAckThresholdLow] Value = [%u] ",
pHddCtx->cfg_ini->tcpDelackThresholdLow);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
+ "Name = [tcpDelackTimerCount] Value = [%u] ",
+ pHddCtx->cfg_ini->tcpDelackTimerCount);
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
"Name = [%s] Value = [%u] ", CFG_TCP_TX_HIGH_TPUT_THRESHOLD_NAME,
pHddCtx->cfg_ini->tcp_tx_high_tput_thres);
@@ -7151,6 +7161,16 @@ VOS_STATUS hdd_set_sme_config( hdd_context_t *pHddCtx )
hdd_hex_string_to_u8_array(pConfig->rm_capability,
smeConfig->rrmConfig.rm_capability, &rrm_capab_len,
DOT11F_IE_RRMENABLEDCAP_MAX_LEN);
+ /*
+ * Update the INI values gRrmOperChanMax and gRrmNonOperChanMax appropriately
+ */
+ smeConfig->rrmConfig.rm_capability[2] =
+ ((pConfig->nOutChanMeasMaxDuration <<
+ CAP_NONOPER_CHAN_MAX_DURATION_OFFSET) |
+ (pConfig->nOutChanMeasMaxDuration <<
+ CAP_OPER_CHAN_MAX_DURATION_OFFSET) |
+ (smeConfig->rrmConfig.rm_capability[2] &
+ (RM_CAP_RM_MIB | RM_CAP_AP_CHAN_REPORT)));
#endif
//Remaining config params not obtained from registry
// On RF EVB beacon using channel 1.
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c
index 48e8bc4b067d..56d90e678936 100644
--- a/CORE/HDD/src/wlan_hdd_early_suspend.c
+++ b/CORE/HDD/src/wlan_hdd_early_suspend.c
@@ -1962,6 +1962,7 @@ VOS_STATUS hdd_wlan_shutdown(void)
vos_timer_getCurrentState(&pHddCtx->bus_bw_timer))
{
vos_timer_stop(&pHddCtx->bus_bw_timer);
+ hdd_rst_tcp_delack(pHddCtx);
}
#endif
diff --git a/CORE/HDD/src/wlan_hdd_ipa.c b/CORE/HDD/src/wlan_hdd_ipa.c
index 95c7bd78a1e2..a1b8641b6b0b 100644
--- a/CORE/HDD/src/wlan_hdd_ipa.c
+++ b/CORE/HDD/src/wlan_hdd_ipa.c
@@ -214,6 +214,9 @@ struct hdd_ipa_uc_rx_hdr {
#define HDD_IPA_LOG(LVL, fmt, args...) VOS_TRACE(VOS_MODULE_ID_HDD, LVL, \
"%s:%d: "fmt, __func__, __LINE__, ## args)
+#define HDD_IPA_DP_LOG(LVL, fmt, args...) VOS_TRACE(VOS_MODULE_ID_HDD_DATA, LVL, \
+ "%s:%d: "fmt, __func__, __LINE__, ## args)
+
#define HDD_IPA_DBG_DUMP(_lvl, _prefix, _buf, _len) \
do {\
@@ -1656,7 +1659,7 @@ static void hdd_ipa_uc_op_cb(struct op_msg_type *op_msg, void *usr_ctxt)
return;
}
- HDD_IPA_LOG(VOS_TRACE_LEVEL_DEBUG,
+ HDD_IPA_DP_LOG(VOS_TRACE_LEVEL_DEBUG,
"%s, OPCODE %s", __func__, op_string[msg->op_code]);
if ((HDD_IPA_UC_OPCODE_TX_RESUME == msg->op_code) ||
@@ -3002,7 +3005,7 @@ static enum hdd_ipa_forward_type hdd_ipa_intrabss_forward(
int ret = HDD_IPA_FORWARD_PKT_NONE;
if ((desc & FW_RX_DESC_FORWARD_M)) {
- HDD_IPA_LOG(VOS_TRACE_LEVEL_DEBUG,
+ HDD_IPA_DP_LOG(VOS_TRACE_LEVEL_DEBUG,
"Forward packet to Tx (fw_desc=%d)", desc);
hdd_ipa->ipa_tx_forward++;
@@ -3065,7 +3068,7 @@ static void hdd_ipa_w2i_cb(void *priv, enum ipa_dp_evt_type evt,
if (hdd_ipa_uc_is_enabled(hdd_ipa)) {
session_id = (uint8_t)skb->cb[0];
iface_id = vdev_to_iface[session_id];
- HDD_IPA_LOG(VOS_TRACE_LEVEL_INFO_HIGH,
+ HDD_IPA_DP_LOG(VOS_TRACE_LEVEL_INFO_HIGH,
"IPA_RECEIVE: session_id=%u, iface_id=%u",
session_id, iface_id);
} else
@@ -3165,7 +3168,7 @@ static void hdd_ipa_nbuf_cb(adf_nbuf_t skb)
{
struct hdd_ipa_priv *hdd_ipa = ghdd_ipa;
- HDD_IPA_LOG(VOS_TRACE_LEVEL_DEBUG, "%lx", NBUF_OWNER_PRIV_DATA(skb));
+ HDD_IPA_DP_LOG(VOS_TRACE_LEVEL_DEBUG, "%lx", NBUF_OWNER_PRIV_DATA(skb));
ipa_free_skb((struct ipa_rx_data *) NBUF_OWNER_PRIV_DATA(skb));
hdd_ipa->stats.num_tx_comp_cnt++;
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index f262a5a188cc..c891412a9b5a 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -12922,6 +12922,7 @@ void hdd_wlan_exit(hdd_context_t *pHddCtx)
vos_timer_getCurrentState(&pHddCtx->bus_bw_timer))
{
vos_timer_stop(&pHddCtx->bus_bw_timer);
+ hdd_rst_tcp_delack(pHddCtx);
}
if (!VOS_IS_STATUS_SUCCESS(vos_timer_destroy(
@@ -13659,10 +13660,15 @@ void hdd_cnss_request_bus_bandwidth(hdd_context_t *pHddCtx,
/* fine-tuning parameters for RX Flows */
temp_rx = (rx_packets + pHddCtx->prev_rx) / 2;
pHddCtx->prev_rx = rx_packets;
- if (temp_rx > pHddCtx->cfg_ini->tcpDelackThresholdHigh)
- next_rx_level = WLAN_SVC_TP_HIGH;
- else
- next_rx_level = WLAN_SVC_TP_LOW;
+ if (temp_rx > pHddCtx->cfg_ini->tcpDelackThresholdHigh) {
+ if ((pHddCtx->cur_rx_level != WLAN_SVC_TP_HIGH) &&
+ (++pHddCtx->rx_high_ind_cnt == pHddCtx->cfg_ini->tcpDelackTimerCount)) {
+ next_rx_level = WLAN_SVC_TP_HIGH;
+ }
+ } else {
+ next_rx_level = WLAN_SVC_TP_LOW;
+ pHddCtx->rx_high_ind_cnt = 0;
+ }
pHddCtx->hdd_txrx_hist[pHddCtx->hdd_txrx_hist_idx].next_rx_level
= next_rx_level;
@@ -17384,6 +17390,7 @@ void hdd_stop_bus_bw_compute_timer(hdd_adapter_t *pAdapter)
if (can_stop == VOS_TRUE) {
vos_timer_stop(&pHddCtx->bus_bw_timer);
+ hdd_rst_tcp_delack(pHddCtx);
tlshim_reset_bundle_require();
}
}
diff --git a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c
index e7138c51e0ac..f86e99f5cf28 100644
--- a/CORE/HDD/src/wlan_hdd_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_tx_rx.c
@@ -1624,3 +1624,27 @@ void hdd_dhcp_pkt_trace_buf_update (struct sk_buff *skb, int is_transmission,
}
}
#endif
+#ifdef FEATURE_BUS_BANDWIDTH
+/**
+ * hdd_rst_tcp_delack() - Reset tcp delack value to original level
+ * @hdd_context_t : HDD context
+ *
+ * This is single function which is used for reseting TCP delack
+ * value to its original value.
+ *
+ * Return: None
+ */
+void hdd_rst_tcp_delack(hdd_context_t *hdd_ctx)
+{
+ enum cnss_bus_width_type next_level = CNSS_BUS_WIDTH_LOW;
+
+ hdd_ctx->rx_high_ind_cnt = 0;
+ wlan_hdd_send_svc_nlink_msg(hdd_ctx->radio_index, WLAN_SVC_WLAN_TP_IND,
+ &next_level, sizeof(next_level));
+}
+#else
+void hdd_rst_tcp_delack(hdd_context_t *hdd_ctx)
+{
+ return;
+}
+#endif /* FEATURE_BUS_BANDWIDTH */
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index c3288389604b..01d21a4d8805 100644
--- a/CORE/MAC/inc/qwlan_version.h
+++ b/CORE/MAC/inc/qwlan_version.h
@@ -42,9 +42,9 @@ BRIEF DESCRIPTION:
#define QWLAN_VERSION_MINOR 0
#define QWLAN_VERSION_PATCH 11
#define QWLAN_VERSION_EXTRA ""
-#define QWLAN_VERSION_BUILD 102
+#define QWLAN_VERSION_BUILD 104
-#define QWLAN_VERSIONSTR "4.0.11.102"
+#define QWLAN_VERSIONSTR "4.0.11.104"
#define AR6320_REV1_VERSION 0x5000000
diff --git a/CORE/MAC/src/pe/include/rrmGlobal.h b/CORE/MAC/src/pe/include/rrmGlobal.h
index c23f1e00a89e..7b6b08f7359d 100644
--- a/CORE/MAC/src/pe/include/rrmGlobal.h
+++ b/CORE/MAC/src/pe/include/rrmGlobal.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2012, 2014-2015 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2012, 2014-2016 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -226,6 +226,9 @@ typedef struct sRrmPEContext
#define RCPI_MAX_VALUE (220)
#define CALCULATE_RCPI(rssi) (((rssi) + 110) * 2)
+
+#define CAP_OPER_CHAN_MAX_DURATION_OFFSET 2
+#define CAP_NONOPER_CHAN_MAX_DURATION_OFFSET 5
/* Bit mask are defined as per Draft P802.11REVmc_D4.2 */
/**
diff --git a/CORE/MAC/src/pe/lim/limAIDmgmt.c b/CORE/MAC/src/pe/lim/limAIDmgmt.c
index 26d27159ca96..d26a23b07dd0 100644
--- a/CORE/MAC/src/pe/lim/limAIDmgmt.c
+++ b/CORE/MAC/src/pe/lim/limAIDmgmt.c
@@ -76,7 +76,7 @@ void
limInitPeerIdxpool(tpAniSirGlobal pMac,tpPESession pSessionEntry)
{
tANI_U8 i;
- tANI_U8 maxAssocSta = pMac->lim.gLimAssocStaLimit;
+ tANI_U8 maxAssocSta = pMac->lim.maxStation;
pSessionEntry->gpLimPeerIdxpool[0]=0;
@@ -92,7 +92,6 @@ limInitPeerIdxpool(tpAniSirGlobal pMac,tpPESession pSessionEntry)
#ifdef QCA_IBSS_SUPPORT
if (LIM_IS_IBSS_ROLE(pSessionEntry)) {
pSessionEntry->freePeerIdxHead=LIM_START_PEER_IDX;
- maxAssocSta = pMac->lim.gLimIbssStaLimit;
}
else
#endif
diff --git a/CORE/MAC/src/pe/lim/limP2P.c b/CORE/MAC/src/pe/lim/limP2P.c
index 3f124e8b3688..266c1b218205 100644
--- a/CORE/MAC/src/pe/lim/limP2P.c
+++ b/CORE/MAC/src/pe/lim/limP2P.c
@@ -225,7 +225,7 @@ tSirRetStatus limCreateSessionForRemainOnChn(tpAniSirGlobal pMac, tPESession **p
{
if((psessionEntry = peCreateSession(pMac,
pMac->lim.gpLimRemainOnChanReq->selfMacAddr,
- &sessionId, 1, eSIR_INFRA_AP_MODE)) == NULL)
+ &sessionId, pMac->lim.maxStation, eSIR_INFRA_AP_MODE)) == NULL)
{
limLog(pMac, LOGE, FL("Session Can not be created "));
/* send remain on chn failure */
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index b5d76046ba4b..d441a8e29531 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -157,72 +157,101 @@ __limBackgroundScanInitiate(tpAniSirGlobal pMac)
#endif // BACKGROUND_SCAN_ENABLED
-// determine if a fresh scan request must be issued or not
-/*
-* PE will do fresh scan, if all of the active sessions are in good state (Link Est or BSS Started)
-* If one of the sessions is not in one of the above states, then PE does not do fresh scan
-* If no session exists (scanning very first time), then PE will always do fresh scan if SME
-* asks it to do that.
-*/
-static tANI_U8
-__limFreshScanReqd(tpAniSirGlobal pMac, tANI_U8 returnFreshResults)
+/**
+ * __limFreshScanReqd() - determine if fresh scan request must be issued or not
+ * @mac_ctx - mac global context
+ * @return_fresh_results - fresh scan requested
+ *
+ * PE will do fresh scan, if all of the active sessions are in good state
+ * (Link Est or BSS Started). If one of the sessions is not in one of the these
+ * states, then PE does not do fresh scan. If no session exists (scanning very
+ * first time), then PE will always do fresh scan if SME asks it to do that.
+ */
+static uint8_t __limFreshScanReqd(tpAniSirGlobal mac_ctx,
+ uint8_t return_fresh_results)
{
+ int i;
+ uint8_t valid_state = true;
- tANI_U8 validState = TRUE;
- int i;
-
- limLog(pMac, LOG1, FL("gLimSmeState: %d, returnFreshResults 0x%x"),
- pMac->lim.gLimSmeState, returnFreshResults);
- if(pMac->lim.gLimSmeState != eLIM_SME_IDLE_STATE)
- {
- limLog(pMac, LOG1, FL("return FALSE"));
- return FALSE;
- }
- for(i =0; i < pMac->lim.maxBssId; i++)
- {
-
- if(pMac->lim.gpSession[i].valid == TRUE)
- {
- limLog(pMac, LOG1,
- FL("session %d, bsstype %d, limSystemRole %d, limSmeState %d"),
- i,
- pMac->lim.gpSession[i].bssType,
- pMac->lim.gpSession[i].limSystemRole,
- pMac->lim.gpSession[i].limSmeState);
- if(!( ( ( (pMac->lim.gpSession[i].bssType == eSIR_INFRASTRUCTURE_MODE) ||
- (pMac->lim.gpSession[i].limSystemRole == eLIM_BT_AMP_STA_ROLE))&&
- (pMac->lim.gpSession[i].limSmeState == eLIM_SME_LINK_EST_STATE) )||
-
- ( ( (pMac->lim.gpSession[i].bssType == eSIR_IBSS_MODE)||
- (pMac->lim.gpSession[i].limSystemRole == eLIM_BT_AMP_AP_ROLE)||
- (pMac->lim.gpSession[i].limSystemRole == eLIM_BT_AMP_STA_ROLE) )&&
- (pMac->lim.gpSession[i].limSmeState == eLIM_SME_NORMAL_STATE) )
- || ( ( ( (pMac->lim.gpSession[i].bssType == eSIR_INFRA_AP_MODE)
- && ( pMac->lim.gpSession[i].pePersona == VOS_P2P_GO_MODE) )
- || (pMac->lim.gpSession[i].limSystemRole == eLIM_AP_ROLE) )
- && (pMac->lim.gpSession[i].limSmeState == eLIM_SME_NORMAL_STATE) )
- ))
- {
- validState = FALSE;
- break;
- }
+ limLog(mac_ctx, LOG1, FL("gLimSmeState: %d, return_fresh_results 0x%x"),
+ mac_ctx->lim.gLimSmeState, return_fresh_results);
- }
- }
+ if (mac_ctx->lim.gLimSmeState != eLIM_SME_IDLE_STATE) {
+ limLog(mac_ctx, LOG1, FL("return false, global_sme_state: %d"),
+ mac_ctx->lim.gLimSmeState);
+ return false;
+ }
+ for (i = 0; i < mac_ctx->lim.maxBssId; i++) {
+ if (mac_ctx->lim.gpSession[i].valid == false)
+ continue;
+
+ limLog(mac_ctx, LOG1,
+ FL("session %d, bsstype %d, limSystemRole %d, limSmeState %d"),
+ i, mac_ctx->lim.gpSession[i].bssType,
+ mac_ctx->lim.gpSession[i].limSystemRole,
+ mac_ctx->lim.gpSession[i].limSmeState);
+
+ if (mac_ctx->lim.gpSession[i].bssType == eSIR_NDI_MODE)
+ continue;
+
+ if (mac_ctx->lim.gpSession[i].bssType ==
+ eSIR_INFRASTRUCTURE_MODE
+ && mac_ctx->lim.gpSession[i].limSmeState ==
+ eLIM_SME_LINK_EST_STATE)
+ continue;
+
+ if (mac_ctx->lim.gpSession[i].limSystemRole ==
+ eLIM_BT_AMP_STA_ROLE
+ && mac_ctx->lim.gpSession[i].limSmeState ==
+ eLIM_SME_LINK_EST_STATE)
+ continue;
+
+ if (mac_ctx->lim.gpSession[i].bssType == eSIR_IBSS_MODE
+ && mac_ctx->lim.gpSession[i].limSmeState ==
+ eLIM_SME_NORMAL_STATE)
+ continue;
+
+ if (mac_ctx->lim.gpSession[i].limSystemRole ==
+ eLIM_BT_AMP_AP_ROLE
+ && mac_ctx->lim.gpSession[i].limSmeState ==
+ eLIM_SME_NORMAL_STATE)
+ continue;
+
+ if (mac_ctx->lim.gpSession[i].limSystemRole ==
+ eLIM_BT_AMP_STA_ROLE
+ && mac_ctx->lim.gpSession[i].limSmeState ==
+ eLIM_SME_NORMAL_STATE)
+ continue;
+
+ if (mac_ctx->lim.gpSession[i].bssType == eSIR_INFRA_AP_MODE
+ && mac_ctx->lim.gpSession[i].pePersona ==
+ VOS_P2P_GO_MODE
+ && mac_ctx->lim.gpSession[i].limSmeState ==
+ eLIM_SME_NORMAL_STATE)
+ continue;
+
+ if (mac_ctx->lim.gpSession[i].limSystemRole == eLIM_AP_ROLE
+ && mac_ctx->lim.gpSession[i].limSmeState ==
+ eLIM_SME_NORMAL_STATE)
+ continue;
+
+ valid_state = false;
+ break;
+ }
- if((validState) &&
- (returnFreshResults & SIR_BG_SCAN_RETURN_FRESH_RESULTS)) {
- limLog(pMac, LOG1, FL("validState: %d, return TRUE"), validState);
- return TRUE;
- } else {
- limLog(pMac, LOG1, FL("validState: %d, return FALSE"), validState);
- return FALSE;
- }
+ if (valid_state && (return_fresh_results
+ & SIR_BG_SCAN_RETURN_FRESH_RESULTS)) {
+ limLog(mac_ctx, LOG1, FL("valid_state: %d, return true"),
+ valid_state);
+ return true;
+ } else {
+ limLog(mac_ctx, LOG1, FL("valid_state: %d, return false"),
+ valid_state);
+ return false;
+ }
}
-
-
/**
* __limIsSmeAssocCnfValid()
*
diff --git a/CORE/MAC/src/pe/rrm/rrmApi.c b/CORE/MAC/src/pe/rrm/rrmApi.c
index 3fb65c45c292..d42cedabbbed 100644
--- a/CORE/MAC/src/pe/rrm/rrmApi.c
+++ b/CORE/MAC/src/pe/rrm/rrmApi.c
@@ -1235,8 +1235,8 @@ rrmInitialize(tpAniSirGlobal pMac)
pRRMCaps->fine_time_meas_rpt = 1;
pRRMCaps->lci_capability = 1;
- pRRMCaps->operatingChanMax = 3;
- pRRMCaps->nonOperatingChanMax = 3;
+ pRRMCaps->operatingChanMax = 4;
+ pRRMCaps->nonOperatingChanMax = 4;
return eSIR_SUCCESS;
}
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index f7a684c970b1..b32eb7d8d83f 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -21145,8 +21145,8 @@ static void wma_wow_parse_data_pkt_buffer(uint8_t *data,
WMA_LOGD("wow_buf_pkt_len: %d", buf_len);
if (buf_len >= ADF_NBUF_TRAC_ETH_TYPE_OFFSET)
WMA_LOGE("Src_mac: " MAC_ADDRESS_STR " Dst_mac: " MAC_ADDRESS_STR,
- MAC_ADDR_ARRAY(data),
- MAC_ADDR_ARRAY(data + ADF_NBUF_SRC_MAC_OFFSET));
+ MAC_ADDR_ARRAY(data + ADF_NBUF_SRC_MAC_OFFSET),
+ MAC_ADDR_ARRAY(data));
else
goto end;
diff --git a/CORE/SME/src/sme_common/sme_Trace.c b/CORE/SME/src/sme_common/sme_Trace.c
index 5e95d56b3e50..33491753562b 100644
--- a/CORE/SME/src/sme_common/sme_Trace.c
+++ b/CORE/SME/src/sme_common/sme_Trace.c
@@ -214,28 +214,28 @@ static void smeTraceDump(tpAniSirGlobal pMac, tpvosTraceRecord pRecord,
{
switch (pRecord->code) {
case TRACE_CODE_SME_COMMAND:
- smsLog(pMac, LOGE, "%04d %012llu S%d %-14s %-30s(0x%x)",
+ smsLog(pMac, LOG1, "%04d %012llu S%d %-14s %-30s(0x%x)",
recIndex, pRecord->time, pRecord->session,
"SME COMMAND:",
smeTraceGetCommandString(pRecord->data),
pRecord->data);
break;
case TRACE_CODE_SME_TX_WDA_MSG:
- smsLog(pMac, LOGE, "%04d %012llu S%d %-14s %-30s(0x%x)",
+ smsLog(pMac, LOG1, "%04d %012llu S%d %-14s %-30s(0x%x)",
recIndex, pRecord->time, pRecord->session,
"TX WDA Msg:",
macTraceGetWdaMsgString((tANI_U16)pRecord->data),
pRecord->data);
break;
case TRACE_CODE_SME_RX_WDA_MSG:
- smsLog(pMac, LOGE, "%04d %012llu S%d %-14s %-30s(0x%x)",
+ smsLog(pMac, LOG1, "%04d %012llu S%d %-14s %-30s(0x%x)",
recIndex, pRecord->time, pRecord->session,
"RX WDA Msg:",
macTraceGetSmeMsgString((tANI_U16)pRecord->data),
pRecord->data);
break;
default:
- smsLog(pMac, LOGE, "%04d %012llu S%d %-14s %-30s(0x%x)",
+ smsLog(pMac, LOG1, "%04d %012llu S%d %-14s %-30s(0x%x)",
recIndex, pRecord->time, pRecord->session,
"RX HDD MSG:",
smeTraceGetRxMsgString(pRecord->code),