Re: [PATCH v4] net: Introduce realloc_netdev_mq()
From: Jarek Poplawski <hidden>
Date: 2009-12-04 07:48:33
On Fri, Dec 04, 2009 at 12:04:42AM +0100, Eric Dumazet wrote:
Jarek Poplawski a écrit :quoted
On Thu, Dec 03, 2009 at 10:51:25PM +0100, Eric Dumazet wrote:quoted
David Miller a écrit :quoted
From: Eric Dumazet <redacted> Date: Thu, 03 Dec 2009 22:29:42 +0100quoted
Nice patch, thanks :) Acked-by: Eric Dumazet <redacted>I like it too, but please resubmit once we have at least one example user submitted.I successfully tested following patch.Great! But, I see, checking if realloc_netdev_mq() use is always legal (before register_netdev()) is not trivial in this driver. (I have some suspicions around ixgbe_resume().) I wonder, if there should be added some debugging for this.Yes, probably Or even better, allowing realloc_netdev_mq() to be called even after register_netdev() :)
We should try to avoid it because of clashes with qdisc initialization (especially wrt. preserving stats). But mainly it's about knowing the exact reason why this thing (probing the hardware for max mq capabilities) can't be finished before register_netdev(). I'll try to look at this more. Jarek P.
quoted hunk ↗ jump to hunk
bnx2 for example could not be patched easily, following patch doesnt work.diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index 4cae2a8..8bd5d0d 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c@@ -6177,6 +6177,7 @@ bnx2_setup_int_mode(struct bnx2 *bp, int dis_msi) bp->num_tx_rings = rounddown_pow_of_two(bp->irq_nvecs); - bp->dev->real_num_tx_queues = bp->num_tx_rings; + realloc_netdev_mq(bp->dev, bp->num_tx_rings); bp->num_rx_rings = bp->irq_nvecs; }