소스 검색

qcacld-3.0: Fix CSA handling to the same channel

Currently CSA event is ignored if the new channel is same as
current channel and there is no check for the BW comparison.
CSA can be done to the same channel with different BW. Allow the
CSA processing with same channel if the CSA has the different BW

Change-Id: Ib12c86dccf1c745dfa66c9e712d283af2df7809e
CRs-Fixed: 1102539
Kiran Kumar Lokere 8 년 전
부모
커밋
75d636fe15
2개의 변경된 파일7개의 추가작업 그리고 2개의 파일을 삭제
  1. 6 0
      core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
  2. 1 2
      core/wma/src/wma_features.c

+ 6 - 0
core/mac/src/pe/lim/lim_send_sme_rsp_messages.c

@@ -2314,6 +2314,12 @@ void lim_handle_csa_offload_msg(tpAniSirGlobal mac_ctx,
 	}
 	pe_debug("new ch width: %d space: %d",
 			session_entry->gLimChannelSwitch.ch_width, chan_space);
+	if ((session_entry->currentOperChannel == csa_params->channel) &&
+		(session_entry->ch_width ==
+		 session_entry->gLimChannelSwitch.ch_width)) {
+		pe_debug("Ignore CSA, no change in ch and bw");
+		goto err;
+	}
 
 	lim_prepare_for11h_channel_switch(mac_ctx, session_entry);
 	csa_offload_ind = qdf_mem_malloc(sizeof(tSmeCsaOffloadInd));

+ 1 - 2
core/wma/src/wma_features.c

@@ -1306,8 +1306,7 @@ int wma_csa_offload_handler(void *handle, uint8_t *event, uint32_t len)
 	 * basic sanity check: requested channel should not be 0
 	 * and equal to home channel
 	 */
-	if ((0 == csa_offload_event->channel) ||
-	    (cur_chan == csa_offload_event->channel)) {
+	if (0 == csa_offload_event->channel) {
 		WMA_LOGE("CSA Event with channel %d. Ignore !!",
 			 csa_offload_event->channel);
 		qdf_mem_free(csa_offload_event);