Subject: Re: [PATCH v4] net: Introduce realloc_netdev_mq()

From: Jarek Poplawski <[email-masked]>
Date: Fri, 4 Dec 2009 13:01:35 +0000

On Fri, Dec 04, 2009 at 12:04:42AM +0100, Eric Dumazet wrote:
...
> 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;
>  }

Eric, if didn't miss something in the example you gave at the
beginning of this thread, it seems a change like below (not compiled)
should fix your problem (without even testing MSI exactly)?

Jarek P.
---

 drivers/net/bnx2.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 4bfc808..c1ba2b1 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -8288,6 +8288,11 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 		dev->features |= NETIF_F_TSO6;
 		vlan_features_add(dev, NETIF_F_TSO6);
 	}
+
+	if (!(bp->flags & BNX2_FLAG_MSIX_CAP) ||
+	    !(bp->flags & BNX2_FLAG_MSI_CAP) || disable_msi)
+		realloc_netdev_mq(dev, 1);
+
 	if ((rc = register_netdev(dev))) {
 		dev_err(&pdev->dev, "Cannot register net device\n");
 		goto error;