qcacld-3.0: Fix high latency during BTM roaming

While processing the WMA_ROAM_OFFLOAD_SYNCH_IND event, The
driver takes nearly 150 to 200 msec time to just write fatal,
error and info messages to the kmsg log buffer. Also to get
tx power supplicant runs another thread while roaming. These
cause more latency(300ms) to send WMA_ROAM_OFFLOAD_SYNCH_CNF
message to fw. To decrease roam latency, the driver should
write the only necessary error message to kmsg buffer.

The fix is to change irrelevant fatal, error and info message
type to debug add a check in __wlan_hdd_cfg80211_get_txpower
to reject the request to get Tx power while roaming in progress
otherwise driver will process this and will increase the roaming
latency.

Change-Id: I6c31637f21991b5b29c1e2dd2c2935ae7d4fc3d0
CRs-Fixed: 2251824
This commit is contained in:
Abhinav Kumar 2018-06-15 16:35:50 +05:30 • committed by nshrivas
commit 50d4dc7645
9 changed files with 14 additions and 9 deletions

View file

@ -731,7 +731,7 @@ void cds_copy_hlp_info(struct qdf_mac_addr *input_dst_mac,
uint8_t *output_hlp_data)
{
if (!input_hlp_data_len) {
cds_err("Input HLP data len zero\n");
cds_debug("Input HLP data len zero\n");
return;
}

View file

@ -3799,7 +3799,7 @@ int ol_txrx_peer_release_ref(ol_txrx_peer_handle peer,
&peer->access_list[debug_id]);
qdf_spin_unlock_bh(&pdev->peer_ref_mutex);
if (!ref_silent)
ol_txrx_info_high("[%d][%d]: ref delete peer %pK ref_cnt -> %d",
ol_txrx_dbg("[%d][%d]: ref delete peer %pK ref_cnt -> %d",
debug_id,
access_list,
peer, rc);
@ -3936,7 +3936,7 @@ static void ol_txrx_peer_detach(void *ppeer, uint32_t bitmap)
/* debug print to dump rx reorder state */
/* htt_rx_reorder_log_print(vdev->pdev->htt_pdev); */
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO,
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_DEBUG,
"%s:peer %pK (%02x:%02x:%02x:%02x:%02x:%02x)",
__func__, peer,
peer->mac_addr.raw[0], peer->mac_addr.raw[1],

View file

@ -1347,7 +1347,7 @@ static void hdd_send_association_event(struct net_device *dev,
ucfg_p2p_status_connect(adapter->hdd_vdev);
pr_info("wlan: " MAC_ADDRESS_STR " connected to "
hdd_info("wlan: " MAC_ADDRESS_STR " connected to "
MAC_ADDRESS_STR "\n",
MAC_ADDR_ARRAY(adapter->mac_addr.bytes),
MAC_ADDR_ARRAY(wrqu.ap_addr.sa_data));

View file

@ -12707,7 +12707,7 @@ static int __wlan_hdd_cfg80211_set_nud_stats(struct wiphy *wiphy,
}
}
hdd_info("STATS_SET_START Received flag %d!", arp_stats_params.flag);
hdd_debug("STATS_SET_START Received flag %d!", arp_stats_params.flag);
arp_stats_params.vdev_id = adapter->session_id;

View file

@ -2119,6 +2119,11 @@ static int __wlan_hdd_cfg80211_get_txpower(struct wiphy *wiphy,
return -EINVAL;
}
if (sta_ctx->hdd_reassoc_scenario) {
hdd_debug("Roaming is in progress, rej this req");
return -EINVAL;
}
mutex_lock(&hdd_ctx->iface_change_lock);
if (hdd_ctx->driver_status != DRIVER_MODULES_ENABLED) {
mutex_unlock(&hdd_ctx->iface_change_lock);

View file

@ -527,7 +527,7 @@ lim_process_assoc_rsp_frame(tpAniSirGlobal mac_ctx,
return;
}
pe_info("received Re/Assoc: %d resp on sessionid: %d systemrole: %d"
pe_debug("received Re/Assoc: %d resp on sessionid: %d systemrole: %d"
" and mlmstate: %d RSSI: %d from "MAC_ADDRESS_STR, subtype,
session_entry->peSessionId, GET_LIM_SYSTEM_ROLE(session_entry),
session_entry->limMlmState,

View file

@ -4297,7 +4297,7 @@ QDF_STATUS csr_roam_call_callback(tpAniSirGlobal pMac, uint32_t sessionId,
if (eCSR_ROAM_ASSOCIATION_COMPLETION == u1 &&
eCSR_ROAM_RESULT_ASSOCIATED == u2 && roam_info) {
sme_info("Assoc complete result: %d status: %d reason: %d",
sme_debug("Assoc complete result: %d status: %d reason: %d",
u2, roam_info->statusCode, roam_info->reasonCode);
beacon_ies = qdf_mem_malloc(sizeof(tDot11fBeaconIEs));
if ((NULL != beacon_ies) && (NULL != roam_info->pBssDesc)) {

View file

@ -1743,7 +1743,7 @@ QDF_STATUS wma_create_peer(tp_wma_handle wma, struct cdp_pdev *pdev,
wma->interfaces[vdev_id].peer_count);
if (roam_synch_in_progress) {
WMA_LOGI("%s: LFR3: Created peer %pK with peer_addr %pM vdev_id %d, peer_count - %d",
WMA_LOGD("%s: LFR3: Created peer %pK with peer_addr %pM vdev_id %d, peer_count - %d",
__func__, peer, peer_addr, vdev_id,
wma->interfaces[vdev_id].peer_count);
return QDF_STATUS_SUCCESS;

View file

@ -2297,7 +2297,7 @@ int wma_roam_synch_event_handler(void *handle, uint8_t *event,
__func__);
goto cleanup_label;
}
WMA_LOGI("LFR3: Received WMA_ROAM_OFFLOAD_SYNCH_IND");
WMA_LOGD("LFR3: Received WMA_ROAM_OFFLOAD_SYNCH_IND");
/*
* All below length fields are unsigned and hence positive numbers.