diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-06-25 06:32:01 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-06-25 06:32:01 -0400 |
| commit | da7878d75b8520c9ae00d27dfbbce546a7bfdfbb (patch) | |
| tree | 547fd497a80818a60ac36831377d5df97868173c /drivers/net/sky2.c | |
| parent | 0e50a4c6ab94ffe7e5515b86b5df9e5abc8c6b13 (diff) | |
| parent | 543cf4cb3fe6f6cae3651ba918b9c56200b257d0 (diff) | |
Merge branch 'linus' into x86/pebs
Diffstat (limited to 'drivers/net/sky2.c')
| -rw-r--r-- | drivers/net/sky2.c | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index f226bcac7d17..c8a5ef2d75f4 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c | |||
| @@ -118,6 +118,7 @@ static const struct pci_device_id sky2_id_table[] = { | |||
| 118 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4352) }, /* 88E8038 */ | 118 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4352) }, /* 88E8038 */ |
| 119 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4353) }, /* 88E8039 */ | 119 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4353) }, /* 88E8039 */ |
| 120 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4354) }, /* 88E8040 */ | 120 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4354) }, /* 88E8040 */ |
| 121 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4355) }, /* 88E8040T */ | ||
| 121 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4356) }, /* 88EC033 */ | 122 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4356) }, /* 88EC033 */ |
| 122 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4357) }, /* 88E8042 */ | 123 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4357) }, /* 88E8042 */ |
| 123 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x435A) }, /* 88E8048 */ | 124 | { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x435A) }, /* 88E8048 */ |
| @@ -1159,17 +1160,9 @@ static int sky2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) | |||
| 1159 | } | 1160 | } |
| 1160 | 1161 | ||
| 1161 | #ifdef SKY2_VLAN_TAG_USED | 1162 | #ifdef SKY2_VLAN_TAG_USED |
| 1162 | static void sky2_vlan_rx_register(struct net_device *dev, struct vlan_group *grp) | 1163 | static void sky2_set_vlan_mode(struct sky2_hw *hw, u16 port, bool onoff) |
| 1163 | { | 1164 | { |
| 1164 | struct sky2_port *sky2 = netdev_priv(dev); | 1165 | if (onoff) { |
| 1165 | struct sky2_hw *hw = sky2->hw; | ||
| 1166 | u16 port = sky2->port; | ||
| 1167 | |||
| 1168 | netif_tx_lock_bh(dev); | ||
| 1169 | napi_disable(&hw->napi); | ||
| 1170 | |||
| 1171 | sky2->vlgrp = grp; | ||
| 1172 | if (grp) { | ||
| 1173 | sky2_write32(hw, SK_REG(port, RX_GMF_CTRL_T), | 1166 | sky2_write32(hw, SK_REG(port, RX_GMF_CTRL_T), |
| 1174 | RX_VLAN_STRIP_ON); | 1167 | RX_VLAN_STRIP_ON); |
| 1175 | sky2_write32(hw, SK_REG(port, TX_GMF_CTRL_T), | 1168 | sky2_write32(hw, SK_REG(port, TX_GMF_CTRL_T), |
| @@ -1180,6 +1173,19 @@ static void sky2_vlan_rx_register(struct net_device *dev, struct vlan_group *grp | |||
| 1180 | sky2_write32(hw, SK_REG(port, TX_GMF_CTRL_T), | 1173 | sky2_write32(hw, SK_REG(port, TX_GMF_CTRL_T), |
| 1181 | TX_VLAN_TAG_OFF); | 1174 | TX_VLAN_TAG_OFF); |
| 1182 | } | 1175 | } |
| 1176 | } | ||
| 1177 | |||
| 1178 | static void sky2_vlan_rx_register(struct net_device *dev, struct vlan_group *grp) | ||
| 1179 | { | ||
| 1180 | struct sky2_port *sky2 = netdev_priv(dev); | ||
| 1181 | struct sky2_hw *hw = sky2->hw; | ||
| 1182 | u16 port = sky2->port; | ||
| 1183 | |||
| 1184 | netif_tx_lock_bh(dev); | ||
| 1185 | napi_disable(&hw->napi); | ||
| 1186 | |||
| 1187 | sky2->vlgrp = grp; | ||
| 1188 | sky2_set_vlan_mode(hw, port, grp != NULL); | ||
| 1183 | 1189 | ||
| 1184 | sky2_read32(hw, B0_Y2_SP_LISR); | 1190 | sky2_read32(hw, B0_Y2_SP_LISR); |
| 1185 | napi_enable(&hw->napi); | 1191 | napi_enable(&hw->napi); |
| @@ -1418,6 +1424,10 @@ static int sky2_up(struct net_device *dev) | |||
| 1418 | sky2_prefetch_init(hw, txqaddr[port], sky2->tx_le_map, | 1424 | sky2_prefetch_init(hw, txqaddr[port], sky2->tx_le_map, |
| 1419 | TX_RING_SIZE - 1); | 1425 | TX_RING_SIZE - 1); |
| 1420 | 1426 | ||
| 1427 | #ifdef SKY2_VLAN_TAG_USED | ||
| 1428 | sky2_set_vlan_mode(hw, port, sky2->vlgrp != NULL); | ||
| 1429 | #endif | ||
| 1430 | |||
| 1421 | err = sky2_rx_start(sky2); | 1431 | err = sky2_rx_start(sky2); |
| 1422 | if (err) | 1432 | if (err) |
| 1423 | goto err_out; | 1433 | goto err_out; |
| @@ -4395,7 +4405,9 @@ static int sky2_resume(struct pci_dev *pdev) | |||
| 4395 | if (err) { | 4405 | if (err) { |
| 4396 | printk(KERN_ERR PFX "%s: could not up: %d\n", | 4406 | printk(KERN_ERR PFX "%s: could not up: %d\n", |
| 4397 | dev->name, err); | 4407 | dev->name, err); |
| 4408 | rtnl_lock(); | ||
| 4398 | dev_close(dev); | 4409 | dev_close(dev); |
| 4410 | rtnl_unlock(); | ||
| 4399 | goto out; | 4411 | goto out; |
| 4400 | } | 4412 | } |
| 4401 | } | 4413 | } |
