fjpanag opened a new issue, #8576:
URL: https://github.com/apache/nuttx/issues/8576

   While browsing the [STM32F4 reference 
manual](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwj9lIylrp_9AhWicPEDHRWTBKEQFnoECBYQAQ&url=https%3A%2F%2Fwww.st.com%2Fresource%2Fen%2Freference_manual%2Fdm00031020-stm32f405-415-stm32f407-417-stm32f427-437-and-stm32f429-439-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf&usg=AOvVaw2x8tbTRz8d9PfqXBk3qZ74),
 I noticed this note in page 1166:
   
   > **33.6.6 - Error response to DMA**
   > For any data transfer initiated by a DMA channel, if the slave replies 
with an error response,
   > that DMA stops all operations and updates the error bits and the fatal bus 
error bit in the
   > Status register (ETH_DMASR register). That DMA controller can resume 
operation only
   > after soft- or hard-resetting the peripheral and re-initializing the DMA.
   
   I checked the Ethernet driver, these errors are checked 
[here](https://github.com/apache/nuttx/blob/master/arch/arm/src/stm32/stm32_eth.c#L2036).
   
   However, there is no error handling at all!  
   The check is enabled only when `CONFIG_DEBUG_NET` is enabled, and only does 
some logging.
   
   This is not very good, and it can be related to a bug that I experience 
occasionally (the MAC dies completely).
   
   I am thinking that the best course of action would be to cause an `ifdown`.  
   Higher layers of the software will be able to detect this, and request a new 
`ifup`, effectively resetting the interface. Similar handling to simply 
disconnecting the cable, for example.
   
   How can the low-level driver cause such an event (without compromising the 
OS architecture)?  
   Or is there any suggestion of better handling this?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to