--- ./source/private_module/SRC/msc/msc_debug.c	2020-11-10 04:01:36.578501375 +0000
+++ ./source/private_module/SRC/msc/msc_debug.c.hotpatch	2021-02-24 09:42:47.998501375 +0000
@@ -5644,6 +5644,82 @@
     return Ret;
 }
 
+OSP_VOID MSC_SetEthPortErrorCodeRule(OSP_S32 Argc, OSP_CHAR *Argv[])
+{
+    OSP_S32 Result = RETURN_ERROR;
+    DMI_PORT_ERROR_CODE_S ErrorCodeRule = {0};
+    if (Argc != 5)
+    {
+        DBG_PrintBuf("Usage: msc setethporterrorcoderule\n"
+                     "      (eg:msc setethporterrorcoderule checkperiod checkthreshold checktime)\n");
+        return;
+    }
+    ErrorCodeRule.PortType = DRV_PROTOCOL_TYPE_ETH;
+    ErrorCodeRule.CheckPeriod = (OSP_U32)LVOS_StrToU64(Argv[2]);
+    ErrorCodeRule.CheckThreshold = (OSP_U32)LVOS_StrToU64(Argv[3]);
+    ErrorCodeRule.CheckTime = (OSP_U32)LVOS_StrToU64(Argv[4]);
+
+    
+    Result = OperatePort(SET_ERROR_CODE_RULE, (OSP_U64)0, 0, DRV_PROTOCOL_TYPE_ETH, &ErrorCodeRule, sizeof(DMI_PORT_ERROR_CODE_S));
+    if (RETURN_OK == Result)
+    {
+        DBG_PrintBuf("Command executed successfully.\n");
+    }
+    else
+    {
+        DBG_PrintBuf("Command executed unsuccessfully.\n");
+    }
+    return;
+}
+OSP_VOID MSC_GetEthPortErrorCodeRule(OSP_S32 Argc, OSP_CHAR *Argv[])
+{
+    OSP_S32 Result = RETURN_ERROR;
+    DMI_PORT_ERROR_CODE_S ErrorCodeRule = {0};
+    REFERNCE_VAR(Argv);
+    if (Argc != 2)
+    {
+        DBG_PrintBuf("Usage: msc getethporterrorcoderule\n"
+                     "      (eg:msc getethporterrorcoderule)\n");
+
+        return;
+    }
+    ErrorCodeRule.PortType = DRV_PROTOCOL_TYPE_ETH;
+    Result = OperatePort(GET_ERROR_CODE_RULE, (OSP_U64)0, 0, DRV_PROTOCOL_TYPE_ETH, &ErrorCodeRule, sizeof(DMI_PORT_ERROR_CODE_S));
+    if (RETURN_OK == Result)
+    {
+        DBG_PrintBuf("ethCheckPeriod     : %d\n", ErrorCodeRule.CheckPeriod);
+        DBG_PrintBuf("ethCheckThreshold  : %d\n", ErrorCodeRule.CheckThreshold);
+        DBG_PrintBuf("ethCheckTimes      : %d\n", ErrorCodeRule.CheckTime);
+        DBG_PrintBuf("Command executed successfully.\n");
+    }
+    else
+    {
+        DBG_PrintBuf("ethCheckPeriod     : %d\n", ErrorCodeRule.CheckPeriod);
+        DBG_PrintBuf("ethCheckThreshold  : %d\n", ErrorCodeRule.CheckThreshold);
+        DBG_PrintBuf("ethCheckTimes      : %d\n", ErrorCodeRule.CheckTime);
+        DBG_PrintBuf("Command executed unsuccessfully.\n");
+    }
+    return;
+}
+DMI_DEBUG_CMD_S g_MscDebugCmdTable_Hotpatch[] =
+{
+    {"nodeinfo", MSC_ShowNodeInfo},
+    {"cpuinfo", MSC_ShowCpuInfo},
+    {"dimminfo", MSC_ShowDIMMInfo},
+    {"bbuinfo", MSC_ShowBbuInfo},
+    {"intfinfo", MSC_ShowIntfInfo},
+    {"portcfgdb", MSC_ShowPortCfgDB},
+    {"showbondport", MSC_ShowBondPort},
+    {"showsnap", MSC_ShowSnapInfo},
+    {"vlaninfo", MSC_ShowVlanInfo},
+    {"lifinfo",  MSC_ShowLifInfo},
+    {"faninfo", MSC_ShowFanInfo},
+    {"powerinfo", MSC_ShowPowerInfo},
+    {"ctrlinfo", MSC_ShowCtrlBoardInfo},
+    {"setethporterrorcoderule", MSC_SetEthPortErrorCodeRule},
+    {"getethporterrorcoderule", MSC_GetEthPortErrorCodeRule},
+};
+OSP_U32 array_count = sizeof(g_MscDebugCmdTable_Hotpatch) / sizeof(DMI_DEBUG_CMD_S);
 #ifdef __cplusplus
 }
 #endif
--- ./source/private_module/SRC/common/debug.c	2020-11-10 04:01:36.742501375 +0000
+++ ./source/private_module/SRC/common/debug.c.hotpatch	2021-02-24 09:42:47.998501375 +0000
@@ -91,18 +91,9 @@
 /*****************************************************************************
      : DMI_DoDebugCmd
    : diagnoseִ
-   : CMD_TYPE_E Type
-             OSP_S32 Argc
-             OSP_CHAR *Argv[]
-   : 
-   ֵ  : OSP_VOID
-
- ޸ʷ      :
-  1.       : 20131019
-           : d90003911
-    ޸   : ɺ
-
 *****************************************************************************/
+extern DMI_DEBUG_CMD_S g_MscDebugCmdTable_Hotpatch[];
+extern OSP_U32 array_count;
 OSP_VOID DMI_DoDebugCmd(CMD_TYPE_E Type, OSP_S32 Argc, OSP_CHAR *Argv[])
 {
     OSP_U32 Index = 0;
@@ -115,7 +106,16 @@
         DBG_ShowUsageAndErrMsg(NULL);
         return ;
     }
-
+    if (Type == CMD_MSC ) {
+        for (Index = 0; Index < array_count; Index++) {
+            if( 0 == OSAL_StrNCmp(g_MscDebugCmdTable_Hotpatch[Index].Cmd, Argv[1], DMI_DEBUG_CMD_LEN) ) {
+                if(NULL != g_MscDebugCmdTable_Hotpatch[Index].DebugCmdFunc) {
+                    g_MscDebugCmdTable_Hotpatch[Index].DebugCmdFunc(Argc, Argv);
+                    return;
+                }
+            }
+        }
+    }
     DplCmdCnt = sizeof(g_DebugCmdTable[Type])/sizeof(DMI_DEBUG_CMD_S);
 
     for (Index = 0; Index < DplCmdCnt; Index++)
