wlan: modifying the CL 652125 related to HS2.0 as per review comments

DUT fails to send re-assoc

Change-Id: Ibff711828f4af4143d958b0124bfdeaa1268cfc9
CR-Fixed: 407823
diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c
index 2d4fdfa..f359831 100644
--- a/CORE/HDD/src/wlan_hdd_wext.c
+++ b/CORE/HDD/src/wlan_hdd_wext.c
@@ -198,6 +198,7 @@
 #define WE_DISABLE_AMP       5
 #define WE_ENABLE_DXE_STALL_DETECT 6
 #define WE_DISPLAY_DXE_SNAP_SHOT   7
+#define WE_SET_REASSOC_TRIGGER     8
 
 /* Private ioctls and their sub-ioctls */
 #define WLAN_PRIV_SET_VAR_INT_GET_NONE   (SIOCIWFIRSTPRIV + 7)
@@ -260,7 +261,6 @@
 #define WLAN_PRIV_SET_MCBC_FILTER    (SIOCIWFIRSTPRIV + 26)
 #define WLAN_PRIV_CLEAR_MCBC_FILTER  (SIOCIWFIRSTPRIV + 27)
 /* Private ioctl to trigger reassociation */
-#define WLAN_SET_REASSOC_TRIGGER     (SIOCIWFIRSTPRIV + 28)
 
 #define WLAN_SET_POWER_PARAMS        (SIOCIWFIRSTPRIV + 29)
 #define WLAN_GET_LINK_SPEED          (SIOCIWFIRSTPRIV + 31)
@@ -2148,28 +2148,6 @@
    return 0;
 }
 
-/*
- * Support for the reassoc trigger private command
- */
-static int iw_set_reassoc_trigger(struct net_device *dev,
-                            struct iw_request_info *info,
-                            union iwreq_data *wrqu, char *extra)
-{
-   hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(dev);
-   tpAniSirGlobal pMac = WLAN_HDD_GET_HAL_CTX(pAdapter);
-   v_U32_t roamId = 0;
-   tCsrRoamModifyProfileFields modProfileFields;
-   tCsrRoamSession *pSession = CSR_GET_SESSION( pMac, pAdapter->sessionId );
-   /* to force the AP initiate fresh 802.1x authentication need to clear 
-    * the PMKID cache for that set the following boolean. this is needed 
-    * by the HS 2.0 passpoint certification 5.2.a and b testcases */ 
-   pSession->fIgnorePMKIDCache = TRUE;
-   sme_GetModifyProfileFields(pMac, pAdapter->sessionId, &modProfileFields);
-   sme_RoamReassoc(pMac, pAdapter->sessionId, NULL, modProfileFields, &roamId, 1);
-   return 0;
-   
-}
-
 
 /*
  * Support for the RSSI & RSSI-APPROX private commands
@@ -4126,6 +4104,17 @@
             sme_transportDebug(VOS_TRUE, VOS_FALSE);
             break;
         }
+        case  WE_SET_REASSOC_TRIGGER:
+        {
+            hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(dev);
+            tpAniSirGlobal pMac = WLAN_HDD_GET_HAL_CTX(pAdapter);
+            v_U32_t roamId = 0;
+            tCsrRoamModifyProfileFields modProfileFields;
+            sme_GetModifyProfileFields(pMac, pAdapter->sessionId, &modProfileFields);
+            sme_RoamReassoc(pMac, pAdapter->sessionId, NULL, modProfileFields, &roamId, 1);
+            return 0;
+        }
+        
 
         default:
         {
@@ -5919,7 +5908,6 @@
    [WLAN_PRIV_CLEAR_MCBC_FILTER         - SIOCIWFIRSTPRIV]   = iw_clear_dynamic_mcbc_filter,
    [WLAN_SET_POWER_PARAMS               - SIOCIWFIRSTPRIV]   = iw_set_power_params_priv,
    [WLAN_GET_LINK_SPEED                 - SIOCIWFIRSTPRIV]   = iw_get_linkspeed,
-   [WLAN_SET_REASSOC_TRIGGER            - SIOCIWFIRSTPRIV]   = iw_set_reassoc_trigger
 };
 
 /*Maximum command length can be only 15 */
@@ -6161,6 +6149,11 @@
         0,
         0,
         "dxeSnapshot" },
+    {
+        WE_SET_REASSOC_TRIGGER,
+        0,
+        0,
+        "reassoc" },
 
     /* handlers for main ioctl */
     {   WLAN_PRIV_SET_VAR_INT_GET_NONE,
@@ -6303,11 +6296,7 @@
         WLAN_GET_LINK_SPEED,
         IW_PRIV_TYPE_CHAR | 18,
         IW_PRIV_TYPE_CHAR | 3, "getLinkSpeed" },
-    {
-        WLAN_SET_REASSOC_TRIGGER,
-        0,
-        0,
-        "reassoc" },
+   
 };
 
 
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index fa95d9a..70d8bbc 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -2247,8 +2247,13 @@
     {
         if( CSR_IS_SESSION_VALID( pMac, sessionId ) )
         {
-            if(NULL == pProfile)
-            {        
+            if((NULL == pProfile) && (fForce == 1)) 
+            { 
+                tCsrRoamSession *pSession = CSR_GET_SESSION( pMac, sessionId );
+                /* to force the AP initiate fresh 802.1x authentication need to clear
+                 * the PMKID cache for that set the following boolean. this is needed
+                 * by the HS 2.0 passpoint certification 5.2.a and b testcases */
+                pSession->fIgnorePMKIDCache = TRUE;
                 status = csrReassoc( pMac, sessionId, &modProfileFields, pRoamId , fForce);
             }
             else