Skip to content

Commit

Permalink
lan78xx: Introduce Tx URB processing improvements
Browse files Browse the repository at this point in the history
This patch introduces a new approach to allocating and managing
Tx URBs that contributes to improving driver throughput and reducing
CPU load.

A pool of Tx URBs is created during driver instantiation. A URB is
allocated from the pool when there is data to transmit. The URB is
released back to the pool when the data has been transmitted by the
device.

The default URB buffer size is different for each USB bus speed.
The chosen sizes provide good USB utilisation with little impact on
overall packet latency.

SKBs to be transmitted are added to a pending queue for processing.
The driver tracks the available Tx URB buffer space and copies as
much pending data as possible into each free URB. Each full URB
is then submitted to the USB host controller for transmission.

Signed-off-by: John Efstathiades <john.efstathiades@pebblebay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
John Efstathiades authored and David S. Miller committed Nov 18, 2021
1 parent a6df95c commit d383216
Showing 1 changed file with 461 additions and 213 deletions.
Loading

0 comments on commit d383216

Please sign in to comment.