瀏覽代碼

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>
Rasesh Mody 14 年之前
父節點
當前提交
3fb9852f98
共有 1 個文件被更改,包括 3 次插入2 次删除
  1. 3 2
      drivers/net/ethernet/brocade/bna/bnad_ethtool.c

+ 3 - 2
drivers/net/ethernet/brocade/bna/bnad_ethtool.c

@@ -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);
 		}
 		}
 	}
 	}