From: Chad Dupuis <cdupuis@redhat.com> Date: Fri, 6 Aug 2010 14:22:51 -0400 Subject: [net] qlge: restore promiscuous setting in ql_adapter_up Message-id: <20100806141938.2774.85688.sendpatchset@localhost.localdomain> Patchwork-id: 27448 O-Subject: [RHEL 5.6 PATCH 6/10] qlge: Restoring the promiscuous setting in ql_adapter_up. Bugzilla: 567402 Bugzilla ======== 567402 Upstream Status =============== net-2.6 commit id d90c63417232832eafb3cbaf5442df66f29a27c1 Description =========== >From bd5ca96cb9d656309e15fbb25ed61b35063efb1a Mon Sep 17 00:00:00 2001 From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com> Date: Wed, 4 Aug 2010 16:44:50 -0700 Subject: [PATCH 6/8] qlge: Restoring the promiscuous setting in ql_adapter_up. Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com> Signed-off-by: Jarod Wilson <jarod@redhat.com> diff --git a/drivers/net/qlge/qlge.h b/drivers/net/qlge/qlge.h index 15c1ba9..dcc7562 100644 --- a/drivers/net/qlge/qlge.h +++ b/drivers/net/qlge/qlge.h @@ -2133,6 +2133,7 @@ void ql_check_receive_frame(struct sk_buff *skb); int ql_own_firmware(struct ql_adapter *qdev); int ql_wait_fifo_empty(struct ql_adapter *); int ql_mb_set_mgmnt_traffic_ctl(struct ql_adapter *, u32); +void qlge_set_multicast_list(struct net_device *ndev); #if 1 #define QL_ALL_DUMP diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c index 6da69f0..89623c8 100644 --- a/drivers/net/qlge/qlge_main.c +++ b/drivers/net/qlge/qlge_main.c @@ -3676,6 +3676,11 @@ static int ql_adapter_up(struct ql_adapter *qdev) /* trigger link work function*/ queue_delayed_work(qdev->workqueue, &qdev->link_work.work, msecs_to_jiffies(2000)); + /* Restore rx mode. */ + clear_bit(QL_ALLMULTI, &qdev->flags); + clear_bit(QL_PROMISCUOUS, &qdev->flags); + qlge_set_multicast_list(qdev->ndev); + ql_enable_interrupts(qdev); return 0; err_init: @@ -3958,7 +3963,7 @@ static struct net_device_stats *qlge_get_stats(struct net_device return &qdev->stats; } -static void qlge_set_multicast_list(struct net_device *ndev) +void qlge_set_multicast_list(struct net_device *ndev) { struct ql_adapter *qdev = (struct ql_adapter *)netdev_priv(ndev); struct dev_mc_list *mc_ptr;