wlan: Add ini support and DXE done Ind for frame logging

Add four ini to support frame logging feature
1. ini to enable fw frame logging
2. ini to enable fw continious logging
3. ini stating max log buffer size
4. ini stating min log buffer size

Add support for DXE done indication through control path.
Renaming APIs which will be now common for Mgmt Frame logging
and FW logging.

Change-Id: I4af80eeae86b4766159f9fddb3f87db4417d8aab
CRs-Fixed: 845692
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index a9d8ac4..90e768c 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -2334,6 +2334,31 @@
 #define CFG_ENABLE_BMUHW_TRACING_MAX                     (1)
 #define CFG_ENABLE_BMUHW_TRACING_DEFAULT                 (1)
 
+#define CFG_ENABLE_FW_LOGGING                            "gEnableFWLogging"
+#define CFG_ENABLE_FW_LOGGING_MIN                        (0)
+#define CFG_ENABLE_FW_LOGGING_MAX                        (1)
+#define CFG_ENABLE_FW_LOGGING_DEFAULT                    (0)
+
+// firmware will wakeup the host to send logs always
+#define CFG_ENABLE_FW_CONTINIOUS_LOGGING                 "gEnableContFWLogging"
+#define CFG_ENABLE_FW_CONTINIOUS_LOGGING_MIN             (0)
+#define CFG_ENABLE_FW_CONTINIOUS_LOGGING_MAX             (1)
+#define CFG_ENABLE_FW_CONTINIOUS_LOGGING_DEFAULT         (0)
+
+/* when firmware log reaches this threshold and
+ * if host is awake it will push the logs.
+ */
+#define CFG_MIN_LOGGING_BUFFER_SIZE                      "gMinLoggingBufferSize"
+#define CFG_MIN_LOGGING_BUFFER_SIZE_MIN                  (0)
+#define CFG_MIN_LOGGING_BUFFER_SIZE_MAX                  (6)
+#define CFG_MIN_LOGGING_BUFFER_SIZE_DEFAULT              (1)
+
+// Max ring size in firmware to log msgs when host is suspended state
+#define CFG_MAX_LOGGING_BUFFER_SIZE                      "gMaxLoggingBufferSize"
+#define CFG_MAX_LOGGING_BUFFER_SIZE_MIN                  (0)
+#define CFG_MAX_LOGGING_BUFFER_SIZE_MAX                  (6)
+#define CFG_MAX_LOGGING_BUFFER_SIZE_DEFAULT              (6)
+
 #define CFG_ENABLE_CH_AVOID                                  "gEnableChannelAvoidance"
 #define CFG_ENABLE_CH_AVOID_MIN                              ( 0 )
 #define CFG_ENABLE_CH_AVOID_MAX                              ( 1 )
@@ -2926,6 +2951,10 @@
    v_BOOL_t                    enableMacSpoofing;
    v_BOOL_t                    enableMgmtLogging;
    v_BOOL_t                    enableBMUHWtracing;
+   v_BOOL_t                    enableFWLogging;
+   v_BOOL_t                    enableContFWLogging;
+   v_U8_t                      minLoggingBufferSize;
+   v_U8_t                      maxLoggingBufferSize;
    v_BOOL_t                    fenableCHAvoidance;
    v_U8_t                      gMaxConcurrentActiveSessions;
 
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index ca0ca0d..6c93fc6 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -3147,6 +3147,34 @@
                 CFG_ENABLE_BMUHW_TRACING_MIN,
                 CFG_ENABLE_BMUHW_TRACING_MAX),
 
