From patchwork Wed Oct 27 14:58:12 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ron Mercer X-Patchwork-Id: 69361 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id E17C8B70D1 for ; Thu, 28 Oct 2010 02:10:26 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933325Ab0J0PKP (ORCPT ); Wed, 27 Oct 2010 11:10:15 -0400 Received: from cain.qlogic.com ([198.70.193.223]:38295 "EHLO cain.qlc.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933188Ab0J0PKN (ORCPT ); Wed, 27 Oct 2010 11:10:13 -0400 Received: from linux-ox1b.qlogic.com (linux-ox1b.qlogic.org [172.17.139.21]) by cain.qlc.com (8.13.7+Sun/8.12.10) with ESMTP id o9RFAAbi017876; Wed, 27 Oct 2010 08:10:10 -0700 (PDT) Received: by linux-ox1b.qlogic.com (Postfix, from userid 1000) id 736C72C6A0; Wed, 27 Oct 2010 07:58:12 -0700 (PDT) From: Ron Mercer To: davem@davemloft.net Cc: netdev@vger.kernel.org, ron.mercer@qlogic.com, jitendra.kalsaria@qlogic.com, ying.lok@qlogic.com Subject: [net-2.6 PATCH 1/1] qlge: bugfix: Restoring the vlan setting. Date: Wed, 27 Oct 2010 07:58:12 -0700 Message-Id: <1288191492-1967-1-git-send-email-ron.mercer@qlogic.com> X-Mailer: git-send-email 1.6.0.2 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Jitendra Kalsaria Signed-off-by: Ron Mercer --- drivers/net/qlge/qlge_main.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c index e621056..c30e0fe 100644 --- a/drivers/net/qlge/qlge_main.c +++ b/drivers/net/qlge/qlge_main.c @@ -2385,6 +2385,20 @@ static void qlge_vlan_rx_kill_vid(struct net_device *ndev, u16 vid) } +static void qlge_restore_vlan(struct ql_adapter *qdev) +{ + qlge_vlan_rx_register(qdev->ndev, qdev->vlgrp); + + if (qdev->vlgrp) { + u16 vid; + for (vid = 0; vid < VLAN_N_VID; vid++) { + if (!vlan_group_get_device(qdev->vlgrp, vid)) + continue; + qlge_vlan_rx_add_vid(qdev->ndev, vid); + } + } +} + /* MSI-X Multiple Vector Interrupt Handler for inbound completions. */ static irqreturn_t qlge_msix_rx_isr(int irq, void *dev_id) { @@ -3960,6 +3974,9 @@ static int ql_adapter_up(struct ql_adapter *qdev) clear_bit(QL_PROMISCUOUS, &qdev->flags); qlge_set_multicast_list(qdev->ndev); + /* Restore vlan setting. */ + qlge_restore_vlan(qdev); + ql_enable_interrupts(qdev); ql_enable_all_completion_interrupts(qdev); netif_tx_start_all_queues(qdev->ndev);