--- ./source/private_module/bond/msc_port_bond.c	2019-06-24 09:48:55.488962597 +0000
+++ ./source/private_module/bond/msc_port_bond.c.hotpatch	2020-01-07 07:45:12.693439000 +0000
@@ -2286,26 +2286,18 @@
         BondPortInfo->BondPortMac[5]);
     return B_FALSE;  
 }
-
-/*****************************************************************************
-   : MSC_DoUpdateBondMac
-   : лbondڵmac
-   : BoardType ǰoutĽӿڿinĶ˿ڵİ
-             BoardId ǰoutĽӿڿinĶ˿ڵİid
-             BondPortInfo 󶨿
-   : 
-   ֵ  : 
- ޸ʷ      :
-  1.       : 2016-01-27
-           : z00251534
-    ޸   : ɺ
-*****************************************************************************/
 OSP_VOID MSC_DoUpdateBondMac(OSP_U32 BoardType,
     OSP_U32 BoardId, DMI_BOND_PORT_LIST_S* BondPortInfo)
 {
+    #define IP_SET_CMD  "ip link set"
+    #define ADDR   "address"
+    
     OSP_U32 i;
+    OSP_U32 Result = RETURN_ERROR;
     DMI_BOND_PORT_INFO_S* BondPort = NULL;
-
+    OSP_CHAR ShellCmd[SHELL_CMD_MAX_LEN] = "";
+    OSP_CHAR EthNameBase[ETH_NAME_LEN] = {0};
+    
     DRV_ASSERT(NULL != BondPortInfo, return);
     
     BondPort = &(BondPortInfo->BondPort);
@@ -2318,23 +2310,33 @@
             /*outĿinĶ˿ڲλͬ*/
             continue;
         }
-
         /*λĳԱ*/
         if (B_FALSE == MSC_CheckMacIsZero(BondPortInfo->MemberInfo[i].MemberMac))
         {
             /*macЧ*/
             continue;
         }
-
         if (B_FALSE == MSC_CheckPortExist(BondPort->MemberList[i]))
         {
             /*˿dplout*/
             continue;
         }
+        OSAL_MemSet_s(ShellCmd, sizeof(ShellCmd), 0, sizeof(ShellCmd));
+        OSAL_MemSet_s(EthNameBase, sizeof(EthNameBase), 0, sizeof(EthNameBase));
+        (OSP_VOID)MSC_CommonFuntionGetEtherName(BondPortInfo->BondPort.BondId, EthNameBase);
 
+        OSAL_snprintf_s(ShellCmd, SHELL_CMD_MAX_LEN, SHELL_CMD_MAX_LEN - 1, "%s %s %s %02x:%02x:%02x:%02x:%02x:%02x &>/dev/kmsg",
+            IP_SET_CMD, EthNameBase, ADDR,                 
+                BondPortInfo->MemberInfo[i].MemberMac[0], 
+                BondPortInfo->MemberInfo[i].MemberMac[1], 
+                BondPortInfo->MemberInfo[i].MemberMac[2], 
+                BondPortInfo->MemberInfo[i].MemberMac[3], 
+                BondPortInfo->MemberInfo[i].MemberMac[4], 
+                BondPortInfo->MemberInfo[i].MemberMac[5]); 
+        DMI_LOG(DBG, 11191, "set mac cmd(%s).",ShellCmd); 
+        Result = OSAL_Execute(ShellCmd);
         /*ð󶨿ڵmacos*/
-        if (RETURN_OK != DRV_SetMacAddr(BondPortInfo->BondPort.BondId, 
-            BondPortInfo->MemberInfo[i].MemberMac))
+        if (RETURN_OK != Result)
         {
             /*ʧܣأԱڵmac*/
             DMI_LOG_LMT(INFO, 11191, 3, SECONDS_PER_MINUTE, 
@@ -2355,14 +2357,12 @@
             return;
         }
     }
-
     /*лʧ*/
     DMI_LOG_LMT(INFO, 11191, 3, SECONDS_PER_MINUTE, 
         "Bond port(0x%x) can not update mac, id(%u),type(%u).",
         BondPort->BondId, BoardId, BoardType);
     return;  
 }
-
 /*****************************************************************************
    : MSC_UpdateBondPortMac
    : 翨󶨳Ϊͻ
