I added flow control for wifi packets. This will greatly reduce the packet loss rate (tested by sending udp via iperf). But it only supports the sdio interface because I think the current spi communication implementation is not compatible with the flow control mechanism. At the same time, when I checked the spi communication, I found that there are still some problems:
The number of SPI memory pools is only SPI_MEMPOOL_NUM_BLOCKS, but the number of spi_tx_queue and spi_rx_queue queues is three times that. I think in extreme cases, when the memory pool is exhausted and all the memory is in spi_rx_queue/spi_tx_queue, the next spi transmission will fail to apply for memory, triggering assert
I added flow control for wifi packets. This will greatly reduce the packet loss rate (tested by sending udp via iperf). But it only supports the sdio interface because I think the current spi communication implementation is not compatible with the flow control mechanism. At the same time, when I checked the spi communication, I found that there are still some problems: The number of SPI memory pools is only SPI_MEMPOOL_NUM_BLOCKS, but the number of spi_tx_queue and spi_rx_queue queues is three times that. I think in extreme cases, when the memory pool is exhausted and all the memory is in spi_rx_queue/spi_tx_queue, the next spi transmission will fail to apply for memory, triggering assert