• Pankaj Gupta's avatar
    net: allow large number of rx queues · 10595902
    Pankaj Gupta authored
    netif_alloc_rx_queues() uses kcalloc() to allocate memory
    for "struct netdev_queue *_rx" array.
    If we are doing large rx queue allocation kcalloc() might
    fail, so this patch does a fallback to vzalloc().
    Similar implementation is done for tx queue allocation in
    netif_alloc_netdev_queues().
    
    We avoid failure of high order memory allocation
    with the help of vzalloc(), this allows us to do large
    rx and tx queue allocation which in turn helps us to
    increase the number of queues in tun.
    
    As vmalloc() adds overhead on a critical network path,
    __GFP_REPEAT flag is used with kzalloc() to do this fallback
    only when really needed.
    Signed-off-by: default avatarPankaj Gupta <pagupta@redhat.com>
    Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Reviewed-by: default avatarDavid Gibson <dgibson@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    10595902
dev.c 184 KB