if (!ndev->peer_sta)
                return NTB_LNK_STA_ACTIVE(ndev->cntl_sta);
 
+       if (ndev->peer_sta & AMD_LINK_UP_EVENT) {
+               ndev->peer_sta = 0;
+               return 1;
+       }
+
        /* If peer_sta is reset or D0 event, the ISR has
         * started a timer to check link status of hardware.
         * So here just clear status bit. And if peer_sta is
         */
        if (ndev->peer_sta & AMD_PEER_RESET_EVENT)
                ndev->peer_sta &= ~AMD_PEER_RESET_EVENT;
-       else if (ndev->peer_sta & AMD_PEER_D0_EVENT)
+       else if (ndev->peer_sta & (AMD_PEER_D0_EVENT | AMD_LINK_DOWN_EVENT))
                ndev->peer_sta = 0;
 
        return 0;
                break;
        case AMD_PEER_D3_EVENT:
        case AMD_PEER_PMETO_EVENT:
+       case AMD_LINK_UP_EVENT:
+       case AMD_LINK_DOWN_EVENT:
                amd_ack_smu(ndev, status);
 
                /* link down */
 
        AMD_PEER_D3_EVENT       = BIT(2),
        AMD_PEER_PMETO_EVENT    = BIT(3),
        AMD_PEER_D0_EVENT       = BIT(4),
+       AMD_LINK_UP_EVENT       = BIT(5),
+       AMD_LINK_DOWN_EVENT     = BIT(6),
        AMD_EVENT_INTMASK       = (AMD_PEER_FLUSH_EVENT |
                                AMD_PEER_RESET_EVENT | AMD_PEER_D3_EVENT |
-                               AMD_PEER_PMETO_EVENT | AMD_PEER_D0_EVENT),
+                               AMD_PEER_PMETO_EVENT | AMD_PEER_D0_EVENT |
+                               AMD_LINK_UP_EVENT | AMD_LINK_DOWN_EVENT),
 
        AMD_PMESTAT_OFFSET      = 0x480,
        AMD_PMSGTRIG_OFFSET     = 0x490,