diff --git a/wilink_6_1/config/tiwlan.ini b/wilink_6_1/config/tiwlan.ini
index d0656cf..5d0b095 100644
--- a/wilink_6_1/config/tiwlan.ini
+++ b/wilink_6_1/config/tiwlan.ini
@@ -115,7 +115,7 @@
 #   Byte #6: Console
 #############################################################
 
-ReportSeverityTable = "0001101"
+ReportSeverityTable = 00001101
 
 BeaconReceiveTime = 50
 
diff --git a/wilink_6_1/platforms/os/common/src/osRgstry.c b/wilink_6_1/platforms/os/common/src/osRgstry.c
index 94d315f..924b8b3 100644
--- a/wilink_6_1/platforms/os/common/src/osRgstry.c
+++ b/wilink_6_1/platforms/os/common/src/osRgstry.c
@@ -1003,13 +1003,11 @@
     static    TI_UINT8 defRxRssiAndProcessCompensation_2_4G[] = "ec,f6,00,0c,18,f8,fc,00,08,10,f0,f8,00,0a,14";
     static    TI_UINT8 tmpRssiTableSize = RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE;
     static    TI_UINT8 staRssiAndProcessCompensation[RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE] ;
-    static    TI_UINT8 RssiSize = 113;
+    static    TI_UINT8 RssiSize = 44;
 
     /* defaults values for CoexActivity table*/
     /* example: WLAN(0), BT_VOICE(0), defPrio(20), raisePrio(25), minServ(0), maxServ(1ms) */
     static    TI_UINT8 defCoexActivityTable[] = ""; /* Sample "01 00 14 19 0000 0001 " */
-    static    TI_UINT8 strCoexActivityTable[COEX_ACTIVITY_TABLE_MAX_NUM*COEX_ACTIVITY_TABLE_SIZE] ;
-    static    TI_UINT8 strCoexActivitySize = 0;
 
     static    TI_UINT32 filterOffset = 0;
     static    char filterMask[16];
@@ -1023,7 +1021,7 @@
     static    TI_UINT8   ScanControlTable5Tmp[2 * NUM_OF_CHANNELS_5];
     static    TI_UINT8   ScanControlTable24Def[2* NUM_OF_CHANNELS_24] = "FFFFFFFFFFFFFFFFFFFFFFFFFFFF";
     static    TI_UINT8   ScanControlTable5Def[2 * NUM_OF_CHANNELS_5] = "FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000000000000000000000000000000000000000000000000000000000000000000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000000000000000FF000000FF000000FF000000FF000000FF000000000000000000000000000000";
-    static    TI_UINT8   reportSeverityTableDefaults[REPORT_SEVERITY_MAX] = "0001101";
+    static    TI_UINT8   reportSeverityTableDefaults[REPORT_SEVERITY_MAX+1] = "00001101";
     static    TI_UINT16  reportSeverityTableLen;
 
     static    TI_UINT32  uWiFiMode = 0;
@@ -2216,12 +2214,21 @@
                             (TI_UINT8*)(&p->twdInitParams.tGeneral.halCoexActivityTable.numOfElements) );
 
     /* Read the CoexActivity table string */
-    regReadStringParameter(pAdapter, &STRCoexActivityTable ,
+    {
+        TI_UINT8 *strCoexActivityTable;
+        TI_UINT8 strCoexActivitySize = 0;
+
+        strCoexActivityTable = os_memoryAlloc(pAdapter, COEX_ACTIVITY_TABLE_MAX_NUM*COEX_ACTIVITY_TABLE_SIZE);
+        if (strCoexActivityTable) {
+            regReadStringParameter(pAdapter, &STRCoexActivityTable ,
                             (TI_INT8*)(defCoexActivityTable), strCoexActivitySize,
                             (TI_UINT8*)strCoexActivityTable, &strCoexActivitySize);
 
-    /* Convert the CoexActivity table string */
-    regConvertStringtoCoexActivityTable(strCoexActivityTable , p->twdInitParams.tGeneral.halCoexActivityTable.numOfElements, &p->twdInitParams.tGeneral.halCoexActivityTable.entry[0] , strCoexActivitySize);
+            /* Convert the CoexActivity table string */
+            regConvertStringtoCoexActivityTable(strCoexActivityTable , p->twdInitParams.tGeneral.halCoexActivityTable.numOfElements, &p->twdInitParams.tGeneral.halCoexActivityTable.entry[0] , strCoexActivitySize);
+            os_memoryFree(pAdapter, strCoexActivityTable, COEX_ACTIVITY_TABLE_MAX_NUM*COEX_ACTIVITY_TABLE_SIZE);
+        }
+    }
 
     /*
     Power Manager
@@ -4990,24 +4997,23 @@
                      TI_UINT8               uParameterSize,
                      TI_BOOL                bHex)
 {
+    static CHAR Buffer[MAX_KEY_BUFFER_LEN];
     TI_UINT32 parameterIndex = 0;
     int myNumber;
 
     TI_UINT32 index;
     TI_UINT32 bufferSize = 0;
 
-    char tempBuffer[15];
+    char tempBuffer[16];
     char *pTempBuffer = tempBuffer;
     TI_UINT32 tempBufferIndex = 0;
 
     TI_BOOL isDigit;
     TI_BOOL numberReady;
     TI_BOOL isSign;
-    TI_BOOL    endOfLine;
+    TI_BOOL endOfLine;
 
     TI_UINT32 debugInfo = 0;
-
-    CHAR Buffer[MAX_KEY_BUFFER_LEN];
     TI_INT8* pBuffer = (TI_INT8*)&Buffer;
 
     regReadStringParameter(pAdapter,
@@ -5017,7 +5023,7 @@
                            (TI_UINT8*)pBuffer,
                            &bufferSize);
 
-    index=0;
+    index = 0;
     do { /* Parsing one line */
 
         isSign = TI_FALSE;
diff --git a/wilink_6_1/stad/src/Ctrl_Interface/DrvMain.c b/wilink_6_1/stad/src/Ctrl_Interface/DrvMain.c
index 03b5e76..2c624a9 100644
--- a/wilink_6_1/stad/src/Ctrl_Interface/DrvMain.c
+++ b/wilink_6_1/stad/src/Ctrl_Interface/DrvMain.c
@@ -1233,7 +1233,7 @@
     if (pDrvMain->eAction == eAction)
     {            
         TRACE0(pDrvMain->tStadHandles.hReport, REPORT_SEVERITY_CONSOLE, "Action is identical to last action!\n");
-        WLAN_OS_REPORT(("Action is identical to last action!\n"));
+        WLAN_OS_REPORT(("Action %d is identical to last action!\n", eAction));
         return TI_NOK;
     }
 
