jerpelea opened a new pull request, #20264:
URL: https://github.com/apache/nuttx/pull/20264

   ## Summary
   
   stm32_c22_read() and stm32_c22_write() waited for the MACMDIOAR busy bit 
with up_mdelay(5) between checks. A Clause 22 frame takes about 30 us, so the 
first check always sees the bus busy and every PHY register access costs a 5 ms 
busy-wait, roughly 150 times the transfer.
   
   stm32_phyinit() waits for link-up with PHY_RETRY_TIMEOUT (6552) MSR reads. 
With no cable attached that is 33 s of CPU spent in up_mdelay() inside ifup, 
with the network lock held: on an STM32H753 the netinit thread pinned the core 
at 44% for the first 65 s after boot and every socket operation on other 
threads blocked until it gave up. Before the MDIO bus refactor, stm32_phyread() 
polled the busy bit in a tight loop.
   
   Poll every 10 us instead, with the timeout expressed in microseconds so the 
total bound stays at 10 ms, and report the timeout from the result rather than 
the loop counter so a transfer that completes on the last iteration is not 
logged as timed out.
   
   ## Impact
   
   RELEASE
   
   ## Testing
   
   CI


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to