Hi, I am not quite sure about from where you measured (and what is your phy config), but sending out 1000 bytes will take in theory about 800+ us at 10Mbps and 80+ us at 100Mbps, so you probably wouldn't want it to be synchronous (you'd like to be able to receive in full duplex at the same time when transmit happens). The ethernet driver uses the stm32h7 eth block's internal dma for sending. Other ethernet traffic, hubs, switches, the network cards.. may cause additional delays.
Handling the interrupt should be fast, but the actual completion happens in your thread (waking up from mutex), so this can be delayed by some higher priority thread running in your system. - Jukka S D kirjoitti tiistai 3. marraskuuta 2020: > Hello! > could you please help a nuttx newbie. > I'm using a stm32h7 for my project > I'm trying to communicate with "big" Linux machine via direct ethernet (UDP), > and I see relatively big delays for outgoing packets (with a 1000 bytes > payload). > I see that sendto is executed in about 120usecs, but the actual transmit is > seems to be executed much later, and I see the actual transmit completion > (interrupt) in about 100 more usecs later after return from sendto call. > > I spent a few days reading stm32_ethernet.c driver (and all the other stuff > it works with) and it seems the system is heavily asynchronous. > Could you please tell, Is there a way to send/receive data > immediately/synchronous if all I need a direct Ethernet connection to another > device (may be even with raw ethernet frames) ? > > Thanks! >