+   REG_VARIABLE(CFG_ENABLE_FW_LOGGING, WLAN_PARAM_Integer,
+                hdd_config_t, enableFWLogging,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_ENABLE_FW_LOGGING_DEFAULT,
+                CFG_ENABLE_FW_LOGGING_MIN,
+                CFG_ENABLE_FW_LOGGING_MAX),
+
+   REG_VARIABLE(CFG_ENABLE_FW_CONTINIOUS_LOGGING, WLAN_PARAM_Integer,
+                hdd_config_t, enableContFWLogging,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_ENABLE_FW_CONTINIOUS_LOGGING_DEFAULT,
+                CFG_ENABLE_FW_CONTINIOUS_LOGGING_MIN,
+                CFG_ENABLE_FW_CONTINIOUS_LOGGING_MAX),
+
+   REG_VARIABLE(CFG_MIN_LOGGING_BUFFER_SIZE, WLAN_PARAM_Integer,
+                hdd_config_t, minLoggingBufferSize,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_MIN_LOGGING_BUFFER_SIZE_DEFAULT,
+                CFG_MIN_LOGGING_BUFFER_SIZE_MIN,
+                CFG_MIN_LOGGING_BUFFER_SIZE_MAX),
+
+   REG_VARIABLE(CFG_MAX_LOGGING_BUFFER_SIZE, WLAN_PARAM_Integer,
+                hdd_config_t, maxLoggingBufferSize,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_MAX_LOGGING_BUFFER_SIZE_DEFAULT,
+                CFG_MAX_LOGGING_BUFFER_SIZE_MIN,
+                CFG_MAX_LOGGING_BUFFER_SIZE_MAX),
+
    REG_VARIABLE(CFG_ENABLE_CH_AVOID, WLAN_PARAM_Integer,
                  hdd_config_t, fenableCHAvoidance,
                  VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 6c2dd5f..187507e 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -9176,9 +9176,9 @@
   \return -  None
 
   --------------------------------------------------------------------------*/
-void hdd_init_frame_logging_done(void *mgmtlogInitCbContext, VOS_STATUS status)
+void hdd_init_frame_logging_done(void *fwlogInitCbContext, VOS_STATUS status)
 {
-   hdd_context_t* pHddCtx = (hdd_context_t*)mgmtlogInitCbContext;
+   hdd_context_t* pHddCtx = (hdd_context_t*)fwlogInitCbContext;
 
    if (NULL == pHddCtx)
    {
@@ -9210,56 +9210,63 @@
   \return -  None
 
   --------------------------------------------------------------------------*/
-void hdd_init_frame_logging(hdd_context_t* pHddCtx, v_BOOL_t enable)
+void hdd_init_frame_logging(hdd_context_t* pHddCtx)
 {
    eHalStatus halStatus = eHAL_STATUS_FAILURE;
-   tpSirMgmtLoggingInitParam wlanMgmtLoggingInitParam;
+   tpSirFWLoggingInitParam wlanFWLoggingInitParam;
 
-   if (TRUE != sme_IsFeatureSupportedByFW(MGMT_FRAME_LOGGING))
+   if (TRUE != sme_IsFeatureSupportedByFW(MGMT_FRAME_LOGGING) &&
+       TRUE != sme_IsFeatureSupportedByFW(LOGGING_ENHANCEMENT))
    {
        hddLog(VOS_TRACE_LEVEL_INFO, FL("MGMT_FRAME_LOGGING not supp by FW"));
        return;
    }
 
-   wlanMgmtLoggingInitParam = vos_mem_malloc(sizeof(tSirMgmtLoggingInitParam));
-   if(NULL == wlanMgmtLoggingInitParam)
+   wlanFWLoggingInitParam = vos_mem_malloc(sizeof(tSirFWLoggingInitParam));
+   if(NULL == wlanFWLoggingInitParam)
    {
        hddLog(VOS_TRACE_LEVEL_FATAL, "%s: vos_mem_alloc failed ", __func__);
        return;
    }
 
-   vos_mem_set(wlanMgmtLoggingInitParam, sizeof(tSirMgmtLoggingInitParam), 0);
+   vos_mem_set(wlanFWLoggingInitParam, sizeof(tSirFWLoggingInitParam), 0);
 
-   hddLog(VOS_TRACE_LEVEL_INFO, "%s: Configuring Mgmt Frame Logging %d",
-                                     __func__, enable);
+   hddLog(VOS_TRACE_LEVEL_INFO, "%s: Configuring %s %s %s Logging",__func__,
+               pHddCtx->cfg_ini->enableFWLogging?"FW Log,":"",
+               pHddCtx->cfg_ini->enableContFWLogging ? "Cont FW log,":"",
+               pHddCtx->cfg_ini->enableMgmtLogging ? "Mgmt Pkt Log":"");
 
-   if (enable)
+   if (pHddCtx->cfg_ini->enableFWLogging ||
+                 pHddCtx->cfg_ini->enableContFWLogging)
    {
-      wlanMgmtLoggingInitParam->enableFlag |= WLAN_FRAME_LOG_EN;
+      wlanFWLoggingInitParam->enableFlag |= WLAN_QXDM_LOG_EN;
    }
 
    if (pHddCtx->cfg_ini->enableBMUHWtracing)
    {
-      wlanMgmtLoggingInitParam->enableFlag |= WLAN_BMUHW_TRACE_LOG_EN;
+      wlanFWLoggingInitParam->enableFlag |= WLAN_BMUHW_TRACE_LOG_EN;
    }
 
-   wlanMgmtLoggingInitParam->frameType = WLAN_FRAME_LOGGING_FRAMETYPE_MGMT;
-   wlanMgmtLoggingInitParam->frameSize = WLAN_MGMT_LOGGING_FRAMESIZE_128BYTES;
-   wlanMgmtLoggingInitParam->bufferMode =
-                                       WLAN_FRAME_LOGGING_BUFFERMODE_CIRCULAR;
+   wlanFWLoggingInitParam->frameType = WLAN_FRAME_LOGGING_FRAMETYPE_MGMT;
+   wlanFWLoggingInitParam->frameSize = WLAN_MGMT_LOGGING_FRAMESIZE_128BYTES;
+   wlanFWLoggingInitParam->bufferMode = WLAN_FRAME_LOGGING_BUFFERMODE_CIRCULAR;
+   wlanFWLoggingInitParam->continuousFrameLogging =
+                              pHddCtx->cfg_ini->enableContFWLogging;
 
-   wlanMgmtLoggingInitParam->enableFlag &= ~WLAN_QXDM_LOG_EN;
-   wlanMgmtLoggingInitParam->enableFlag &= ~WLAN_DPU_TXP_LOG_EN;
+   wlanFWLoggingInitParam->enableFlag &= ~WLAN_DPU_TXP_LOG_EN;
 
-   wlanMgmtLoggingInitParam->mgmtlogInitCallback = hdd_init_frame_logging_done;
-   wlanMgmtLoggingInitParam->mgmtlogInitCbContext= pHddCtx;
+   wlanFWLoggingInitParam->minLogBufferSize =
+                              pHddCtx->cfg_ini->minLoggingBufferSize;
+   wlanFWLoggingInitParam->maxLogBufferSize =
+                              pHddCtx->cfg_ini->maxLoggingBufferSize;
+   wlanFWLoggingInitParam->fwlogInitCallback = hdd_init_frame_logging_done;
+   wlanFWLoggingInitParam->fwlogInitCbContext= pHddCtx;
 
-   halStatus = sme_InitMgmtFrameLogging(pHddCtx->hHal,
-                                                      wlanMgmtLoggingInitParam);
+   halStatus = sme_InitMgmtFrameLogging(pHddCtx->hHal, wlanFWLoggingInitParam);
 
    if (eHAL_STATUS_SUCCESS != halStatus)
    {
-       vos_mem_free(wlanMgmtLoggingInitParam);
+       vos_mem_free(wlanFWLoggingInitParam);
    }
 
    return;
@@ -9999,14 +10006,15 @@
            VOS_PKT_PROTO_TYPE_EAPOL | VOS_PKT_PROTO_TYPE_DHCP;
    }
 
-   if (pHddCtx->cfg_ini->enableMgmtLogging &&
-               pHddCtx->cfg_ini->wlanLoggingEnable)
+   if (pHddCtx->cfg_ini->wlanLoggingEnable &&
+               (pHddCtx->cfg_ini->enableFWLogging ||
+                pHddCtx->cfg_ini->enableContFWLogging))
    {
-       hdd_init_frame_logging(pHddCtx, TRUE);
+       hdd_init_frame_logging(pHddCtx);
    }
    else
    {
-       hddLog(VOS_TRACE_LEVEL_INFO, FL("Mgmt Logging disabled in ini"));
+       hddLog(VOS_TRACE_LEVEL_INFO, FL("Logging disabled in ini"));
    }
 
 #endif
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 0490e18..b691f71 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -3721,8 +3721,7 @@
     tANI_U8 setMcstBcstFilter;
 }tSirWlanSetRxpFilters,*tpSirWlanSetRxpFilters;
 
-typedef void(*MgmtLoggingInitReqCb)(void *mgmtlogInitCbContext,
-                                                       VOS_STATUS status);
+typedef void(*FWLoggingInitReqCb)(void *fwlogInitCbContext, VOS_STATUS status);
 typedef void ( *tGetFrameLogCallback) (void *pContext);
 
 typedef struct sAniGetFrameLogReq
@@ -3736,15 +3735,18 @@
 } tAniGetFrameLogReq,      *tpAniGetFrameLogReq;
 
 
-typedef struct sSirMgmtLoggingInitParam
+typedef struct sSirFWLoggingInitParam
 {
     tANI_U8                enableFlag;
     tANI_U8                frameType;
     tANI_U8                frameSize;
     tANI_U8                bufferMode;
-    MgmtLoggingInitReqCb   mgmtlogInitCallback;
-    void                   *mgmtlogInitCbContext;
-}tSirMgmtLoggingInitParam,*tpSirMgmtLoggingInitParam;
+    tANI_U8                continuousFrameLogging;
+    tANI_U8                minLogBufferSize;
+    tANI_U8                maxLogBufferSize;
+    FWLoggingInitReqCb     fwlogInitCallback;
+    void                   *fwlogInitCbContext;
+}tSirFWLoggingInitParam,*tpSirFWLoggingInitParam;
 
 #ifdef FEATURE_WLAN_SCAN_PNO
 //
