Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit ee9eda12 authored by Manu Gautam's avatar Manu Gautam
Browse files

USB: u_ether: Submit requests from rx_complete until limit reached



RX complete (completion callback of RX reqs) defers processing of
received skbs and requeuing of RX requests to workqueue. Also, in
workqueue function it pushes skb to network first and then queues
expty RX requests to hardware.
During high throughput or stressed testing there is possiblity of
USB hardware running out of RX requests for a while due to delayed
workqueue scheduling. This affects TCP TX (downlink) as TCP ACKs
for DL traffic are sent from PC to device (or RX for u_ether).
To workaround this queues RX requests from rx_complete itself until
pending skbs for network stack (that are still processed by wq)
reach a limit defined by a newly introduced module param:
'u_ether_rx_pending_thl'. Its default value is 500.
With this change LOCAL bi-directional thoughput improved from
59/102 to 63/108 on a reference target. Also, noticed that DL
thoughput fluctuations (99-105) were significantly reduced by
this change (consistently hovering around 108-110) and no NAKs
were seen in lecroy for RNDIS OUT endpoint during Bi-Dir testing.

Change-Id: I83b355d3dd3989cc425663e5b219c45661904f75
Signed-off-by: default avatarManu Gautam <mgautam@codeaurora.org>
parent da6b67ea
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment