wlan: Roam if RSSI(candidate) > RSSI(curr AP) by gImmediateRoamRssiDiff.

If the potential roam candidate(s) found after the scan are much better
than the current AP, then there is no need to register for reassoc
threshold and wait until the notification is received to trigger the
roam. Since this duration is non-deterministic, the results/RSSI values
obtained from the scan (which are used to sort the candidates) might be
outdated. This could lead to roaming to a bad AP. This problem is being
fixed as follows:

Add a new configuration parameter in the INI file, namely,
gImmediateRoamRssiDiff. By default, this is set to 0. It can be
configured to a value in the range [0 .. 125] by issuing the following
command:
adb shell iwpriv wlan0 setConfig gImmediateRoamRssiDiff=<value>

Following a scan and if potential roam candidate(s) are found,
then determine whether to register for reassoc threshold or roam
immediately based on the above configuration parameter. If the RSSI of
any available candidate is better than the currently associated AP by at
least gImmediateRoamRssiDiff, then being to roam immediately (without
registering for reassoc threshold).

Fixed CRs: 427062

Change-Id: I56a86c039d680a635b38ee5d38c47f6451841a57
diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h
index aa37c14..5dd61ff 100644
--- a/CORE/SME/inc/sme_Api.h
+++ b/CORE/SME/inc/sme_Api.h
@@ -2197,6 +2197,20 @@
     -------------------------------------------------------------------------*/
 
 eHalStatus sme_UpdateRoamPrefer5GHz(tHalHandle hHal, v_BOOL_t nRoamPrefer5GHz);
+
+/* ---------------------------------------------------------------------------
+    \fn sme_UpdateImmediateRoamRssiDiff
+    \brief  Update nImmediateRoamRssiDiff
+            This function is called through dynamic setConfig callback function
+            to configure nImmediateRoamRssiDiff
+            Usage: adb shell iwpriv wlan0 setConfig gImmediateRoamRssiDiff=[0 .. 125]
+    \param  hHal - HAL handle for device
+    \param  nImmediateRoamRssiDiff - minimum rssi difference between potential 
+            candidate and current AP.
+    \- return Success or failure
+    -------------------------------------------------------------------------*/
+
+eHalStatus sme_UpdateImmediateRoamRssiDiff(tHalHandle hHal, v_U8_t nImmediateRoamRssiDiff);
 #endif
 
 /* ---------------------------------------------------------------------------