diff --git a/CORE/MAC/src/include/sirParams.h b/CORE/MAC/src/include/sirParams.h
index fd711be..2fa32dd 100644
--- a/CORE/MAC/src/include/sirParams.h
+++ b/CORE/MAC/src/include/sirParams.h
@@ -129,6 +129,7 @@
 #endif
    MGMT_FRAME_LOGGING    = 53,
    ENHANCED_TXBD_COMPLETION = 54,
+   LOGGING_ENHANCEMENT   = 55,
    //MAX_FEATURE_SUPPORTED = 128
 } placeHolderInCapBitmap;
 
diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h
index f0b88c5..3ffd334 100644
--- a/CORE/SME/inc/sme_Api.h
+++ b/CORE/SME/inc/sme_Api.h
@@ -2180,12 +2180,12 @@
 
     hHal - The handle returned by macOpen.
 
-    wlanMgmtLoggingInitParam - Params to initialize frame logging
+    wlanFWLoggingInitParam - Params to initialize frame logging
 
   \return eHalStatus
 --------------------------------------------------------------------------- */
 eHalStatus sme_InitMgmtFrameLogging( tHalHandle hHal,
-                            tpSirMgmtLoggingInitParam wlanMgmtLoggingInitParam);
+                            tpSirFWLoggingInitParam wlanFWLoggingInitParam);
 
 /* ---------------------------------------------------------------------------
 
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 1b3c8d8..4142a0b 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -7496,14 +7496,14 @@
 
     hHal - The handle returned by macOpen.
 
-    wlanMgmtLoggingInitParam - Params to initialize frame logging
+    wlanFWLoggingInitParam - Params to initialize frame logging
 
   \return eHalStatus
 
 
 --------------------------------------------------------------------------- */
 eHalStatus sme_InitMgmtFrameLogging( tHalHandle hHal,
-                            tSirMgmtLoggingInitParam *wlanMgmtLoggingInitParam)
+                            tSirFWLoggingInitParam *wlanFWLoggingInitParam)
 {
     eHalStatus status = eHAL_STATUS_SUCCESS;
     VOS_STATUS vosStatus = VOS_STATUS_SUCCESS;
@@ -7514,7 +7514,7 @@
                                         sme_AcquireGlobalLock( &pMac->sme ) ) )
     {
         /* serialize the req through MC thread */
-        vosMessage.bodyptr = wlanMgmtLoggingInitParam;
+        vosMessage.bodyptr = wlanFWLoggingInitParam;
         vosMessage.type         = WDA_MGMT_LOGGING_INIT_REQ;
         vosStatus = vos_mq_post_message( VOS_MQ_ID_WDA, &vosMessage );
         if ( !VOS_IS_STATUS_SUCCESS(vosStatus) )
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index 7957ca9..959c50b 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -5217,14 +5217,14 @@
 
 }
 /*
- * FUNCTION: WDA_MgmtLoggingInitRspCallback
+ * FUNCTION: WDA_FWLoggingInitRspCallback
  * recieves Mgmt Logging init response from FW
  */
-void WDA_MgmtLoggingInitRspCallback(WDI_MgmtLoggingRspParamType* wdiRsp,
+void WDA_FWLoggingInitRspCallback(WDI_FWLoggingInitRspParamType* wdiRsp,
                                                             void* pUserData)
 {
    tWDA_ReqParams *pWdaParams = (tWDA_ReqParams *)pUserData;
-   tSirMgmtLoggingInitParam *pMgmtLoggingInitParams;
+   tSirFWLoggingInitParam *pFWLoggingInitParams;
 
    VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_INFO,
                                           "<------ %s " ,__func__);
@@ -5246,18 +5246,18 @@
       return ;
    }
 
-   pMgmtLoggingInitParams = (tSirMgmtLoggingInitParam *)pWdaParams->wdaMsgParam;
+   pFWLoggingInitParams = (tSirFWLoggingInitParam *)pWdaParams->wdaMsgParam;
 
-   if(pMgmtLoggingInitParams->mgmtlogInitCallback)
+   if(pFWLoggingInitParams->fwlogInitCallback)
    {
-      pMgmtLoggingInitParams->mgmtlogInitCallback(
-                               pMgmtLoggingInitParams->mgmtlogInitCbContext,
-                               CONVERT_WDI2VOS_STATUS(wdiRsp->wdiStatus));
+      pFWLoggingInitParams->fwlogInitCallback(
+                               pFWLoggingInitParams->fwlogInitCbContext,
+                               CONVERT_WDI2VOS_STATUS(wdiRsp->status));
    }
    else
    {
       VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
-              "%s: pMgmtLoggingInitParams callback is NULL", __func__);
+              "%s: pFWLoggingInitParams callback is NULL", __func__);
    }
 
    vos_mem_free(pWdaParams->wdaWdiApiMsgParam);
