aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/hw/nes/nes_nic.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
index 852546b67f77..639d0fcc00b4 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -272,14 +272,18 @@ static int nes_netdev_stop(struct net_device *netdev)
272 break; 272 break;
273 } 273 }
274 274
275 if (first_nesvnic->netdev_open == 0) 275 if ((first_nesvnic->netdev_open == 1) && (first_nesvnic != nesvnic) &&
276 (PCI_FUNC(first_nesvnic->nesdev->pcidev->devfn) !=
277 PCI_FUNC(nesvnic->nesdev->pcidev->devfn))) {
278 nes_write_indexed(nesdev, NES_IDX_MAC_INT_MASK+
279 (0x200*nesdev->mac_index), 0xffffffff);
280 nes_write_indexed(first_nesvnic->nesdev,
281 NES_IDX_MAC_INT_MASK+
282 (0x200*first_nesvnic->nesdev->mac_index),
283 ~(NES_MAC_INT_LINK_STAT_CHG | NES_MAC_INT_XGMII_EXT |
284 NES_MAC_INT_TX_UNDERFLOW | NES_MAC_INT_TX_ERROR));
285 } else {
276 nes_write_indexed(nesdev, NES_IDX_MAC_INT_MASK+(0x200*nesdev->mac_index), 0xffffffff); 286 nes_write_indexed(nesdev, NES_IDX_MAC_INT_MASK+(0x200*nesdev->mac_index), 0xffffffff);
277 else if ((first_nesvnic != nesvnic) &&
278 (PCI_FUNC(first_nesvnic->nesdev->pcidev->devfn) != PCI_FUNC(nesvnic->nesdev->pcidev->devfn))) {
279 nes_write_indexed(nesdev, NES_IDX_MAC_INT_MASK + (0x200 * nesdev->mac_index), 0xffffffff);
280 nes_write_indexed(first_nesvnic->nesdev, NES_IDX_MAC_INT_MASK + (0x200 * first_nesvnic->nesdev->mac_index),
281 ~(NES_MAC_INT_LINK_STAT_CHG | NES_MAC_INT_XGMII_EXT |
282 NES_MAC_INT_TX_UNDERFLOW | NES_MAC_INT_TX_ERROR));
283 } 287 }
284 288
285 nic_active_mask = ~((u32)(1 << nesvnic->nic_index)); 289 nic_active_mask = ~((u32)(1 << nesvnic->nic_index));