bna: Set Ring Param Fix
authorRasesh Mody <rmody@brocade.com>
Fri, 16 Sep 2011 15:06:47 +0000 (15:06 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 17 Sep 2011 04:47:57 +0000 (00:47 -0400)
When Rx queue size is changed, queues are torn down and setup with the new queue
size. During this operation, clear promiscuous mode and restore the original
VLAN filter.

Signed-off-by: Gurunatha Karaje <gkaraje@brocade.com>
Signed-off-by: Rasesh Mody <rmody@brocade.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/brocade/bna/bnad_ethtool.c

index 48422244397c250053b92b21f745abe1e7d4df55..ac6b49561bf03e3d8910fee32fb319b41a6b223a 100644 (file)
@@ -471,16 +471,17 @@ bnad_set_ringparam(struct net_device *netdev,
                        current_err = bnad_setup_rx(bnad, i);
                        if (current_err && !err)
                                err = current_err;
-                       if (!err)
-                               bnad_restore_vlans(bnad, i);
                }
 
                if (!err && bnad->rx_info[0].rx) {
                        /* restore rx configuration */
+                       bnad_restore_vlans(bnad, 0);
                        bnad_enable_default_bcast(bnad);
                        spin_lock_irqsave(&bnad->bna_lock, flags);
                        bnad_mac_addr_set_locked(bnad, netdev->dev_addr);
                        spin_unlock_irqrestore(&bnad->bna_lock, flags);
+                       bnad->cfg_flags &= ~(BNAD_CF_ALLMULTI |
+                                            BNAD_CF_PROMISC);
                        bnad_set_rx_mode(netdev);
                }
        }