@@ -9663,7 +9663,7 @@
    if(NULL == pGetFrameLog)
    {
       VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
-                           "%s: pMgmtLoggingInitParam received NULL", __func__);
+                           "%s: pFWLoggingInitParam received NULL", __func__);
       VOS_ASSERT(0) ;
       return VOS_STATUS_E_FAULT;
    }
@@ -9715,37 +9715,37 @@
 }
 
 /*
- * FUNCTION: WDA_ProcessMgmtLoggingInitReq
+ * FUNCTION: WDA_ProcessFWLoggingInitReq
  *
  */
-VOS_STATUS WDA_ProcessMgmtLoggingInitReq(tWDA_CbContext *pWDA,
-                                tSirMgmtLoggingInitParam *pMgmtLoggingInitParam)
+VOS_STATUS WDA_ProcessFWLoggingInitReq(tWDA_CbContext *pWDA,
+                                tSirFWLoggingInitParam *pFWLoggingInitParam)
 {
    VOS_STATUS status = VOS_STATUS_SUCCESS;
    WDI_Status wstatus;
-   WDI_MgmtLoggingInitReqInfoType *wdiMgmtLoggingInitInfo;
+   WDI_FWLoggingInitReqInfoType *wdiFWLoggingInitInfo;
    tWDA_ReqParams *pWdaParams ;
 
    VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_INFO,
                                           "------> %s " ,__func__);
 
    /* Sanity Check*/
-   if(NULL == pMgmtLoggingInitParam)
+   if(NULL == pFWLoggingInitParam)
    {
       VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
-                           "%s: pMgmtLoggingInitParam received NULL", __func__);
+                           "%s: pFWLoggingInitParam received NULL", __func__);
       VOS_ASSERT(0) ;
       return VOS_STATUS_E_FAULT;
    }
 
-   wdiMgmtLoggingInitInfo = (WDI_MgmtLoggingInitReqInfoType *)vos_mem_malloc(
-                                       sizeof(WDI_MgmtLoggingInitReqInfoType));
-   if(NULL == wdiMgmtLoggingInitInfo)
+   wdiFWLoggingInitInfo = (WDI_FWLoggingInitReqInfoType *)vos_mem_malloc(
+                                       sizeof(WDI_FWLoggingInitReqInfoType));
+   if(NULL == wdiFWLoggingInitInfo)
    {
       VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
                            "%s: VOS MEM Alloc Failure", __func__);
       VOS_ASSERT(0);
-      vos_mem_free(pMgmtLoggingInitParam);
+      vos_mem_free(pFWLoggingInitParam);
       return VOS_STATUS_E_NOMEM;
    }
 
@@ -9755,26 +9755,28 @@
       VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
                            "%s: VOS MEM Alloc Failure", __func__);
       VOS_ASSERT(0);
-      vos_mem_free(wdiMgmtLoggingInitInfo);
-      vos_mem_free(pMgmtLoggingInitParam);
+      vos_mem_free(wdiFWLoggingInitInfo);
+      vos_mem_free(pFWLoggingInitParam);
       return VOS_STATUS_E_NOMEM;
    }
 
-   wdiMgmtLoggingInitInfo->enableFlag=
-                                 pMgmtLoggingInitParam->enableFlag;
-   wdiMgmtLoggingInitInfo->frameType=
-                                 pMgmtLoggingInitParam->frameType;
-   wdiMgmtLoggingInitInfo->frameSize=
-                                 pMgmtLoggingInitParam->frameSize;
-   wdiMgmtLoggingInitInfo->bufferMode=
-                                 pMgmtLoggingInitParam->bufferMode;
+   wdiFWLoggingInitInfo->enableFlag = pFWLoggingInitParam->enableFlag;
+   wdiFWLoggingInitInfo->frameType = pFWLoggingInitParam->frameType;
+   wdiFWLoggingInitInfo->frameSize = pFWLoggingInitParam->frameSize;
+   wdiFWLoggingInitInfo->bufferMode = pFWLoggingInitParam->bufferMode;
+   wdiFWLoggingInitInfo->continuousFrameLogging =
+                                 pFWLoggingInitParam->continuousFrameLogging;
+   wdiFWLoggingInitInfo->minLogBufferSize=
+                                 pFWLoggingInitParam->minLogBufferSize;
+   wdiFWLoggingInitInfo->maxLogBufferSize=
+                                 pFWLoggingInitParam->maxLogBufferSize;
 
    pWdaParams->pWdaContext = pWDA;
-   pWdaParams->wdaMsgParam = pMgmtLoggingInitParam;
-   pWdaParams->wdaWdiApiMsgParam = (void *)wdiMgmtLoggingInitInfo;
+   pWdaParams->wdaMsgParam = pFWLoggingInitParam;
+   pWdaParams->wdaWdiApiMsgParam = (void *)wdiFWLoggingInitInfo;
 
-   wstatus = WDI_MgmtLoggingInitReq(wdiMgmtLoggingInitInfo,
-                       (WDI_MgmtLoggingInitRspCb)WDA_MgmtLoggingInitRspCallback,
+   wstatus = WDI_FWLoggingInitReq(wdiFWLoggingInitInfo,
+                       (WDI_FWLoggingInitRspCb)WDA_FWLoggingInitRspCallback,
                         pWdaParams);
    if(IS_WDI_STATUS_FAILURE(wstatus))
    {
@@ -13679,8 +13681,8 @@
       }
       case WDA_MGMT_LOGGING_INIT_REQ:
       {
-         WDA_ProcessMgmtLoggingInitReq(pWDA,
-                                 (tSirMgmtLoggingInitParam *)pMsg->bodyptr);
+         WDA_ProcessFWLoggingInitReq(pWDA,
+                                 (tSirFWLoggingInitParam *)pMsg->bodyptr);
          break;
       }
       case WDA_GET_FRAME_LOG_REQ:
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi.h b/CORE/WDI/CP/inc/wlan_qct_wdi.h
index c1d9ac1..1df38c6 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi.h
@@ -152,6 +152,7 @@
 #define PERIODIC_TX_PTRN_MAX_SIZE 1536
 #define MAXNUM_PERIODIC_TX_PTRNS 6
 #define WDI_DISA_MAX_PAYLOAD_SIZE                1600
+#define MAX_NUM_OF_BUFFER 3
 
 /*============================================================================
  *     GENERIC STRUCTURES 
@@ -2675,14 +2676,22 @@
   wpt_uint32   wdiStatus;
 }WDI_GetFrameLogRspParamType;
 /*---------------------------------------------------------------------------
-  WDI_MgmtLoggingRspParamType
+  WDI_FWLoggingInitRspParamType
 ---------------------------------------------------------------------------*/
 typedef struct
 {
-  /* wdi status */
-  wpt_uint32   wdiStatus;
-
-}WDI_MgmtLoggingRspParamType;
+  //FW mail box address
+  wpt_uint64 logMailBoxAddr;
+  wpt_uint32 status;
+  //Logging mail box version
+  wpt_uint8 logMailBoxVer;
+  //Qshrink is enabled
+  wpt_boolean logCompressEnabled;
+  //Reserved for future purpose
+  wpt_uint32 reserved0;
+  wpt_uint32 reserved1;
+  wpt_uint32 reserved2;
+}WDI_FWLoggingInitRspParamType;
 /*---------------------------------------------------------------------------
   WDI_AddBAReqinfoType
 ---------------------------------------------------------------------------*/
