RT-Thread / RT-Thread/rt-thread

drv_eth.c & lwIP eth_tx线程死等问题

Open
#6,119 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

BSP: STM32
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

  1. command sudo hping3 -i u100 192.168.1.xxx -d 1000 in ubuntu18.04, and monitor the finsh
  2. waiting for 10 sec, finsh doesn't work.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.