diff --git a/simplicity_sdk_2024.12.0/protocol/openthread/platform-abstraction/efr32/flash.c b/simplicity_sdk_2024.12.0/protocol/openthread/platform-abstraction/efr32/flash.c
index 38216bc..da504de 100644
--- a/simplicity_sdk_2024.12.0/protocol/openthread/platform-abstraction/efr32/flash.c
+++ b/simplicity_sdk_2024.12.0/protocol/openthread/platform-abstraction/efr32/flash.c
@@ -119,13 +119,11 @@ void otPlatFlashRead(otInstance *aInstance, uint8_t aSwapIndex, uint32_t aOffset
     OPENTHREAD_CONFIG_MLE_MAX_CHILDREN // Indexed key types are only supported for kKeyChildInfo (=='child table').
 #define ENUM_NVM3_KEY_LIST_SIZE 4      // List size used when enumerating nvm3 keys.
 
-static otError          addSetting(otInstance *aInstance, uint16_t aKey, const uint8_t *aValue, uint16_t aValueLength);
-static nvm3_ObjectKey_t makeNvm3ObjKey(uint16_t otSettingsKey, int index, uint8_t iid);
+static otError          addSetting(uint16_t aKey, const uint8_t *aValue, uint16_t aValueLength);
+static nvm3_ObjectKey_t makeNvm3ObjKey(uint16_t otSettingsKey, int index);
 static otError          mapNvm3Error(Ecode_t nvm3Res);
 static bool             nvmOpenedByOT;
 
-extern uint8_t otPlatMultipanInstanceToIid(otInstance *aInstance);
-
 void otPlatSettingsInit(otInstance *aInstance, const uint16_t *aSensitiveKeys, uint16_t aSensitiveKeysLength)
 {
     OT_UNUSED_VARIABLE(aInstance);
@@ -183,11 +181,9 @@ otError otPlatSettingsGet(otInstance *aInstance, uint16_t aKey, int aIndex, uint
     otError  err;
     uint16_t valueLength = 0;
 
-    uint8_t iid = otPlatMultipanInstanceToIid(aInstance) - 1;
-
     otEXPECT_ACTION(sl_ot_rtos_task_can_access_pal(), err = OT_ERROR_REJECTED);
 
-    nvm3_ObjectKey_t nvm3Key  = makeNvm3ObjKey(aKey, 0, iid); // The base nvm3 key value.
+    nvm3_ObjectKey_t nvm3Key  = makeNvm3ObjKey(aKey, 0); // The base nvm3 key value.
     bool             idxFound = false;
     int              idx      = 0;
     err                       = OT_ERROR_NOT_FOUND;
@@ -199,7 +195,7 @@ otError otPlatSettingsGet(otInstance *aInstance, uint16_t aKey, int aIndex, uint
                                          keys,
                                          ENUM_NVM3_KEY_LIST_SIZE,
                                          nvm3Key,
-                                         makeNvm3ObjKey(aKey, NUM_INDEXED_SETTINGS, iid));
+                                         makeNvm3ObjKey(aKey, NUM_INDEXED_SETTINGS));
         for (size_t i = 0; i < objCnt; ++i)
         {
             nvm3Key = keys[i];
@@ -266,7 +262,7 @@ otError otPlatSettingsSet(otInstance *aInstance, uint16_t aKey, const uint8_t *a
     if ((err == OT_ERROR_NONE) || (err == OT_ERROR_NOT_FOUND))
     {
         // Add new setting object (i.e. 'index0' of the key).
-        err = addSetting(aInstance, aKey, aValue, aValueLength);
+        err = addSetting(aKey, aValue, aValueLength);
         SuccessOrExit(err);
     }
 
@@ -281,7 +277,7 @@ otError otPlatSettingsAdd(otInstance *aInstance, uint16_t aKey, const uint8_t *a
 
     otEXPECT_ACTION(sl_ot_rtos_task_can_access_pal(), error = OT_ERROR_REJECTED);
 
-    error = addSetting(aInstance, aKey, aValue, aValueLength);
+    error = addSetting(aKey, aValue, aValueLength);
 
 exit:
     return error;
@@ -294,10 +290,10 @@ otError otPlatSettingsDelete(otInstance *aInstance, uint16_t aKey, int aIndex)
     // (Repeatedly enumerates a list of matching keys from the nvm3 until the
     // required index is found).
 
-    uint8_t iid = otPlatMultipanInstanceToIid(aInstance) - 1;
+    OT_UNUSED_VARIABLE(aInstance);
 
     otError          err;
-    nvm3_ObjectKey_t nvm3Key  = makeNvm3ObjKey(aKey, 0, iid); // The base nvm3 key value.
+    nvm3_ObjectKey_t nvm3Key  = makeNvm3ObjKey(aKey, 0); // The base nvm3 key value.
     bool             idxFound = false;
     int              idx      = 0;
     err                       = OT_ERROR_NOT_FOUND;
@@ -312,7 +308,7 @@ otError otPlatSettingsDelete(otInstance *aInstance, uint16_t aKey, int aIndex)
                                          keys,
                                          ENUM_NVM3_KEY_LIST_SIZE,
                                          nvm3Key,
-                                         makeNvm3ObjKey(aKey, NUM_INDEXED_SETTINGS, iid));
+                                         makeNvm3ObjKey(aKey, NUM_INDEXED_SETTINGS));
         for (size_t i = 0; i < objCnt; ++i)
         {
             nvm3Key = keys[i];
@@ -356,7 +352,7 @@ void otPlatSettingsWipe(otInstance *aInstance)
     // Note- any OT User nvm3 objects in the OT nvm3 area are NOT be erased.
     for (uint16_t aKey = 0; aKey < 8; ++aKey)
     {
-        otPlatSettingsDelete(aInstance, aKey, -1);
+        otPlatSettingsDelete(NULL, aKey, -1);
     }
 
 exit:
@@ -365,13 +361,12 @@ exit:
 
 // Local functions..
 
-static otError addSetting(otInstance *aInstance, uint16_t aKey, const uint8_t *aValue, uint16_t aValueLength)
+static otError addSetting(uint16_t aKey, const uint8_t *aValue, uint16_t aValueLength)
 {
     // Helper function- writes input buffer data to a NEW nvm3 object.
     // nvm3 object is created at the first available Key + index.
 
     otError err;
-    uint8_t iid = otPlatMultipanInstanceToIid(aInstance) - 1;
 
     if ((aValueLength == 0) || (aValue == NULL))
     {
@@ -382,7 +377,7 @@ static otError addSetting(otInstance *aInstance, uint16_t aKey, const uint8_t *a
         for (int idx = 0; idx <= NUM_INDEXED_SETTINGS; ++idx)
         {
             nvm3_ObjectKey_t nvm3Key;
-            nvm3Key = makeNvm3ObjKey(aKey, idx, iid);
+            nvm3Key = makeNvm3ObjKey(aKey, idx);
 
             uint32_t objType;
             size_t   objLen;
@@ -403,9 +398,9 @@ static otError addSetting(otInstance *aInstance, uint16_t aKey, const uint8_t *a
     return err;
 }
 
-static nvm3_ObjectKey_t makeNvm3ObjKey(uint16_t otSettingsKey, int index, uint8_t iid)
+static nvm3_ObjectKey_t makeNvm3ObjKey(uint16_t otSettingsKey, int index)
 {
-    return (NVM3KEY_DOMAIN_OPENTHREAD | (otSettingsKey << 8) | ((index & 0xFF) + iid * (OT_SETTINGS_KEY_BORDER_AGENT_ID + 1)));
+    return (NVM3KEY_DOMAIN_OPENTHREAD | (otSettingsKey << 8) | (index & 0xFF));
 }
 
 static otError mapNvm3Error(Ecode_t nvm3Res)
diff --git a/simplicity_sdk_2024.12.0/protocol/openthread/platform-abstraction/efr32/radio.c b/simplicity_sdk_2024.12.0/protocol/openthread/platform-abstraction/efr32/radio.c
index 3f86b72..2fe93ca 100644
--- a/simplicity_sdk_2024.12.0/protocol/openthread/platform-abstraction/efr32/radio.c
+++ b/simplicity_sdk_2024.12.0/protocol/openthread/platform-abstraction/efr32/radio.c
@@ -109,8 +109,6 @@
 #include "sl_rail_util_ieee802154_fast_channel_switching_config.h"
 #endif // SL_CATALOG_RAIL_UTIL_IEEE802154_FAST_CHANNEL_SWITCHING_PRESENT
 
-//#define DEBUG_RADIO
-
 //------------------------------------------------------------------------------
 // Enums, macros and static variables
 
@@ -316,11 +314,6 @@ static otRadioIeInfo sTransmitIeInfo[RADIO_REQUEST_BUFFER_COUNT];
 #define CCA_THRESHOLD_UNINIT 127
 #define CCA_THRESHOLD_DEFAULT -75 // dBm  - default for 2.4GHz 802.15.4
 
-#if OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
-volatile bool tx_aborted[RADIO_REQUEST_BUFFER_COUNT] = { false, false};
-volatile bool tx_busy = false;
-#endif
-
 #define UNINITIALIZED_CHANNEL 0xFF
 
 static bool              sPromiscuous = false;
@@ -1629,12 +1622,7 @@ otError otPlatRadioSleep(otInstance *aInstance)
     OT_UNUSED_VARIABLE(aInstance);
     otError error = OT_ERROR_NONE;
 
-#if OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
-    if (getInternalFlag(FLAG_ONGOING_TX_DATA))
-      goto exit;
-#else
     otEXPECT_ACTION(!getInternalFlag(FLAG_ONGOING_TX_DATA), error = OT_ERROR_BUSY);
-#endif
 
     otLogInfoPlat("State=OT_RADIO_STATE_SLEEP");
     setInternalFlag(FLAG_SCHEDULED_RX_PENDING, false);
@@ -1677,6 +1665,7 @@ otError otPlatRadioReceive(otInstance *aInstance, uint8_t aChannel)
     otEXPECT_ACTION(sl_ot_rtos_task_can_access_pal(), error = OT_ERROR_REJECTED);
     otEXPECT_ACTION(!getInternalFlag(FLAG_ONGOING_TX_DATA) && sEnergyScanStatus != ENERGY_SCAN_STATUS_IN_PROGRESS,
                     error = OT_ERROR_INVALID_STATE);
+
     OT_UNUSED_VARIABLE(iid);
 #if FAST_CHANNEL_SWITCHING_SUPPORT && OPENTHREAD_CONFIG_MULTIPAN_RCP_ENABLE
     uint8_t index = efr32GetPanIndexFromIid(iid);
@@ -1762,40 +1751,12 @@ otError otPlatRadioTransmit(otInstance *aInstance, otRadioFrame *aFrame)
     int8_t  txPower = sl_get_tx_power_for_current_channel(aInstance);
     uint8_t iid     = efr32GetIidFromInstance(aInstance);
 
-#if OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
-
-    CORE_DECLARE_IRQ_STATE;
-    CORE_ENTER_ATOMIC();
-
-    /* Check if a transmit is already ongoing */
-    if (tx_busy)
-    {
-      otPlatRadioTxStarted(aInstance, aFrame);
-      tx_aborted[iid - 1] = true;
-#ifdef DEBUG_RADIO
-      otLogWarnPlat("RADIOTX ABORT\n", iid);
-#endif
-    }
-    tx_busy = true;
-
-    CORE_EXIT_ATOMIC();
-
-    if (tx_aborted[iid - 1])
-      goto exit;
-
-#ifdef DEBUG_RADIO
-    otLogWarnPlat("RADIOTX %d", iid);
-#endif
-
-#endif
-
     // sTransmitBuffer's index 0 corresponds to host 1 i.e. iid 1 and reason is,
     // iid zero is reserved for broadcast frames in multipan case.
     uint8_t txBufIndex = iid ? (iid - 1) : 0;
 
     otEXPECT_ACTION(sl_ot_rtos_task_can_access_pal(), error = OT_ERROR_REJECTED);
 
-
 #if OPENTHREAD_CONFIG_MULTIPAN_RCP_ENABLE
     // Accept GP packets even if radio is not in required state.
     if ((sl_gp_intf_get_state() != SL_GP_STATE_SEND_RESPONSE) && sl_gp_intf_should_buffer_pkt(aInstance, aFrame, false))
@@ -2102,10 +2063,6 @@ otRadioFrame *otPlatRadioGetTransmitBuffer(otInstance *aInstance)
     otEXPECT(sl_ot_rtos_task_can_access_pal());
 
 #if OPENTHREAD_CONFIG_MULTIPAN_RCP_ENABLE
-#if OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
-    index = otPlatMultipanInstanceToIid(aInstance) - 1;
-#endif
-    /*
     for (index = 0; index < OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_NUM; index++)
     {
         if (sInstances[index] == aInstance || sInstances[index] == NULL)
@@ -2113,7 +2070,6 @@ otRadioFrame *otPlatRadioGetTransmitBuffer(otInstance *aInstance)
             break;
         }
     }
-    */
 #endif // OPENTHREAD_CONFIG_MULTIPAN_RCP_ENABLE
 
     aRadioFrame = &sTransmitBuffer[index].frame;
@@ -3423,9 +3379,6 @@ static void processNextRxPacket(otInstance *aInstance)
     {
 #if OPENTHREAD_CONFIG_MULTIPAN_RCP_ENABLE
         instance = otPlatMultipanIidToInstance(interfaceId);
-#ifdef DEBUG_RADIO
-        otLogWarnPlat("RX iid %d, 0x%x", interfaceId, instance);
-#endif
 #else
         instance = aInstance;
 #endif
@@ -3483,28 +3436,6 @@ static void processTxComplete(otInstance *aInstance)
     otError       txStatus;
     otRadioFrame *ackFrame = NULL;
 
-#if OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
-  uint8_t iid = otPlatMultipanInstanceToIid(aInstance) - 1;
-
-  CORE_DECLARE_IRQ_STATE;
-  CORE_ENTER_ATOMIC();
-
-  /* Check first if a TX has bee aborted because Radio was already transmitting */
-  if(tx_aborted[iid] && !getInternalFlag(FLAG_ONGOING_TX_DATA))
-  {
-    tx_aborted[iid] = false;
-#ifdef DEBUG_RADIO
-    otLogWarnPlat("RADIOTX DONE ABORT %d 11", iid);
-#endif
-    otPlatRadioTxDone(otPlatMultipanIidToInstance(iid + 1),
-                      &sTransmitBuffer[iid].frame,
-                      ackFrame,
-                      OT_ERROR_ABORT);
-  }
-
-  CORE_EXIT_ATOMIC();
-#endif
-
     if (getInternalFlag(RADIO_TX_EVENTS))
     {
         if (getInternalFlag(EVENT_TX_SUCCESS))
@@ -3557,18 +3488,6 @@ static void processTxComplete(otInstance *aInstance)
             sCurrentTxPacket->frame.mInfo.mTxInfo.mTxDelayBaseTime = 0;
             sCurrentTxPacket->frame.mInfo.mTxInfo.mTxDelay         = 0;
 #if OPENTHREAD_CONFIG_MULTIPAN_RCP_ENABLE
-#if OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
-#ifdef DEBUG_RADIO
-            otLogWarnPlat("RADIOTX DONE %d %d", sCurrentTxPacket->iid, txStatus);
-#endif
-
-            CORE_DECLARE_IRQ_STATE;
-            CORE_ENTER_ATOMIC();
-
-            tx_busy = false;
-
-            CORE_EXIT_ATOMIC();
-#endif
             otPlatRadioTxDone(otPlatMultipanIidToInstance(sCurrentTxPacket->iid),
                               &sCurrentTxPacket->frame,
                               ackFrame,
