]> git.baikalelectronics.ru Git - kernel.git/commit
net: allow large number of rx queues
authorPankaj Gupta <pagupta@redhat.com>
Mon, 12 Jan 2015 06:11:28 +0000 (11:41 +0530)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Jan 2015 22:05:05 +0000 (17:05 -0500)
commit8d78022e101fab30a2a45a1dddcca722e295a1aa
tree3763c2aa7f8dbe895102a627cffe1c063926b2c0
parent2ffe26139a1d9f60cca72b8b2225a9f49e9157ca
net: allow large number of rx queues

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: Pankaj Gupta <pagupta@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: David Gibson <dgibson@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c