wlan: mDNS server offload failure post SSR recovery

Currently Post SSr mdns response pack failed due to
corrupted ini data. ini data gets corrupted when parsed
first time to offload.
To fix the issue ini data is copied to temporary string and
then parsed.

Change-Id: I01aacff1e3139beb80045297ede2f20c1b715db7
CRs-Fixed: 2018341
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 119ad01..fa56021 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -10371,32 +10371,57 @@
     /* set dhcp server offload */
     if (iniConfig->enable_dhcp_srv_offload &&
         sme_IsFeatureSupportedByFW(SAP_OFFLOADS)) {
+        vos_event_reset(&pHostapdAdapter->dhcp_status.vos_event);
         status = wlan_hdd_set_dhcp_server_offload(pHostapdAdapter, false);
         if (!VOS_IS_STATUS_SUCCESS(status))
         {
             VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
                       ("HDD DHCP Server Offload Failed!!"));
-            return -EINVAL;
+            vos_event_reset(&pHostapdState->vosEvent);
+            if (VOS_STATUS_SUCCESS == WLANSAP_StopBss(pHddCtx->pvosContext)) {
+                status = vos_wait_single_event(&pHostapdState->vosEvent,
+                                               10000);
+                if (!VOS_IS_STATUS_SUCCESS(status)) {
+                    hddLog(LOGE, FL("SAP Stop Failed"));
+                    return -EINVAL;
+                }
+            }
         }
-        vos_event_reset(&pHostapdAdapter->dhcp_status.vos_event);
         status = vos_wait_single_event(&pHostapdAdapter->dhcp_status.vos_event, 2000);
         if (!VOS_IS_STATUS_SUCCESS(status) || pHostapdAdapter->dhcp_status.dhcp_offload_status)
         {
             VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
                      ("ERROR: DHCP HDD vos wait for single_event failed!! %d"),
                      pHostapdAdapter->dhcp_status.dhcp_offload_status);
-            return -EINVAL;
+            vos_event_reset(&pHostapdState->vosEvent);
+            if (VOS_STATUS_SUCCESS == WLANSAP_StopBss(pHddCtx->pvosContext)) {
+                status = vos_wait_single_event(&pHostapdState->vosEvent,
+                                               10000);
+                if (!VOS_IS_STATUS_SUCCESS(status)) {
+                    hddLog(LOGE, FL("SAP Stop Failed"));
+                    return -EINVAL;
+                }
+            }
         }
 #ifdef MDNS_OFFLOAD
         if (iniConfig->enable_mdns_offload) {
+            vos_event_reset(&pHostapdAdapter->mdns_status.vos_event);
             status = wlan_hdd_set_mdns_offload(pHostapdAdapter);
             if (VOS_IS_STATUS_SUCCESS(status))
             {
                 VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
                           ("HDD MDNS Server Offload Failed!!"));
-                return -EINVAL;
+                vos_event_reset(&pHostapdState->vosEvent);
+                if (VOS_STATUS_SUCCESS ==
+                    WLANSAP_StopBss(pHddCtx->pvosContext)) {
+                    status = vos_wait_single_event(&pHostapdState->vosEvent,
+                                                   10000);
+                    if (!VOS_IS_STATUS_SUCCESS(status)) {
+                        hddLog(LOGE, FL("SAP Stop Failed"));
+                        return -EINVAL;
+                    }
+                }
             }
-            vos_event_reset(&pHostapdAdapter->mdns_status.vos_event);
             status = vos_wait_single_event(&pHostapdAdapter->
                                            mdns_status.vos_event, 2000);
             if (!VOS_IS_STATUS_SUCCESS(status) ||
@@ -10409,7 +10434,16 @@
                           pHostapdAdapter->mdns_status.mdns_enable_status,
                           pHostapdAdapter->mdns_status.mdns_fqdn_status,
                           pHostapdAdapter->mdns_status.mdns_resp_status);
-                return -EINVAL;
+                vos_event_reset(&pHostapdState->vosEvent);
+                if (VOS_STATUS_SUCCESS ==
+                    WLANSAP_StopBss(pHddCtx->pvosContext)) {
+                    status = vos_wait_single_event(&pHostapdState->vosEvent,
+                                                   10000);
+                    if (!VOS_IS_STATUS_SUCCESS(status)) {
+                        hddLog(LOGE, FL("SAP Stop Failed"));
+                        return -EINVAL;
+                    }
+                }
             }
         }
 #endif /* MDNS_OFFLOAD */