summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManishekar Chandrasekaran <cmshekar@codeaurora.org>2016-08-31 12:44:05 +0530
committerqcabuildsw <qcabuildsw@localhost>2016-09-02 17:25:11 -0700
commit11ecd55d23dbe866a0f781b16e3b9ebc0bbca69f (patch)
treecf6255940dca65ef77c7363eeb88b7b3fd522770
parent1015f04c1de0d96cda795d7aa1f6c921a8d3fcea (diff)
qcacld-3.0: Check for channel state before blocking the transmissions
Ensure that the channel state is checked to see if it is a DFS channel before stopping the transmission on the interface. Currently, on radar detection, transmission is getting stopped for all the SAP/P2P-GO interfaces. This affects SAP+SAP case where one SAP is on a DFS channel and the other SAP is on a non-DFS channel. On radar detection, the transmission is getting stopped for both the SAP interfaces. But, the transmission should be stopped only for the interface that is operating on DFS channel. Fix the same by checking the channel state before stopping the transmissions. Change-Id: I564980534bc0d943db8da300439e1d072715f462 CRs-Fixed: 1061559
-rw-r--r--core/hdd/src/wlan_hdd_main.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c
index 180c8ad9de2a..db8d25fc9206 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -1487,6 +1487,7 @@ bool hdd_dfs_indicate_radar(void *context, void *param)
hdd_adapter_list_node_t *adapterNode = NULL, *pNext = NULL;
hdd_adapter_t *adapter;
QDF_STATUS status;
+ hdd_ap_ctx_t *ap_ctx;
if (!hdd_ctx || !hdd_radar_event ||
hdd_ctx->config->disableDFSChSwitch)
@@ -1504,10 +1505,15 @@ bool hdd_dfs_indicate_radar(void *context, void *param)
status = hdd_get_front_adapter(hdd_ctx, &adapterNode);
while (NULL != adapterNode && QDF_STATUS_SUCCESS == status) {
adapter = adapterNode->pAdapter;
- if (QDF_SAP_MODE == adapter->device_mode ||
- QDF_P2P_GO_MODE == adapter->device_mode) {
+ ap_ctx = WLAN_HDD_GET_AP_CTX_PTR(adapter);
+ if ((QDF_SAP_MODE == adapter->device_mode ||
+ QDF_P2P_GO_MODE == adapter->device_mode) &&
+ (CHANNEL_STATE_DFS ==
+ cds_get_channel_state(ap_ctx->operatingChannel))) {
WLAN_HDD_GET_AP_CTX_PTR(adapter)->
dfs_cac_block_tx = true;
+ hdd_info("tx blocked for session:%d",
+ adapter->sessionId);
}
status = hdd_get_next_adapter(hdd_ctx,