Fix NUC472 Ethernet wrong INT status in RX_Action

pull/2590/head
cyliangtw 2016-08-25 15:06:52 +08:00 committed by 0xc0170
parent 68334bcf18
commit c65465fbfe
1 changed files with 6 additions and 6 deletions

View File

@ -252,15 +252,15 @@ void ETH_halt(void)
EMAC->CTL &= ~(EMAC_CTL_RXON_Msk | EMAC_CTL_TXON_Msk);
}
unsigned int m_status;
void EMAC_RX_IRQHandler(void)
{
unsigned int cur_entry, status;
status = EMAC->INTSTS & 0xFFFF;
EMAC->INTSTS = status;
if (status & EMAC_INTSTS_RXBEIF_Msk) {
m_status = EMAC->INTSTS & 0xFFFF;
EMAC->INTSTS = m_status;
if (m_status & EMAC_INTSTS_RXBEIF_Msk) {
// Shouldn't goes here, unless descriptor corrupted
printf("RX descriptor corrupted \r\n");
//return;
@ -275,7 +275,7 @@ void EMAC_RX_Action(void)
cur_entry = EMAC->CRXDSA;
if ((cur_entry == (u32_t)cur_rx_desc_ptr) && (!(status & EMAC_INTSTS_RDUIF_Msk))) // cur_entry may equal to cur_rx_desc_ptr if RDU occures
if ((cur_entry == (u32_t)cur_rx_desc_ptr) && (!(m_status & EMAC_INTSTS_RDUIF_Msk))) // cur_entry may equal to cur_rx_desc_ptr if RDU occures
break;
status = cur_rx_desc_ptr->status1;
@ -344,4 +344,4 @@ int ETH_link_ok()
if(mdio_read(CONFIG_PHY_ADDR, MII_BMSR) & BMSR_LSTATUS)
return 1;
return 0;
}
}