• J
    lan78xx: Introduce Rx URB processing improvements · c450a8eb
    John Efstathiades 提交于
    This patch introduces a new approach to allocating and managing
    Rx URBs that contributes to improving driver throughput and reducing
    CPU load.
    
    A pool of Rx URBs is created during driver instantiation. All the
    URBs are initially submitted to the USB host controller for
    processing.
    
    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.
    
    Completed URBs are processed in the driver bottom half. The URB
    buffer contents are copied to a dynamically allocated SKB, which is
    then passed to the network stack. The URB is then re-submitted to
    the USB host controller.
    
    NOTE: the call to skb_copy() in rx_process() that copies the URB
    contents to a new SKB is a temporary change to make this patch work
    in its own right. This call will be removed when the NAPI processing
    is introduced by patch 6 in this patch set.
    Signed-off-by: NJohn Efstathiades <john.efstathiades@pebblebay.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    c450a8eb
lan78xx.c 118.5 KB