|
@@ -5884,51 +5884,35 @@ uint16_t sme_get_roam_scan_home_away_time(mac_handle_t mac_handle)
|
|
|
return mac->mlme_cfg->lfr.roam_scan_home_away_time;
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * sme_update_roam_rssi_diff() -
|
|
|
- * Update RoamRssiDiff
|
|
|
- * This function is called through dynamic setConfig callback function
|
|
|
- * to configure RoamRssiDiff
|
|
|
- * Usage: adb shell iwpriv wlan0 setConfig RoamRssiDiff=[0 .. 125]
|
|
|
- *
|
|
|
- * mac_handle: Opaque handle to the global MAC context
|
|
|
- * sessionId - Session Identifier
|
|
|
- * RoamRssiDiff - minimum rssi difference between potential
|
|
|
- * candidate and current AP.
|
|
|
- * Return Success or failure
|
|
|
- */
|
|
|
-
|
|
|
-QDF_STATUS sme_update_roam_rssi_diff(mac_handle_t mac_handle, uint8_t sessionId,
|
|
|
- uint8_t RoamRssiDiff)
|
|
|
+QDF_STATUS sme_update_roam_rssi_diff(mac_handle_t mac_handle, uint8_t vdev_id,
|
|
|
+ uint8_t roam_rssi_diff)
|
|
|
{
|
|
|
struct mac_context *mac = MAC_CONTEXT(mac_handle);
|
|
|
- QDF_STATUS status = QDF_STATUS_SUCCESS;
|
|
|
+ QDF_STATUS status;
|
|
|
+ tCsrNeighborRoamControlInfo *neighbor_roam_info;
|
|
|
|
|
|
- if (sessionId >= WLAN_MAX_VDEVS) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
|
|
|
- FL("Invalid sme session id: %d"), sessionId);
|
|
|
+ if (vdev_id >= WLAN_MAX_VDEVS) {
|
|
|
+ sme_err("Invalid sme vdev id: %d", vdev_id);
|
|
|
return QDF_STATUS_E_INVAL;
|
|
|
}
|
|
|
|
|
|
status = sme_acquire_global_lock(&mac->sme);
|
|
|
- if (QDF_IS_STATUS_SUCCESS(status)) {
|
|
|
- QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
|
|
|
- "LFR runtime successfully set roam rssi diff to %d - old value is %d - roam state is %s",
|
|
|
- RoamRssiDiff,
|
|
|
- mac->mlme_cfg->lfr.roam_rssi_diff,
|
|
|
- mac_trace_get_neighbour_roam_state(mac->roam.
|
|
|
- neighborRoamInfo
|
|
|
- [sessionId].
|
|
|
- neighborRoamState));
|
|
|
- mac->mlme_cfg->lfr.roam_rssi_diff = RoamRssiDiff;
|
|
|
+ if (QDF_IS_STATUS_ERROR(status))
|
|
|
+ return status;
|
|
|
+ neighbor_roam_info = &mac->roam.neighborRoamInfo[vdev_id];
|
|
|
+ sme_debug("LFR runtime successfully set roam rssi diff to %d - old value is %d - roam state is %s",
|
|
|
+ roam_rssi_diff,
|
|
|
+ neighbor_roam_info->cfgParams.roam_rssi_diff,
|
|
|
+ mac_trace_get_neighbour_roam_state(
|
|
|
+ neighbor_roam_info->neighborRoamState));
|
|
|
|
|
|
- if (mac->mlme_cfg->lfr.roam_scan_offload_enabled)
|
|
|
- csr_roam_offload_scan(mac, sessionId,
|
|
|
- ROAM_SCAN_OFFLOAD_UPDATE_CFG,
|
|
|
- REASON_RSSI_DIFF_CHANGED);
|
|
|
+ neighbor_roam_info->cfgParams.roam_rssi_diff = roam_rssi_diff;
|
|
|
+ if (mac->mlme_cfg->lfr.roam_scan_offload_enabled)
|
|
|
+ csr_roam_offload_scan(mac, vdev_id,
|
|
|
+ ROAM_SCAN_OFFLOAD_UPDATE_CFG,
|
|
|
+ REASON_RSSI_DIFF_CHANGED);
|
|
|
|
|
|
- sme_release_global_lock(&mac->sme);
|
|
|
- }
|
|
|
+ sme_release_global_lock(&mac->sme);
|
|
|
return status;
|
|
|
}
|
|
|
|
|
@@ -7300,18 +7284,25 @@ uint16_t sme_get_neighbor_scan_period(mac_handle_t mac_handle,
|
|
|
neighborScanPeriod;
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * sme_get_roam_rssi_diff() - get Roam rssi diff
|
|
|
- * This is a synchronous call
|
|
|
- *
|
|
|
- * mac_handle - The handle returned by mac_open.
|
|
|
- * Return uint16_t - Rssi diff value
|
|
|
- */
|
|
|
-uint8_t sme_get_roam_rssi_diff(mac_handle_t mac_handle)
|
|
|
+QDF_STATUS sme_get_roam_rssi_diff(mac_handle_t mac_handle, uint8_t vdev_id,
|
|
|
+ uint8_t *rssi_diff)
|
|
|
{
|
|
|
struct mac_context *mac = MAC_CONTEXT(mac_handle);
|
|
|
+ tCsrNeighborRoamControlInfo *neighbor_roam_info;
|
|
|
+ QDF_STATUS status;
|
|
|
|
|
|
- return mac->mlme_cfg->lfr.roam_rssi_diff;
|
|
|
+ if (vdev_id >= WLAN_MAX_VDEVS) {
|
|
|
+ sme_err("Invalid vdev_id: %d", vdev_id);
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+ }
|
|
|
+ status = sme_acquire_global_lock(&mac->sme);
|
|
|
+ if (QDF_IS_STATUS_ERROR(status))
|
|
|
+ return status;
|
|
|
+ neighbor_roam_info = &mac->roam.neighborRoamInfo[vdev_id];
|
|
|
+ *rssi_diff = neighbor_roam_info->cfgParams.roam_rssi_diff;
|
|
|
+ sme_release_global_lock(&mac->sme);
|
|
|
+
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
void sme_dump_freq_list(tCsrChannelInfo *chan_info)
|