@@ -4061,13 +4070,23 @@
    wpt_uint8 frameType;
    wpt_uint8 frameSize;
    wpt_uint8 bufferMode;
-}WDI_MgmtLoggingInitReqInfoType;
+   wpt_uint8 continuousFrameLogging;
+   wpt_uint8 minLogBufferSize;
+   wpt_uint8 maxLogBufferSize;
+}WDI_FWLoggingInitReqInfoType;
 
 typedef struct
 {
    wpt_uint8 flags;
 }WDI_GetFrameLogReqInfoType;
 
+typedef struct
+{
+   wpt_uint64 logBuffAddress[MAX_NUM_OF_BUFFER];
+   wpt_uint32 status;
+   wpt_uint32 logBuffLength[MAX_NUM_OF_BUFFER];
+}WDI_FWLoggingDXEdoneIndInfoType;
+
 /*---------------------------------------------------------------------------
   WDI_BeaconFilterInfoType
   Beacon Filtering data structures passed to WDA form UMAC
@@ -8002,8 +8021,8 @@
                                          void *pUserData);
 
 typedef void  (*WDI_EncryptMsgRspCb)(wpt_uint8 status, void *pEventData, void* pUserData);
-typedef void  (*WDI_MgmtLoggingInitRspCb)(
-                         WDI_MgmtLoggingRspParamType *wdiRsp, void *pUserData);
+typedef void  (*WDI_FWLoggingInitRspCb)(
+                        WDI_FWLoggingInitRspParamType *wdiRsp, void *pUserData);
 typedef void  (*WDI_GetFrameLogRspCb)(
                         WDI_GetFrameLogRspParamType *wdiRsp, void *pUserData);
 
@@ -9469,7 +9488,7 @@
 );
 
 /**
- @brief WDI_MgmtLoggingInitReq will be called when the upper
+ @brief WDI_FWLoggingInitReq will be called when the upper
         MAC wants to initialize frame logging. Upon the call of
         this API the WLAN DAL will pack and send a HAL
         Frame logging init request message to
@@ -9479,10 +9498,10 @@
         be allowed in any other state.
 
 
- @param pwdiMgmtLoggingInitReqParams: the Frame Logging params
+ @param pwdiFWLoggingInitReqParams: the Frame Logging params
                       as specified by the Device Interface
 
-        wdiMgmtLoggingInitReqCb: callback for passing back the
+        wdiFWLoggingInitReqCb: callback for passing back the
         response of the frame logging init operation received
         from the device
 
@@ -9492,10 +9511,10 @@
  @return Result of the function call
 */
 WDI_Status
-WDI_MgmtLoggingInitReq
+WDI_FWLoggingInitReq
 (
-   WDI_MgmtLoggingInitReqInfoType      *pwdiMgmtLoggingInitReqInfo,
-   WDI_MgmtLoggingInitRspCb             wdiMgmtLoggingInitReqCb,
+   WDI_FWLoggingInitReqInfoType      *pwdiFWLoggingInitReqInfo,
+   WDI_FWLoggingInitRspCb             wdiFWLoggingInitReqCb,
    void*                                pUserData
 );
 
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi_i.h b/CORE/WDI/CP/inc/wlan_qct_wdi_i.h
index a8d78f5..8a8a3a6 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi_i.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi_i.h
@@ -470,7 +470,7 @@
   /* Send command to encrypt the given message */
   WDI_ENCRYPT_MSG_REQ                            = 103,
 
-  WDI_MGMT_LOGGING_INIT_REQ                      = 104,
+  WDI_FW_LOGGING_INIT_REQ                        = 104,
   WDI_GET_FRAME_LOG_REQ                          = 105,
 
   /* NAN Request */
@@ -518,6 +518,7 @@
   WDI_CH_SWITCH_REQ_V1,
   WDI_TDLS_CHAN_SWITCH_REQ,
   WDI_SET_RTS_CTS_HTVHT_IND,
+  WDI_FW_LOGGING_DXE_DONE_IND,
 
   /*Keep adding the indications to the max request
     such that we keep them sepparate */
@@ -810,7 +811,7 @@
   /* Send command to encrypt the given message */
   WDI_ENCRYPT_MSG_RSP                            = 103,
 
-  WDI_MGMT_LOGGING_INIT_RSP                      = 104,
+  WDI_FW_LOGGING_INIT_RSP                        = 104,
   WDI_GET_FRAME_LOG_RSP                          = 105,
 
   WDI_NAN_RESPONSE                               = 106,
@@ -6137,14 +6138,21 @@
 );
 
 WDI_Status
-WDI_ProcessMgmtLoggingInitReq
+WDI_ProcessFWLoggingDXEdoneInd
 (
   WDI_ControlBlockType*  pWDICtx,
   WDI_EventInfoType*     pEventData
 );
 
 WDI_Status
