diff --git a/CORE/MAC/src/cfg/cfgProcMsg.c b/CORE/MAC/src/cfg/cfgProcMsg.c
index 6367552..13decaf 100644
--- a/CORE/MAC/src/cfg/cfgProcMsg.c
+++ b/CORE/MAC/src/cfg/cfgProcMsg.c
@@ -483,14 +483,14 @@
     tANI_U16    cfgId, valueLen, valueLenRoundedUp4;
     tANI_U32    value, result;
 
-    PELOG1(cfgLog(pMac, LOGW, FL("Rcvd cfg set request %d bytes"), length);)
+    PELOG1(cfgLog(pMac, LOG1, FL("Rcvd cfg set request %d bytes"), length);)
     //for (i=0; i<length/4; i++)
       //  PELOG2(cfgLog(pMac, LOG2, FL("[%2d] 0x%08x"), i, pParam[i]);)
 
     if (!pMac->cfg.gCfgStatus)
     {
         cfgId = (tANI_U16)sirReadU32N((tANI_U8*)pParam);
-        PELOG1(cfgLog(pMac, LOG1, FL("CFG not ready, param %d"), cfgId);)
+        PELOG1(cfgLog(pMac, LOGW, FL("CFG not ready, param %d"), cfgId);)
         pMac->cfg.gParamList[WNI_CFG_SET_CNF_RES] = WNI_CFG_NOT_READY;
         pMac->cfg.gParamList[WNI_CFG_SET_CNF_PID] = cfgId;
         if( fRsp )
@@ -550,8 +550,9 @@
                 {
                     if (valueLenRoundedUp4 > length)
                     {
-                        PELOGE(cfgLog(pMac, LOGE, FL("Invalid string length %d in set param %d (tot %d)"),
-                               valueLen, cfgId, length);)
+                        PELOGE(cfgLog(pMac, LOGE, FL("Invalid string length %d"
+                               "in set param %d (tot %d)"), valueLen,
+                                                       cfgId, length);)
                         result = WNI_CFG_INVALID_LEN;
                     }
                     else
diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index 831c06a..32295ad 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -585,7 +585,7 @@
       limHandleCFGparamUpdate do we want to update this? */
    if(wlan_cfgGetInt(pMac, WNI_CFG_SHORT_PREAMBLE, &val1) != eSIR_SUCCESS)
    {
-      limLog(pMac, LOGP, FL("cfg get short preamble failed"));
+      limLog(pMac, LOGE, FL("cfg get short preamble failed"));
       return eSIR_FAILURE;
    }
 
@@ -1646,7 +1646,7 @@
 
     if (i == LIM_PROT_STA_OVERLAP_CACHE_SIZE)
     {
-        PELOG1(limLog(pMac, LOG1, FL("Overlap cache is full"));)
+        PELOG1(limLog(pMac, LOGW, FL("Overlap cache is full"));)
     }
     else
     {
diff --git a/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c b/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c
index 6ac2f34..da3b18d 100644
--- a/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c
@@ -455,7 +455,8 @@
                         pMac, pBody, frameLen, pAssocRsp) == eSIR_FAILURE) 
     {
         vos_mem_free(pAssocRsp);
-        PELOGE(limLog(pMac, LOGE, FL("Parse error Assoc resp subtype %d, length=%d"), frameLen,subType);)
+        PELOGE(limLog(pMac, LOGE, FL("Parse error Assoc resp subtype %d,"
+                                   "length=%d"), frameLen,subType);)
         vos_mem_free(pBeaconStruct);
 
         return;
@@ -463,7 +464,7 @@
 
     if(!pAssocRsp->suppRatesPresent)
     {
-        PELOGE(limLog(pMac, LOGW, FL("assoc response does not have supported rate set"));)
+        PELOGE(limLog(pMac, LOGE, FL("assoc response does not have supported rate set"));)
         vos_mem_copy(&pAssocRsp->supportedRates,
                       &psessionEntry->rateSet, sizeof(tSirMacRateSet));
     }
@@ -625,7 +626,8 @@
         // Re/Association response was received
         // with invalid AID value
         // Log error
-        PELOGW(limLog(pMac, LOGW, FL("received Re/AssocRsp frame with invalid aid %X "),  pAssocRsp->aid);)
+        PELOGW(limLog(pMac, LOGE, FL("received Re/AssocRsp frame with"
+                                 "invalid aid %X"), pAssocRsp->aid);)
         mlmAssocCnf.resultCode = eSIR_SME_INVALID_ASSOC_RSP_RXED;
         mlmAssocCnf.protStatusCode = eSIR_MAC_UNSPEC_FAILURE_STATUS;
 
@@ -663,7 +665,7 @@
             tANI_U8 cnt = 0;
             if (pAssocRsp->tsmPresent)
             {
-                limLog(pMac, LOGW, "TSM IE Present in Reassoc Rsp");
+                limLog(pMac, LOG1, "TSM IE Present in Reassoc Rsp");
                 // Start the TSM  timer only if the TSPEC Ie is present in the reassoc rsp
                 if (pAssocRsp->tspecPresent) {
                     // Find the TSPEC IE with VO user priority
