Browse Source

qcacld-3.0: Avoid adding duplicate qcn ie in directed probe req

If mac_ctx->roam.configParam.qcn_ie_support is enabled driver adds
qcn ie in directed probe req, even if its already present in the
additional scan IEs. Thus in probe request two qcn ie are present.

To fix this add qcn ie only if roam.configParam.qcn_ie_support is set
and qcn ie is not present in the additional scan IE.

Change-Id: I4c7ea32dc06e5c62b4043dbd3794348f8185fd9b
CRs-Fixed: 2152795
Abhishek Singh 7 years ago
parent
commit
67e02bdb0b

+ 3 - 0
core/mac/inc/sir_mac_prot_def.h

@@ -470,6 +470,9 @@
 #define SIR_MAC_CISCO_OUI "\x00\x40\x96"
 #define SIR_MAC_CISCO_OUI_SIZE 3
 
+#define SIR_MAC_QCN_OUI_TYPE   "\x8c\xfd\xf0\x01"
+#define SIR_MAC_QCN_OUI_TYPE_SIZE  4
+
 /* min size of wme oui header: oui(3) + type + subtype + version */
 #define SIR_MAC_OUI_WME_HDR_MIN       6
 

+ 7 - 3
core/mac/src/pe/lim/lim_send_management_frames.c

@@ -230,6 +230,7 @@ lim_send_probe_req_mgmt_frame(tpAniSirGlobal mac_ctx,
 	bool extracted_ext_cap_flag = false;
 	tDot11fIEExtCap extracted_ext_cap;
 	tSirRetStatus sir_status;
+	const uint8_t *qcn_ie = NULL;
 
 	/* The probe req should not send 11ac capabilieties if band is 2.4GHz,
 	 * unless enableVhtFor24GHz is enabled in INI. So if enableVhtFor24GHz
@@ -350,9 +351,6 @@ lim_send_probe_req_mgmt_frame(tpAniSirGlobal mac_ctx,
 		populate_dot11f_ext_cap(mac_ctx, is_vht_enabled, &pr.ExtCap,
 			pesession);
 
-	if (mac_ctx->roam.configParam.qcn_ie_support)
-		populate_dot11f_qcn_ie(&pr.QCN_IE);
-
 	if (IS_DOT11_MODE_HE(dot11mode) && NULL != pesession)
 		lim_update_session_he_capable(mac_ctx, pesession);
 
@@ -380,7 +378,13 @@ lim_send_probe_req_mgmt_frame(tpAniSirGlobal mac_ctx,
 			extracted_ext_cap_flag =
 				(extracted_ext_cap.num_bytes > 0);
 		}
+		qcn_ie = wlan_get_vendor_ie_ptr_from_oui(SIR_MAC_QCN_OUI_TYPE,
+				SIR_MAC_QCN_OUI_TYPE_SIZE,
+				additional_ie, addn_ielen);
 	}
+	/* Add qcn_ie only if qcn ie is not present in additional_ie */
+	if (mac_ctx->roam.configParam.qcn_ie_support && !qcn_ie)
+		populate_dot11f_qcn_ie(&pr.QCN_IE);
 
 	/*
 	 * Extcap IE now support variable length, merge Extcap IE from addn_ie