-WDI_ProcessMgmtFrameLoggingInitRsp
+WDI_ProcessFWLoggingInitReq
+(
+  WDI_ControlBlockType*  pWDICtx,
+  WDI_EventInfoType*     pEventData
+);
+
+WDI_Status
+WDI_ProcessFWFrameLoggingInitRsp
 (
   WDI_ControlBlockType*  pWDICtx,
   WDI_EventInfoType*     pEventData
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index a64a63e..cd25d64 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -203,6 +203,7 @@
    ,FEATURE_NOT_SUPPORTED          //52
    ,MGMT_FRAME_LOGGING             //53
    ,ENHANCED_TXBD_COMPLETION       //54
+   ,LOGGING_ENHANCEMENT            //55
 };
 
 /*-------------------------------------------------------------------------- 
@@ -471,7 +472,7 @@
 
   WDI_ProcessEncryptMsgReq,         /* WDI_ENCRYPT_MSG_REQ*/
 
-  WDI_ProcessMgmtLoggingInitReq,        /* WDI_MGMT_LOGGING_INIT_REQ*/
+  WDI_ProcessFWLoggingInitReq,          /* WDI_FW_LOGGING_INIT_REQ*/
   WDI_ProcessGetFrameLogReq,            /* WDI_GET_FRAME_LOG_REQ*/
 
   WDI_ProcessNanRequest,            /* WDI_NAN_REQUEST*/
@@ -511,7 +512,7 @@
   NULL,
 #endif
   WDI_ProcessSetRtsCtsHtvhtInd,       /* WDI_SET_RTS_CTS_HTVHT_IND */
-
+  WDI_ProcessFWLoggingDXEdoneInd,       /* WDI_FW_LOGGING_DXE_DONE_IND */
 };
 
 
@@ -742,7 +743,7 @@
     WDI_ProcessGetFwStatsRsp,                     /*WDI_GET_FW_STATS_RSP*/
 
     WDI_ProcessEncryptMsgRsp,                  /* WDI_ENCRYPT_MSG_RSP*/
-    WDI_ProcessMgmtFrameLoggingInitRsp,        /* WDI_MGMT_LOGGING_INIT_RSP*/
+    WDI_ProcessFWFrameLoggingInitRsp,          /* WDI_FW_LOGGING_INIT_RSP*/
     WDI_ProcessGetFrameLogRsp,                 /* WDI_GET_FRAME_LOG_RSP*/
 
     WDI_ProcessNanResponse,                    /* WDI_NAN_RESPONSE */
@@ -1170,7 +1171,7 @@
     CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
     CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
     CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
-    CASE_RETURN_STRING( WDI_MGMT_LOGGING_INIT_REQ);
+    CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
     CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
     CASE_RETURN_STRING( WDI_NAN_REQUEST );
     CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
@@ -1309,7 +1310,7 @@
 #endif /* WLAN_FEATURE_EXTSCAN */
     CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
     CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
-    CASE_RETURN_STRING( WDI_MGMT_LOGGING_INIT_RSP);
+    CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
     CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
     default:
         return "Unknown WDI MessageId";
@@ -1473,6 +1474,10 @@
                      case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
                           pCapStr += strlen("TDLS_OFF_CHANNEL");
                           break;
+                     case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
+                          pCapStr += strlen("LOGGING_ENHANCEMENT");
+                          break;
+
 
                  }
                  *pCapStr++ = ',';
@@ -4219,6 +4224,52 @@
 }/*WDI_SetUapsdAcParamsReq*/
 
 /**
+ @brief WDI_FWLoggingDXEdoneInd
+
+        FW Logging DXE done Indication from the upper layer will be sent
+        down to HAL
+
+ @param WDI_FWLoggingDXEdoneIndInfoType
+
+ @see
+
+ @return Status of the request
+*/
+WDI_Status
+WDI_FWLoggingDXEdoneInd
+(
+  WDI_FWLoggingDXEdoneIndInfoType*    pwdiFWLoggingDXEdoneInd
+)
+{
+
+  WDI_EventInfoType      wdiEventData;
+  /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+  /*------------------------------------------------------------------------
+    Sanity Check
+  ------------------------------------------------------------------------*/
+  if ( eWLAN_PAL_FALSE == gWDIInitialized )
+  {
+    WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
+              "WDI API call before module is initialized - Fail request");
+
+    return WDI_STATUS_E_NOT_ALLOWED;
+  }
+
+  /*------------------------------------------------------------------------
+    Fill in Event data and post to the Main FSM
+  ------------------------------------------------------------------------*/
+  wdiEventData.wdiRequest      = WDI_FW_LOGGING_DXE_DONE_IND;
+  wdiEventData.pEventData      = pwdiFWLoggingDXEdoneInd;
+  wdiEventData.uEventDataSize  = sizeof(*pwdiFWLoggingDXEdoneInd);
+  wdiEventData.pCBfnc          = NULL;
+  wdiEventData.pUserData       = NULL;
+
+  return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
+
+}/*WDI_FWLoggingDXEdoneInd*/
+
+/**
  @brief WDI_GetFrameLogReq will be called when the upper
         MAC wants to initialize frame logging. Upon the call of
         this API the WLAN DAL will pack and send a HAL
@@ -4275,7 +4326,7 @@
    return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
 }
 /**
- @brief WDI_MgmtLoggingInitReq will be called when the upper
+ @brief WDI_FWLoggingInitReq will be called when the upper
         MAC wants to initialize frame logging. Upon the call of
         this API the WLAN DAL will pack and send a HAL
         Frame logging init request message to
@@ -4285,10 +4336,10 @@
         be allowed in any other state.
 
 
- @param pwdiMgmtLoggingInitReqParams: the Frame Logging params
+ @param pwdiFWLoggingInitReqParams: the Frame Logging params
                       as specified by the Device Interface
 
-        wdiMgmtLoggingInitReqCb: callback for passing back the
+        wdiFWLoggingInitReqCb: callback for passing back the
         response of the frame logging init operation received
         from the device
 
@@ -4298,10 +4349,10 @@
  @return Result of the function call
 */
 WDI_Status
