浏览代码

qcacld-3.0: Allow ADDROAMSCANFREQUENCIES irrespective of roam scan control

Based on the new NCHO requirement, allow ADDROAMSCANFREQUENCIES to add
roam scan frequencies irrespective of the roam scan control value.

Change-Id: I5742f6d590e3ec51bfb294610ede05b1935a4790
CRs-Fixed: 3046763
Pragaspathi Thilagaraj 3 年之前
父节点
当前提交
e18138c7fa
共有 2 个文件被更改,包括 23 次插入9 次删除
  1. 0 5
      components/umac/mlme/connection_mgr/dispatcher/src/wlan_cm_roam_api.c
  2. 23 4
      core/sme/src/common/sme_api.c

+ 0 - 5
components/umac/mlme/connection_mgr/dispatcher/src/wlan_cm_roam_api.c

@@ -1284,11 +1284,6 @@ wlan_cm_roam_cfg_set_value(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
 					   REASON_ROAM_CONTROL_CONFIG_ENABLED);
 		break;
 	case ROAM_PREFERRED_CHAN:
-		if (dst_cfg->specific_chan_info.num_chan) {
-			mlme_err("Specific channel list is already configured");
-			status = QDF_STATUS_E_INVAL;
-			break;
-		}
 		status = cm_update_roam_scan_channel_list(psoc, vdev, rso_cfg,
 					vdev_id, &dst_cfg->pref_chan_info,
 					src_config->chan_info.freq_list,

+ 23 - 4
core/sme/src/common/sme_api.c

@@ -7114,18 +7114,37 @@ sme_update_roam_scan_freq_list(mac_handle_t mac_handle, uint8_t vdev_id,
 		return QDF_STATUS_E_INVAL;
 	}
 
+	/*
+	 * NCHO Frequency configurations:
+	 * If ADDROAMSCANFREQUENCIES command is given, then freq_list_type is
+	 * QCA_PREFERRED_SCAN_FREQ_LIST.
+	 * If SETROAMSCANFREQUENCIES command is given, then freq_list_type is
+	 * QCA_SPECIFIC_SCAN_FREQ_LIST.
+	 *
+	 * If new channels are configured with type as STATIC(specific freq
+	 * list):
+	 * - FW clears both static & dynamic list.
+	 * - FW adds new channels to static & dynamic lists(both list contains
+	 *   only new channels)
+	 *
+	 * If Host configures new channels with type as DYNAMIC(preferred freq
+	 * list):
+	 * - FW clears the static list and adds new channels(Static list
+	 *   contains only new channels)
+	 * - FW will not clear dynamic list. New channels will be
+	 *   appended(Dynamic list contains old+new channels)
+	 */
+
 	src_config.chan_info.freq_list = freq_list;
 	src_config.chan_info.num_chan = num_chan;
-	if (freq_list_type == QCA_PREFERRED_SCAN_FREQ_LIST) {
-		sme_set_roam_scan_control(mac_handle, vdev_id, false);
+	if (freq_list_type == QCA_PREFERRED_SCAN_FREQ_LIST)
 		return wlan_cm_roam_cfg_set_value(mac->psoc, vdev_id,
 						  ROAM_PREFERRED_CHAN,
 						  &src_config);
-	} else {
+	else
 		return wlan_cm_roam_cfg_set_value(mac->psoc, vdev_id,
 						  ROAM_SPECIFIC_CHAN,
 						  &src_config);
-	}
 }
 
 /**