mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
74cbc410b7
Receive call back function `_esp_wifi_rx_cb` is called from WiFi hardware driver with a pointer to a frame buffer that is allocated in the WiFi hardware driver. This frame buffer was freed immediately after copying its content to a single local receive buffer of the `esp_wifi` netdev. The local receive buffer remained occupied until the protocol stack had processed it. Further incoming packets were dropped. However, very often a number of subsequent WiFi frames are received at the same time before the first one is processed completely. Having the single local receive buffer to hold only one received frame, led to a number of lost packets, even at low network load. Therefore, a ringbuffer of rx_buf elements was introduced which doesn't store the frames directly but only references to the frame buffers allocated in WiFi hardware driver. Since there is enough memory to hold several frames, the frames buffers allocated in WiFi hardware driver aren't freed immediatly any longer but are kept until the frame is processed by the protocol stack. This results in a much less loss rate of packets. |
||
---|---|---|
.. | ||
bin | ||
cxx | ||
esp-can | ||
esp-eth | ||
esp-wifi | ||
freertos | ||
include | ||
ld | ||
periph | ||
vendor | ||
doc.txt | ||
esp_events.c | ||
esp_xtimer.c | ||
exceptions.c | ||
gen_esp32part.py | ||
irq_arch.c | ||
log_module.c | ||
Makefile | ||
Makefile.dep | ||
Makefile.features | ||
Makefile.include | ||
periph_cpu.c | ||
startup.c | ||
syscalls.c | ||
thread_arch.c | ||
tools.c |