-WDI_MgmtLoggingInitReq
+WDI_FWLoggingInitReq
 (
-   WDI_MgmtLoggingInitReqInfoType      *pwdiMgmtLoggingInitReqInfo,
-   WDI_MgmtLoggingInitRspCb             wdiMgmtLoggingInitRspCb,
+   WDI_FWLoggingInitReqInfoType         *pwdiFWLoggingInitReqInfo,
+   WDI_FWLoggingInitRspCb               wdiFWLoggingInitRspCb,
    void*                                pUserData
 )
 {
@@ -4321,10 +4372,10 @@
    /*------------------------------------------------------------------------
      Fill in Event data and post to the Main FSM
    ------------------------------------------------------------------------*/
-   wdiEventData.wdiRequest      = WDI_MGMT_LOGGING_INIT_REQ;
-   wdiEventData.pEventData      = pwdiMgmtLoggingInitReqInfo;
-   wdiEventData.uEventDataSize  = sizeof(*pwdiMgmtLoggingInitReqInfo);
-   wdiEventData.pCBfnc          = wdiMgmtLoggingInitRspCb;
+   wdiEventData.wdiRequest      = WDI_FW_LOGGING_INIT_REQ;
+   wdiEventData.pEventData      = pwdiFWLoggingInitReqInfo;
+   wdiEventData.uEventDataSize  = sizeof(*pwdiFWLoggingInitReqInfo);
+   wdiEventData.pCBfnc          = wdiFWLoggingInitRspCb;
    wdiEventData.pUserData       = pUserData;
 
    return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
@@ -24134,8 +24185,8 @@
        return WLAN_HAL_FW_STATS_REQ;
   case WDI_ENCRYPT_MSG_REQ:
        return WLAN_HAL_ENCRYPT_DATA_REQ;
-  case WDI_MGMT_LOGGING_INIT_REQ:
-       return WLAN_HAL_MGMT_LOGGING_INIT_REQ;
+  case WDI_FW_LOGGING_INIT_REQ:
+       return WLAN_HAL_FW_LOGGING_INIT_REQ;
   case WDI_GET_FRAME_LOG_REQ:
        return WLAN_HAL_GET_FRAME_LOG_REQ;
   case WDI_NAN_REQUEST:
@@ -24146,6 +24197,8 @@
        return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
   case WDI_MON_STOP_REQ:
        return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
+  case WDI_FW_LOGGING_DXE_DONE_IND:
+       return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
   default:
     return WLAN_HAL_MSG_MAX;
   }
@@ -24463,8 +24516,8 @@
        return WDI_GET_FW_STATS_RSP;
   case WLAN_HAL_ENCRYPT_DATA_RSP:
        return WDI_ENCRYPT_MSG_RSP;
-  case WLAN_HAL_MGMT_LOGGING_INIT_RSP:
-       return WDI_MGMT_LOGGING_INIT_RSP;
+  case WLAN_HAL_FW_LOGGING_INIT_RSP:
+       return WDI_FW_LOGGING_INIT_RSP;
   case WLAN_HAL_GET_FRAME_LOG_RSP:
        return WDI_GET_FRAME_LOG_RSP;
   case WLAN_HAL_NAN_RSP:
@@ -34295,7 +34348,7 @@
   return WDI_STATUS_SUCCESS;
 }
 /**
- @brief Process MgmtLoggingInit Request
+ @brief Process FWLoggingInit Request
 
  @param  pWDICtx:         pointer to the WLAN DAL context
          pEventData:      pointer to the event information structure
@@ -34316,7 +34369,7 @@
     wpt_uint16                     usSendSize   = 0;
     WDI_Status                     wdiStatus;
     tGetFrameLogReqMsg             halGetFrameLogReq;
-    WDI_MgmtLoggingInitRspCb       wdiGetFrameLogRspCb;
+    WDI_FWLoggingInitRspCb         wdiGetFrameLogRspCb;
 
 
     VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
@@ -34355,7 +34408,7 @@
     halGetFrameLogReq.tGetFrameLogReqParams.flags =
                        wdiGetFrameLogReq->flags;
 
-    wdiGetFrameLogRspCb = (WDI_MgmtLoggingInitRspCb)pEventData->pCBfnc;
+    wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
 
     wpalMemoryCopy( pSendBuffer+usDataOffset,
                                     &halGetFrameLogReq.tGetFrameLogReqParams,
@@ -34380,15 +34433,15 @@
  @return Result of the function call
 */
 WDI_Status
-WDI_ProcessMgmtFrameLoggingInitRsp
+WDI_ProcessFWFrameLoggingInitRsp
 (
   WDI_ControlBlockType*  pWDICtx,
   WDI_EventInfoType*     pEventData
 )
 {
-  tMgmtLoggingInitResp          halRsp;
-  WDI_MgmtLoggingInitRspCb      wdiMgmtFrameLoggingInitRspCb;
-  WDI_MgmtLoggingRspParamType   wdiMgmtFrameLoggingRsp;
+  tFWLoggingInitResp              halRsp;
+  WDI_FWLoggingInitRspCb          wdiFWFrameLoggingInitRspCb;
+  WDI_FWLoggingInitRspParamType   wdiFWLogginginitRsp;
 
   VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
                   "%s: %d Enter",__func__, __LINE__);
@@ -34404,24 +34457,91 @@
      WDI_ASSERT(0);
      return WDI_STATUS_E_FAILURE;
   }
-  wdiMgmtFrameLoggingInitRspCb = (WDI_MgmtLoggingInitRspCb)pWDICtx->pfncRspCB;
+  wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
 
   /*-------------------------------------------------------------------------
     Extract response and send it to UMAC
   -------------------------------------------------------------------------*/
   wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
 
-  wdiMgmtFrameLoggingRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
+  wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
 
   /*Notify UMAC*/
-  wdiMgmtFrameLoggingInitRspCb( &wdiMgmtFrameLoggingRsp,
-                                pWDICtx->pRspCBUserData);
+  wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
 
   return WDI_STATUS_SUCCESS;
 }
 
