-
Notifications
You must be signed in to change notification settings - Fork 8.1k
drivers: ethernet: eth_stm32 add tx async mode #93965
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
After adding the configuration, the performance has approached the level of other RTOS.
udp upload: 94.1Mbps/s |
2922b5c
to
965f601
Compare
|
For TCP, CONFIG_PICOLIBC_USE_MODULE=y has a significant impact on performance. Use nucleo_h743zi board with loopback: ``` before: tcp upload: 49.35 Mbps/s after: tcp upload: 56.52 Mbps/s ``` Use nucleo_h743zi board, default config: ``` before: tcp upload: 71.3Mbps/s tcp download: 75.11 Mbps/s after: tcp upload: 75.3Mbps/s tcp download: 94.39 Mbps/s ``` Use nucleo_h743zi board, with tx async mode zephyrproject-rtos#93965: ``` before: tcp upload: 71.3Mbps/s tcp download: 75.11 Mbps/s after: tcp upload: 92.9Mbps/s tcp download: 94.5Mbps/s ``` Signed-off-by: WenBin Zhang <[email protected]>
For TCP, CONFIG_PICOLIBC_USE_MODULE=y has a significant impact on performance. Use nucleo_h743zi board with loopback: ``` before: tcp upload: 49.35 Mbps/s after: tcp upload: 56.52 Mbps/s ``` Use nucleo_h743zi board, default config: ``` before: tcp upload: 71.3Mbps/s tcp download: 75.11 Mbps/s after: tcp upload: 75.3Mbps/s tcp download: 94.39 Mbps/s ``` Use nucleo_h743zi board, with tx async mode #93965: ``` before: tcp upload: 71.3Mbps/s tcp download: 75.11 Mbps/s after: tcp upload: 92.9Mbps/s tcp download: 94.5Mbps/s ``` Signed-off-by: WenBin Zhang <[email protected]>
For TCP, CONFIG_PICOLIBC_USE_MODULE=y has a significant impact on performance. Use nucleo_h743zi board with loopback: ``` before: tcp upload: 49.35 Mbps/s after: tcp upload: 56.52 Mbps/s ``` Use nucleo_h743zi board, default config: ``` before: tcp upload: 71.3Mbps/s tcp download: 75.11 Mbps/s after: tcp upload: 75.3Mbps/s tcp download: 94.39 Mbps/s ``` Use nucleo_h743zi board, with tx async mode zephyrproject-rtos#93965: ``` before: tcp upload: 71.3Mbps/s tcp download: 75.11 Mbps/s after: tcp upload: 92.9Mbps/s tcp download: 94.5Mbps/s ``` Signed-off-by: WenBin Zhang <[email protected]>
@Freey0 Do you plan to continue this PR? If yes, which would be nice, please rebase on to of latest driver version (which could be considered as stable) |
Now that the holiday is over, we will continue this pr |
598b79b
to
237779e
Compare
237779e
to
f36b61f
Compare
f36b61f
to
091ab90
Compare
@erwango Could you help conduct comprehensive testing on the farm? Thank you very much. |
091ab90
to
234da6d
Compare
234da6d
to
2c34e59
Compare
So tests are OK in the farm and I did manual testings with these series without touching at the zperf configuration:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some implementation comments, aside performance impact.
2c34e59
to
fd66010
Compare
@juickar Many thanks for conducting such thorough testing. I'm particularly interested in the TCP section. Since #94888 has been merged, CONFIG_PICOLIBC_USE_MODULE=y is now enabled throughout the zperf sampling. TCP performance ought to be better than described in the pr. Indeed, my local tests confirm this. I've updated the test commands I use. Might you share your test commands? Let's see where the discrepancies lie. |
fd66010
to
4830f1e
Compare
tx_int_sem serves solely as a signal indicator and does not require signal counting. Within eth_stm32_tx, the semaphore is reset each time a packet is transmitted. Upon receiving the transmission completion signal, the function exits. Signal counting is unnecessary. Change to a binary semaphore. Signed-off-by: WenBin Zhang <[email protected]>
Enable TX transmission asynchronous mode to enhance performance Tested on the nucleo_h743zi board using samples/net/zperf west build -b nucleo_h743zi/stm32h743xx samples/net/zperf/ --pristine -- -DCONFIG_NET_CONFIG_MY_IPV4_ADDR=\"192.168.1.199\" upload cmd: ``` //linux iperf -s -l 1K -p 5001 iperf -s -l 1K -p 5002 -u //shell zperf tcp upload 192.168.1.109 5001 10 1K zperf udp upload 192.168.1.109 5002 10 1K 300M ``` download cmd: ``` //shell zperf tcp download 5001 192.168.1.199 zperf ucp download 5002 192.168.1.199 //linux iperf -l 1K -c 192.168.1.199 -p 5001 iperf -l 1K -c 192.168.1.199 -p 5002 -u ``` before: udp upload: 73.5Mbps/s tcp upload: 71.3Mbps/s udp download: 93.9Mbps/s tcp download: 70.5Mbps/s after: udp upload: 92.2Mbps/s tcp upload: 78.1Mbps/s udp download: 93.7Mbps/s tcp download: 75.2Mbps/s Signed-off-by: WenBin Zhang <[email protected]>
enable STM32 etc_tx_async mode for testing in CI Signed-off-by: WenBin Zhang <[email protected]>
4830f1e
to
8c71b50
Compare
|
Uh oh!
There was an error while loading. Please reload this page.