bna: Set Ring Param Fix

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>
This commit is contained in:
Rasesh Mody 2011-09-16 15:06:47 +00:00 committed by David S. Miller
parent 1d51a1325e
commit 3fb9852f98
1 changed files with 3 additions and 2 deletions

View File

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