+WDI_Status
+WDI_ProcessFWLoggingDXEdoneInd
+(
+  WDI_ControlBlockType*  pWDICtx,
+  WDI_EventInfoType*     pEventData
+)
+{
+  wpt_uint8*  pSendBuffer = NULL;
+  wpt_uint16  usDataOffset = 0;
+  wpt_uint16  usSendSize = 0;
+  WDI_FWLoggingDXEdoneIndInfoType *pwdiFWLoggingDXEdoneInd;
+  tFWLoggingDxeDoneInd  *FWLoggingDxeDoneIndParams;
+  WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
+
+
+  /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+  WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
+               "%s", __func__);
+
+  /*-------------------------------------------------------------------------
+    Sanity check
+  -------------------------------------------------------------------------*/
+  if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
+  {
+      WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
+             "%s: Invalid parameters", __func__);
+      WDI_ASSERT(0);
+      return WDI_STATUS_E_FAILURE;
+  }
+  pwdiFWLoggingDXEdoneInd =
+                     (WDI_FWLoggingDXEdoneIndInfoType*)pEventData->pEventData;
+  /*-----------------------------------------------------------------------
+    Get message buffer
+  -----------------------------------------------------------------------*/
+
+  if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
+                                     WDI_FW_LOGGING_DXE_DONE_IND,
+                                      sizeof(tHalRtsCtsHtvhtIndParams),
+                          &pSendBuffer, &usDataOffset, &usSendSize))||
+       ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
+  {
+      WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
+              "Unable to get send buffer in RTS CTS ind %p ",
+               pEventData);
+      WDI_ASSERT(0);
+      return WDI_STATUS_E_FAILURE;
+  }
+  FWLoggingDxeDoneIndParams =
+           (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
+
+  wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
+                 &pwdiFWLoggingDXEdoneInd->logBuffAddress, MAX_NUM_OF_BUFFER *
+                 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
+  FWLoggingDxeDoneIndParams->status= pwdiFWLoggingDXEdoneInd->status;
+  wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
+                 &pwdiFWLoggingDXEdoneInd->logBuffLength, MAX_NUM_OF_BUFFER *
+                 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
+
+  pWDICtx->pReqStatusUserData = NULL;
+  pWDICtx->pfncRspCB = NULL;
+  /*-------------------------------------------------------------------------
+    Send FW_LOGGING_DXE_DONE_IND Indication to HAL
+  -------------------------------------------------------------------------*/
+  wdiStatus =  WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
+  return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
+}
+
 /**
- @brief Process MgmtLoggingInit Request
+ @brief Process FWLoggingInit Request
 
  @param  pWDICtx:         pointer to the WLAN DAL context
          pEventData:      pointer to the event information structure
@@ -34430,19 +34550,19 @@
  @return Result of the function call
 */
 WDI_Status
-WDI_ProcessMgmtLoggingInitReq
+WDI_ProcessFWLoggingInitReq
 (
   WDI_ControlBlockType*  pWDICtx,
   WDI_EventInfoType*     pEventData
 )
 {
-    WDI_MgmtLoggingInitReqInfoType*    wdiMgmtLoggingInitReq;
+    WDI_FWLoggingInitReqInfoType*      wdiFWLoggingInitReq;
     wpt_uint8*                         pSendBuffer  = NULL;
     wpt_uint16                         usDataOffset = 0;
     wpt_uint16                         usSendSize   = 0;
     WDI_Status                         wdiStatus;
-    tHalMgmtLoggingInitReqMsg          halMgmtLoggingInitReq;
-    WDI_MgmtLoggingInitRspCb           wdiMgmtLoggingInitRspCb;
+    tHalFWLoggingInitReqMsg            halFWLoggingInitReq;
+    WDI_FWLoggingInitRspCb             wdiFWLoggingInitRspCb;
 
 
     VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
@@ -34459,18 +34579,18 @@
         WDI_ASSERT(0);
         return WDI_STATUS_E_FAILURE;
     }
-    wdiMgmtLoggingInitReq =
-                     (WDI_MgmtLoggingInitReqInfoType *)pEventData->pEventData;
+    wdiFWLoggingInitReq =
+                     (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
 
     /*-----------------------------------------------------------------------
       Get message buffer
       -----------------------------------------------------------------------*/
     if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
-                    WDI_MGMT_LOGGING_INIT_REQ,
-                    sizeof(halMgmtLoggingInitReq.tMgmtLoggingInitReqParams),
+                    WDI_FW_LOGGING_INIT_REQ,
+                    sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
                     &pSendBuffer, &usDataOffset, &usSendSize))||
             (usSendSize < (usDataOffset +
-            sizeof(halMgmtLoggingInitReq.tMgmtLoggingInitReqParams))))
+            sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
     {
         WPAL_TRACE( eWLAN_MODULE_DAL_CTRL,  eWLAN_PAL_TRACE_LEVEL_FATAL,
                 "Unable to get send buffer in Process Mgmt Logging Init Req");
@@ -34478,27 +34598,33 @@
         return WDI_STATUS_E_FAILURE;
     }
 
-    halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.enableFlag=
-                                    wdiMgmtLoggingInitReq->enableFlag;
-    halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.frameSize=
-                                    wdiMgmtLoggingInitReq->frameSize;
-    halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.frameType=
-                                    wdiMgmtLoggingInitReq->frameType;
-    halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.bufferMode=
-                                    wdiMgmtLoggingInitReq->bufferMode;
+    halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
+                                    wdiFWLoggingInitReq->enableFlag;
+    halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
+                                    wdiFWLoggingInitReq->frameSize;
+    halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
+                                    wdiFWLoggingInitReq->frameType;
+    halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
+                                    wdiFWLoggingInitReq->bufferMode;
+    halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
+                                    wdiFWLoggingInitReq->continuousFrameLogging;
+    halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
+                                    wdiFWLoggingInitReq->minLogBufferSize;
+    halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
+                                    wdiFWLoggingInitReq->maxLogBufferSize;
 
-    wdiMgmtLoggingInitRspCb   = (WDI_MgmtLoggingInitRspCb)pEventData->pCBfnc;
+    wdiFWLoggingInitRspCb   = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
 
     wpalMemoryCopy( pSendBuffer+usDataOffset,
-                    &halMgmtLoggingInitReq.tMgmtLoggingInitReqParams,
-                    sizeof(halMgmtLoggingInitReq.tMgmtLoggingInitReqParams));
+                    &halFWLoggingInitReq.tFWLoggingInitReqParams,
+                    sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
 
     /*-------------------------------------------------------------------------
       Send Mgmt Logging Init Request to HAL
       ------------------------------------------------------------------------*/
     wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
-                             wdiMgmtLoggingInitRspCb, pEventData->pUserData,
-                             WDI_MGMT_LOGGING_INIT_RSP);
+                             wdiFWLoggingInitRspCb, pEventData->pUserData,
+                             WDI_FW_LOGGING_INIT_RSP);
 
     return  wdiStatus;
 }