Browse Source

qcacld-3.0: Send probe response only on probe request channel

Currently lim_process_probe_req_frame_multiple_bss sends probe
response for all AP sessions. If probe request is received on 2g
and 2 AP sessions are present then probe response will be sent
for both AP's operating frequencies which is not desired and
can cause delay to send probe response on required frequency.

Fix is to check probe request frequency and vdev operating freq
if both frequencies are same then only send probe response.

Change-Id: I8df0b0e78a5f9a586567dbe4b1d496f6cee04ff8
CRs-Fixed: 3042791
sheenam monga 3 years ago
parent
commit
cdb30cbe71
1 changed files with 14 additions and 0 deletions
  1. 14 0
      core/mac/src/pe/lim/lim_process_probe_req_frame.c

+ 14 - 0
core/mac/src/pe/lim/lim_process_probe_req_frame.c

@@ -481,6 +481,8 @@ lim_process_probe_req_frame_multiple_bss(struct mac_context *mac_ctx,
 			uint8_t *buf_descr, struct pe_session *session)
 {
 	uint8_t i;
+	struct wlan_channel *chan;
+	uint16_t probe_req_freq = WMA_GET_RX_FREQ(buf_descr);
 
 	if (session) {
 		if (LIM_IS_AP_ROLE(session)) {
@@ -495,6 +497,18 @@ lim_process_probe_req_frame_multiple_bss(struct mac_context *mac_ctx,
 		session = pe_find_session_by_session_id(mac_ctx, i);
 		if (!session)
 			continue;
+		chan = wlan_vdev_get_active_channel(session->vdev);
+		/**
+		 * For GO present on 5G/6G/2G band channel and if probe req
+		 * is received for p2p listen on the listen channel then no
+		 * need to send probe resp on GO operating channel
+		 **/
+		if (!chan || chan->ch_freq != probe_req_freq) {
+			pe_debug("do not send probe resp to requested probe freq %d",
+				 probe_req_freq);
+			continue;
+		}
+
 		if (LIM_IS_AP_ROLE(session))
 			lim_indicate_probe_req_to_hdd(mac_ctx,
 					buf_descr, session);