瀏覽代碼

qcacld-3.0: Configure full scan period from vendor cmd to firmware

Userspace can update the full scan period through the roam subcmd
QCA_WLAN_VENDOR_ROAMING_SUBCMD_CONTROL_SET and the attribute
QCA_ATTR_ROAM_CONTROL_FULL_SCAN_PERIOD. Send the same to firmware
as part of roam scan offload command

Change-Id: I7c1046763d693faa3340b655848d3306ef92e06c
CRs-Fixed: 2508775
Srinivas Dasari 5 年之前
父節點
當前提交
89c959c42c

+ 3 - 0
mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -1422,6 +1422,8 @@ struct bss_load_trigger {
  * @roam_scan_period_after_inactivity: Roam scan period after device was in
  * inactive state
  * @fw_akm_bitmap:                  Supported Akm suites of firmware
+ * @roam_full_scan_period: Idle period in seconds between two successive
+ * full channel roam scans
  */
 struct wlan_mlme_lfr_cfg {
 	bool mawc_roam_enabled;
@@ -1524,6 +1526,7 @@ struct wlan_mlme_lfr_cfg {
 	uint32_t roam_inactive_data_packet_count;
 	uint32_t roam_scan_period_after_inactivity;
 	uint32_t fw_akm_bitmap;
+	uint32_t roam_full_scan_period;
 };
 
 /**

+ 9 - 0
mlme/dispatcher/inc/wlan_mlme_ucfg_api.h

@@ -3869,4 +3869,13 @@ ucfg_mlme_get_peer_phymode(struct wlan_objmgr_psoc *psoc, uint8_t *mac,
 {
 	return mlme_get_peer_phymode(psoc, mac, peer_phymode);
 }
+
+/**
+ * ucfg_mlme_validate_full_roam_scan_period() - Validate full roam scan period
+ * @full_roam_scan_period: Idle period in seconds between two successive
+ * full channel roam scans
+ *
+ * Return: True if full_roam_scan_period is in expected range, false otherwise.
+ */
+bool ucfg_mlme_validate_full_roam_scan_period(uint32_t full_roam_scan_period);
 #endif /* _WLAN_MLME_UCFG_API_H_ */

+ 16 - 0
mlme/dispatcher/src/wlan_mlme_ucfg_api.c

@@ -1666,3 +1666,19 @@ ucfg_mlme_set_channel_bonding_5ghz(struct wlan_objmgr_psoc *psoc,
 	return QDF_STATUS_SUCCESS;
 }
 
+bool ucfg_mlme_validate_full_roam_scan_period(uint32_t full_roam_scan_period)
+{
+	bool is_valid = true;
+	uint32_t min, max;
+
+	if (!cfg_in_range(CFG_LFR_FULL_ROAM_SCAN_REFRESH_PERIOD,
+			  full_roam_scan_period)) {
+		min = (cfg_min(CFG_LFR_FULL_ROAM_SCAN_REFRESH_PERIOD));
+		max = (cfg_max(CFG_LFR_FULL_ROAM_SCAN_REFRESH_PERIOD));
+		mlme_legacy_err("Full roam scan period value %d is out of range (Min: %d Max: %d)",
+				full_roam_scan_period, min, max);
+		is_valid = false;
+	}
+
+	return is_valid;
+}