summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhinav Kumar <abhikuma@codeaurora.org>2018-03-23 16:46:06 +0530
committernshrivas <nshrivas@codeaurora.org>2018-03-26 18:13:56 -0700
commitb27b9e1f33fe6d85cdcb21b3aa8ca5248d8ab2bc (patch)
tree70c809de497af971e4c42ea023452e0cb56e516f
parent66e5f9cb22b53427b0519936518494d69ecd6104 (diff)
qcacld-3.0: Drop duplicate Beacon Report request
Currently, driver does not check for duplication of rrm request. If driver receives any duplicate rrm request, then driver sends pilot frame for second rrm request which is not acceptable. Add changes to drop all duplicate rrm requests to fix this. Change-Id: I44a67a4119ae55ac94f5c9ecdb01032f6fd39c7c CRs-Fixed: 2195990
-rw-r--r--core/mac/src/pe/include/rrm_global.h3
-rw-r--r--core/mac/src/pe/lim/lim_process_action_frame.c14
-rw-r--r--core/mac/src/pe/rrm/rrm_api.c1
3 files changed, 16 insertions, 2 deletions
diff --git a/core/mac/src/pe/include/rrm_global.h b/core/mac/src/pe/include/rrm_global.h
index d8afcfa50e7f..e963ca276ed8 100644
--- a/core/mac/src/pe/include/rrm_global.h
+++ b/core/mac/src/pe/include/rrm_global.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2012, 2014-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2012, 2014-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -217,6 +217,7 @@ typedef struct sRrmPEContext {
int8_t txMgmtPower;
/* Dialog token for the request initiated from station. */
uint8_t DialogToken;
+ uint16_t prev_rrm_report_seq_num;
tpRRMReq pCurrentReq;
} tRrmPEContext, *tpRrmPEContext;
diff --git a/core/mac/src/pe/lim/lim_process_action_frame.c b/core/mac/src/pe/lim/lim_process_action_frame.c
index d0cb44918a0e..67f9a877eff1 100644
--- a/core/mac/src/pe/lim/lim_process_action_frame.c
+++ b/core/mac/src/pe/lim/lim_process_action_frame.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -1295,6 +1295,7 @@ __lim_process_radio_measure_request(tpAniSirGlobal pMac, uint8_t *pRxPacketInfo,
tDot11fRadioMeasurementRequest *frm;
uint32_t frameLen, nStatus;
uint8_t *pBody;
+ uint16_t curr_seq_num;
pHdr = WMA_GET_RX_MAC_HEADER(pRxPacketInfo);
pBody = WMA_GET_RX_MPDU_DATA(pRxPacketInfo);
@@ -1304,6 +1305,17 @@ __lim_process_radio_measure_request(tpAniSirGlobal pMac, uint8_t *pRxPacketInfo,
return;
}
+ curr_seq_num = ((pHdr->seqControl.seqNumHi <<
+ HIGH_SEQ_NUM_OFFSET) |
+ pHdr->seqControl.seqNumLo);
+ if (curr_seq_num == pMac->rrm.rrmPEContext.prev_rrm_report_seq_num &&
+ pMac->rrm.rrmPEContext.pCurrentReq) {
+ pe_err("rrm report req frame, seq num: %d is already in progress, drop it",
+ curr_seq_num);
+ return;
+ }
+ /* Save seq no of currently processing rrm report req frame */
+ pMac->rrm.rrmPEContext.prev_rrm_report_seq_num = curr_seq_num;
lim_send_sme_mgmt_frame_ind(pMac, pHdr->fc.subType, (uint8_t *)pHdr,
frameLen + sizeof(tSirMacMgmtHdr), 0,
WMA_GET_RX_CH(pRxPacketInfo), psessionEntry,
diff --git a/core/mac/src/pe/rrm/rrm_api.c b/core/mac/src/pe/rrm/rrm_api.c
index fed9077b6532..6c351e8d1367 100644
--- a/core/mac/src/pe/rrm/rrm_api.c
+++ b/core/mac/src/pe/rrm/rrm_api.c
@@ -1253,6 +1253,7 @@ tSirRetStatus rrm_initialize(tpAniSirGlobal pMac)
pMac->rrm.rrmPEContext.DialogToken = 0;
pMac->rrm.rrmPEContext.rrmEnable = 0;
+ pMac->rrm.rrmPEContext.prev_rrm_report_seq_num = 0xFFFF;
qdf_mem_set(pRRMCaps, sizeof(tRRMCaps), 0);
pRRMCaps->LinkMeasurement = 1;