diff --git a/osi/core/core_common.c b/osi/core/core_common.c index 02d0199..cd13d89 100644 --- a/osi/core/core_common.c +++ b/osi/core/core_common.c @@ -193,6 +193,11 @@ nve32_t hw_set_speed(struct osi_core_priv_data *const osi_core, const nve32_t sp if (ret < 0) { goto fail; } + + value = osi_readla(osi_core, (nveu8_t *)osi_core->base + MGBE_MAC_IER); + /* Enable Link Status interrupt only after lane bring up success */ + value |= MGBE_IMR_RGSMIIIE; + osi_writela(osi_core, value, (nveu8_t *)osi_core->base + MGBE_MAC_IER); } fail: return ret; diff --git a/osi/core/mgbe_core.c b/osi/core/mgbe_core.c index 382ce95..701ef6d 100644 --- a/osi/core/mgbe_core.c +++ b/osi/core/mgbe_core.c @@ -1832,7 +1832,9 @@ static nve32_t mgbe_configure_mac(struct osi_core_priv_data *osi_core) #ifndef OSI_STRIPPED_LIB value |= (MGBE_IMR_TXESIE); #endif - value |= (MGBE_IMR_RGSMIIIE | MGBE_IMR_TSIE); + /* Clear link status interrupt and enable after lane bring up done */ + value &= ~MGBE_IMR_RGSMIIIE; + value |= MGBE_IMR_TSIE; osi_writela(osi_core, value, (nveu8_t *)osi_core->base + MGBE_MAC_IER); /* Enable common interrupt at wrapper level */