Messages in this thread | | | Date | Tue, 14 Nov 2023 23:13:53 +0100 | From | Andrew Lunn <> | Subject | Re: [PATCH] net: stmmac: fix FPE events losing |
| |
On Tue, Nov 14, 2023 at 11:07:34AM +0000, Jianheng Zhang wrote: > The 32-bit access of register MAC_FPE_CTRL_STS may clear the FPE status > bits unexpectedly. Use 8-bit access for MAC_FPE_CTRL_STS control bits to > avoid unexpected access of MAC_FPE_CTRL_STS status bits that can reduce > the FPE handshake retries. > > The bit[19:17] of register MAC_FPE_CTRL_STS are status register bits. > Those bits are clear on read (or write of 1 when RCWE bit in > MAC_CSR_SW_Ctrl register is set). Using 32-bit access for > MAC_FPE_CTRL_STS control bits makes side effects that clear the status > bits. Then the stmmac interrupt handler missing FPE event status and > leads to FPE handshake failure and retries.
Is it possible to call the core of stmmac_fpe_irq_status() to extract the information from these bits and then call stmmac_fpe_event_status()?
Alternatively, can you actually set RCWE in MAC_CSR_SW_Ctrl and add a mask to dwmac5_fpe_configure() etc so they don't write 1 to these bits? That seems safer than assuming 8 bit reads work.
Andrew
| |