open-sdr / openwifi-hw

open-source IEEE 802.11 WiFi baseband FPGA (chip) design: FPGA, hardware
GNU Affero General Public License v3.0
647 stars 226 forks source link

Question on the retransmission #83

Closed guessaname closed 1 year ago

guessaname commented 1 year ago

Dear Xianjun,

I have a question on the design of the retransmission in module "xpu" and "tx_intf”. We see the former retransmission can be stopped with another new transmission in queue 0, while other queues cannot be. What's the case for this? And why new transmission can go only when it's not in retransmission state for other queues (1,2,3) ??

Thanks. Lei

image

JiaoXianjun commented 1 year ago

Glad to see this in-depth question.

Actually this is our design choice: the queue 0 can stop ongoing retransmission of other queue. Because we think that those traffic that is schedule into queue 0 by Linux are very high priority and critical, so we don’t want to delay them a lot. Scarify some reliability of those traffic in other queue, because they are not that critical/prioritized.

Above is our understanding and design choice. In a real WiFi chip there are lots of details like this. Of course you can try to change this according to your need.

guessaname commented 1 year ago

Thanks for your reply.

One more question. How can we know it is the retransmission of other queues rather than queue 0 itself? We cannot tell from it with this condition “retrans_in_progress==1“ per my understanding.

Thanks.

JiaoXianjun commented 1 year ago

Associate with each packet from driver to FPGA, there is a parameter called queue_idx. (and also sequence number, etc.). You can identify the packet being re-transmitted is from which queue.

guessaname commented 1 year ago

Thank you so much for your detail explaination. It really helped me.

JiaoXianjun commented 1 year ago

You are welcome.