Browse Source

qcacmn: Bypass QBSS IE length check

Some old ap's QBSS IE length is 4Bytes, in latest 802.11e
spec, the expected length is 5Bytes.

If stop parsing beacon&probe with 4Bytes QBSS IE, DUT can't
scan and connect with AP, so change it to bypass QBSS IE
if AP uses the old format.

Change-Id: Ib6727f5f77c5e5543e862277e1d2d35273f62d59
CRs-Fixed: 2257707
Jingxiang Ge 6 years ago
parent
commit
c5f0bd188c
1 changed files with 9 additions and 2 deletions
  1. 9 2
      umac/scan/dispatcher/src/wlan_scan_utils_api.c

+ 9 - 2
umac/scan/dispatcher/src/wlan_scan_utils_api.c

@@ -524,8 +524,15 @@ util_scan_populate_bcn_ie_list(struct scan_cache_entry *scan_params)
 			break;
 		case WLAN_ELEMID_QBSS_LOAD:
 			if (ie->ie_len != sizeof(struct qbss_load_ie) -
-					  sizeof(struct ie_header))
-				return QDF_STATUS_E_INVAL;
+					  sizeof(struct ie_header)) {
+				/*
+				 * Expected QBSS IE length is 5Bytes; For some
+				 * old cisco AP, QBSS IE length is 4Bytes, which
+				 * doesn't match with latest spec, So ignore
+				 * QBSS IE in such case.
+				 */
+				break;
+			}
 			scan_params->ie_list.qbssload = (uint8_t *)ie;
 			break;
 		case WLAN_ELEMID_CHANSWITCHANN: