RT-Thread / RT-Thread/rt-thread
drv_eth.c & lwIP eth_tx线程死等问题
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 12.2k
- Forks
- 5.4k
- Avg merge
- 4d 12h
- Merged PRs (30d)
- 40
Description
description
using rtthread with lwip,when enternet loading is very heavy, the system will stuck in drv_eth.c line <while (EthHandle.Lock == HAL_LOCKED); > in rt_stm32_eth_tx()
rt_stm32_eth_tx will be called in eth_tx_thread_entry in enternetif.c.
so the problem is the system waiting all the time in A thread, is that make sense??
my steps
- command
sudo hping3 -i u100 192.168.1.xxx -d 1000in ubuntu18.04, and monitor the finsh - waiting for 10 sec, finsh doesn't work.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with drv_eth.c and rt_stm32_eth_tx(), then trace its call from eth_tx_thread_entry in enternetif.c. Reproduce the lockup with the reported hping3 command under heavy Ethernet load and inspect why the HAL lock wait does not return. Done means the system no longer remains stuck there and finsh stays responsive.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- embedded-iot, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100