bnxt_en: Fix invalid max channel parameter in ethtool -l.
authorSatish Baddipadige <sbaddipa@broadcom.com>
Sun, 15 May 2016 07:04:43 +0000 (03:04 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sun, 15 May 2016 17:35:47 +0000 (13:35 -0400)
When there is only 1 MSI-X vector or in INTA mode, tx and rx pre-set
max channel parameters are shown incorrectly in ethtool -l.  With only 1
vector, bnxt_get_max_rings() will return -ENOMEM.  bnxt_get_channels
should check this return value, and set max_rx/max_tx to 0 if it is
non-zero.

Signed-off-by: Satish Baddipadige <sbaddipa@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c

index d6e41f237f2ca412c53301e10fe50a9595bdcbb9..28171f96ebbe77f5ad0b606ba35408b98a3c5513 100644 (file)
@@ -327,7 +327,11 @@ static void bnxt_get_channels(struct net_device *dev,
        bnxt_get_max_rings(bp, &max_rx_rings, &max_tx_rings, true);
        channel->max_combined = max_rx_rings;
 
-       bnxt_get_max_rings(bp, &max_rx_rings, &max_tx_rings, false);
+       if (bnxt_get_max_rings(bp, &max_rx_rings, &max_tx_rings, false)) {
+               max_rx_rings = 0;
+               max_tx_rings = 0;
+       }
+
        tcs = netdev_get_num_tc(dev);
        if (tcs > 1)
                max_tx_rings /= tcs;