From a0496b8a349e3ab746e013c6d076bb434f0a1413 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Fri, 1 Jun 2007 09:43:58 -0700 Subject: [PATCH] --- yaml --- r: 57305 b: refs/heads/master c: 3d4e66f5cd217160da9c3a2e3ec27b22e743bd25 h: refs/heads/master i: 57303: 0039d6ec18f8e147ffd99a15a201a18a2ae06597 v: v3 --- [refs] | 2 +- trunk/drivers/net/sky2.c | 31 +++++++++++++------------------ 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/[refs] b/[refs] index 9907d29258bb..11145cb6b4f6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d2d1acdb6a632486be9a731f40c68980c09f0490 +refs/heads/master: 3d4e66f5cd217160da9c3a2e3ec27b22e743bd25 diff --git a/trunk/drivers/net/sky2.c b/trunk/drivers/net/sky2.c index adfbe81693a6..fe01b961b597 100644 --- a/trunk/drivers/net/sky2.c +++ b/trunk/drivers/net/sky2.c @@ -1049,26 +1049,22 @@ static void sky2_vlan_rx_register(struct net_device *dev, struct vlan_group *grp u16 port = sky2->port; netif_tx_lock_bh(dev); + netif_poll_disable(sky2->hw->dev[0]); - sky2_write32(hw, SK_REG(port, RX_GMF_CTRL_T), RX_VLAN_STRIP_ON); - sky2_write32(hw, SK_REG(port, TX_GMF_CTRL_T), TX_VLAN_TAG_ON); sky2->vlgrp = grp; + if (grp) { + sky2_write32(hw, SK_REG(port, RX_GMF_CTRL_T), + RX_VLAN_STRIP_ON); + sky2_write32(hw, SK_REG(port, TX_GMF_CTRL_T), + TX_VLAN_TAG_ON); + } else { + sky2_write32(hw, SK_REG(port, RX_GMF_CTRL_T), + RX_VLAN_STRIP_OFF); + sky2_write32(hw, SK_REG(port, TX_GMF_CTRL_T), + TX_VLAN_TAG_OFF); + } - netif_tx_unlock_bh(dev); -} - -static void sky2_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid) -{ - struct sky2_port *sky2 = netdev_priv(dev); - struct sky2_hw *hw = sky2->hw; - u16 port = sky2->port; - - netif_tx_lock_bh(dev); - - sky2_write32(hw, SK_REG(port, RX_GMF_CTRL_T), RX_VLAN_STRIP_OFF); - sky2_write32(hw, SK_REG(port, TX_GMF_CTRL_T), TX_VLAN_TAG_OFF); - vlan_group_set_device(sky2->vlgrp, vid, NULL); - + netif_poll_enable(sky2->hw->dev[0]); netif_tx_unlock_bh(dev); } #endif @@ -3484,7 +3480,6 @@ static __devinit struct net_device *sky2_init_netdev(struct sky2_hw *hw, #ifdef SKY2_VLAN_TAG_USED dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX; dev->vlan_rx_register = sky2_vlan_rx_register; - dev->vlan_rx_kill_vid = sky2_vlan_rx_kill_vid; #endif /* read the mac address */