• John Efstathiades's avatar
    lan78xx: Introduce Tx URB processing improvements · d383216a
    John Efstathiades authored
    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: default avatarJohn Efstathiades <john.efstathiades@pebblebay.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d383216a
lan78xx.c 117 KB