Browse Source

qcacmn: parse the 20MHz PSD in TBTT info of RNR

In the TBTT info of RNR, one byte is added for power
spectral density. Add logic to get the PSD limit.

Change-Id: I7ce44a762c47d0d0526157fcb41a80ad3ef3c08e
CRs-Fixed: 2731433
Paul Zhang 5 years ago
parent
commit
77c4c9ff7e

+ 9 - 1
umac/scan/dispatcher/inc/wlan_scan_public_structs.h

@@ -275,6 +275,7 @@ struct scan_mbssid_info {
  * @bssid: BSS MAC address
  * @short_ssid: short ssid
  * @bss_params: BSS parameters
+ * @psd_20mhz: 20MHz power spectral density
  */
 struct rnr_bss_info {
 	uint8_t neighbor_ap_tbtt_offset;
@@ -283,6 +284,7 @@ struct rnr_bss_info {
 	struct qdf_mac_addr bssid;
 	uint32_t short_ssid;
 	uint8_t bss_params;
+	uint8_t psd_20mhz;
 };
 
 /**
@@ -320,9 +322,13 @@ struct neighbor_ap_info_field {
  * @TBTT_NEIGHBOR_AP_S_SSID_BSS_PARAM: neighbor AP, short ssid and bss param
  * @TBTT_NEIGHBOR_AP_BSSID: neighbor AP and bssid
  * @TBTT_NEIGHBOR_AP_BSSID_BSS_PARAM: neighbor AP, bssid and bss param
+ * @TBTT_NEIGHBOR_AP_BSSID_BSS_PARAM_20MHZ_PSD: neighbor AP, bssid and bss
+ * param and 20MHz PSD
  * @TBTT_NEIGHBOR_AP_BSSSID_S_SSID: neighbor AP, bssid and short ssid
  * @TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM: neighbor AP, bssid, short ssid
  * and bss params
+ * @TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD: neighbor AP, bssid,
+ * short ssid, bss params and 20MHz PSD
  */
 enum tbtt_information_field {
 	TBTT_NEIGHBOR_AP_OFFSET_ONLY = 1,
@@ -331,8 +337,10 @@ enum tbtt_information_field {
 	TBTT_NEIGHBOR_AP_S_SSID_BSS_PARAM = 6,
 	TBTT_NEIGHBOR_AP_BSSID = 7,
 	TBTT_NEIGHBOR_AP_BSSID_BSS_PARAM = 8,
+	TBTT_NEIGHBOR_AP_BSSID_BSS_PARAM_20MHZ_PSD = 9,
 	TBTT_NEIGHBOR_AP_BSSSID_S_SSID = 11,
-	TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM = 12
+	TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM = 12,
+	TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD = 13
 };
 
 /**

+ 17 - 0
umac/scan/dispatcher/src/wlan_scan_utils_api.c

@@ -674,6 +674,14 @@ util_scan_update_rnr(struct rnr_bss_info *rnr,
 		rnr->bss_params = data[7];
 		break;
 
+	case TBTT_NEIGHBOR_AP_BSSID_BSS_PARAM_20MHZ_PSD:
+		rnr->channel_number = ap_info->channel_number;
+		rnr->operating_class = ap_info->operting_class;
+		qdf_mem_copy(&rnr->bssid, &data[1], QDF_MAC_ADDR_SIZE);
+		rnr->bss_params = data[7];
+		rnr->psd_20mhz = data[8];
+		break;
+
 	case TBTT_NEIGHBOR_AP_BSSSID_S_SSID:
 		rnr->channel_number = ap_info->channel_number;
 		rnr->operating_class = ap_info->operting_class;
@@ -689,6 +697,15 @@ util_scan_update_rnr(struct rnr_bss_info *rnr,
 		rnr->bss_params = data[11];
 		break;
 
+	case TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD:
+		rnr->channel_number = ap_info->channel_number;
+		rnr->operating_class = ap_info->operting_class;
+		qdf_mem_copy(&rnr->bssid, &data[1], QDF_MAC_ADDR_SIZE);
+		qdf_mem_copy(&rnr->short_ssid, &data[7], SHORT_SSID_LEN);
+		rnr->bss_params = data[11];
+		rnr->psd_20mhz = data[12];
+		break;
+
 	default:
 		scm_debug("Wrong fieldtype");
 	}