wlan: While fast roaming prefer 5G Access Points over 2.4G

On top of Roaming, add a new small feature to prefer 5G Access points
over 2.4 G.
because 5G is clean spectrum, more channels
1. Preferring 5G over 2.4G should be configurable dynamically via cfg
ini item
2. We prefer 5G over 2.4G, only if both the Access points RSSI falls in
the same category gap.
For example, 11a AP Rssi 48 and 11b AP Rssi 46..we prefer 11a AP

Change-Id: If0583bb8420e6b6cd93c53b2912ac5167230f8ee
CR-Fixed: 425810
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index e8014ca..26ed4d8 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -54,6 +54,10 @@
 #include <pmcApi.h>
 #include <wlan_hdd_misc.h>
 
+static void cbNotifySetRoamPrefer5GHz(hdd_context_t *pHddCtx, unsigned long NotifyId)
+{
+    sme_UpdateRoamPrefer5GHz((tHalHandle)(pHddCtx->hHal), pHddCtx->cfg_ini->nRoamPrefer5GHz);
+}
 
 REG_TABLE_ENTRY g_registry_table[] =
 {
@@ -1575,6 +1579,16 @@
                        CFG_LINK_SPEED_RSSI_LOW_MAX,
                        NULL, 0 ),
 
+#if  defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
+ REG_DYNAMIC_VARIABLE( CFG_ROAM_PREFER_5GHZ, WLAN_PARAM_Integer,
+                       hdd_config_t, nRoamPrefer5GHz,
+                       VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                       CFG_ROAM_PREFER_5GHZ_DEFAULT,
+                       CFG_ROAM_PREFER_5GHZ_MIN,
+                       CFG_ROAM_PREFER_5GHZ_MAX,
+                       cbNotifySetRoamPrefer5GHz, 0 ),
+#endif
+
 #ifdef WLAN_FEATURE_P2P
  REG_VARIABLE( CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_NAME, WLAN_PARAM_Integer,
               hdd_config_t, isP2pDeviceAddrAdministrated,
@@ -3215,6 +3229,9 @@
    smeConfig.csrConfig.fEnableBypass11d          = pConfig->enableBypass11d;
    smeConfig.csrConfig.fEnableDFSChnlScan        = pConfig->enableDFSChnlScan;
    smeConfig.csrConfig.fIgnore_chan165           = pConfig->ignore_chan165;
+#if  defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
+   smeConfig.csrConfig.nRoamPrefer5GHz           = pConfig->nRoamPrefer5GHz;
+#endif
    smeConfig.csrConfig.fFirstScanOnly2GChnl      = pConfig->enableFirstScan2GOnly;
 
    //FIXME 11d config is hardcoded