Thread (47 messages) 47 messages, 6 authors, 2010-01-18

Re: [PATCH v2] net: Introduce realloc_netdev_mq()

From: Jarek Poplawski <hidden>
Date: 2009-12-03 16:36:58

On Thu, Dec 03, 2009 at 04:17:43PM +0100, Eric Dumazet wrote:
Jarek Poplawski a écrit :
quoted
Take 2 (with forgotten headers, sorry).
Very nice, thanks !
quoted
Here is a proposal of netdev api change. I hope Michael finds time
to try if this can be really useful for drivers.

Thanks,
Jarek P.
---------------> (take 2)

This patch separates allocation of TX subqueues from alloc_netdev_mq()
to realloc_netdev_mq() to allow for resizing like in this example:

some_nic_probe()
{
	...
	dev = alloc_etherdev_mq(sizeof(*bp), 1)
	...
	if (MSI-X_available && device_supports_MSI-X_and_multiqueue)
		realloc_netdev_mq(dev, TX_MAX_RINGS)
	register_netdev(dev)
	...
}
Or the reverse :

ie, the device first allocate its max possible tx rings

dev = alloc_etherdev_mq(sizeof(*bp), 128)

then, later, try to reduce it, when knowing exact tx count.
Right, especially when we know it's a common config/capability for
a NIC.
if (realloc_netdev_mq(dev, real_queues))
	dev->real_num_tx_queues = real_queues;

In this case the memory error is not fatal.
Good point! We can consider doing this inside the function too?

Thanks,
Jarek P.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help