• Sieng Piaw Liew's avatar
    bcm63xx_enet: convert to build_skb · d27de0ef
    Sieng Piaw Liew authored
    We can increase the efficiency of rx path by using buffers to receive
    packets then build SKBs around them just before passing into the network
    stack. In contrast, preallocating SKBs too early reduces CPU cache
    efficiency.
    
    Check if we're in NAPI context when refilling RX. Normally we're almost
    always running in NAPI context. Dispatch to napi_alloc_frag directly
    instead of relying on netdev_alloc_frag which does the same but
    with the overhead of local_bh_disable/enable.
    
    Tested on BCM6328 320 MHz and iperf3 -M 512 to measure packet/sec
    performance. Included netif_receive_skb_list and NET_IP_ALIGN
    optimizations.
    
    Before:
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-10.00  sec  49.9 MBytes  41.9 Mbits/sec  197         sender
    [  4]   0.00-10.00  sec  49.3 MBytes  41.3 Mbits/sec            receiver
    
    After:
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-30.00  sec   171 MBytes  47.8 Mbits/sec  272         sender
    [  4]   0.00-30.00  sec   170 MBytes  47.6 Mbits/sec            receiver
    Signed-off-by: default avatarSieng Piaw Liew <liew.s.piaw@gmail.com>
    Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    d27de0ef
bcm63xx_enet.h 8.06 KB