devices/e1000e/netdev-3.2-ethercat.c
branchstable-1.5
changeset 2421 bc2d4bf9cbe5
parent 2407 35223d2e6e72
child 2472 50b861e981f7
equal deleted inserted replaced
2420:69056c46aa4d 2421:bc2d4bf9cbe5
  3573 	rctl = er32(RCTL);
  3573 	rctl = er32(RCTL);
  3574 	if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX))
  3574 	if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX))
  3575 		ew32(RCTL, rctl & ~E1000_RCTL_EN);
  3575 		ew32(RCTL, rctl & ~E1000_RCTL_EN);
  3576 	/* flush and sleep below */
  3576 	/* flush and sleep below */
  3577 
  3577 
  3578 	if (!adapter->ecdev) 
  3578 	if (!adapter->ecdev)
  3579 		netif_stop_queue(netdev);
  3579 		netif_stop_queue(netdev);
  3580 
  3580 
  3581 	/* disable transmits in the hardware */
  3581 	/* disable transmits in the hardware */
  3582 	tctl = er32(TCTL);
  3582 	tctl = er32(TCTL);
  3583 	tctl &= ~E1000_TCTL_EN;
  3583 	tctl &= ~E1000_TCTL_EN;
  4389 	if ((e1000e_enable_tx_pkt_filtering(hw)) &&
  4389 	if ((e1000e_enable_tx_pkt_filtering(hw)) &&
  4390 	    (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id))
  4390 	    (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id))
  4391 		e1000_update_mng_vlan(adapter);
  4391 		e1000_update_mng_vlan(adapter);
  4392 
  4392 
  4393 	if (link) {
  4393 	if (link) {
  4394 		if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) 
  4394 		if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev))
  4395 				|| (!adapter->ecdev && !netif_carrier_ok(netdev))) {
  4395 				|| (!adapter->ecdev && !netif_carrier_ok(netdev))) {
  4396 			bool txb2b = 1;
  4396 			bool txb2b = 1;
  4397 
  4397 
  4398 			/* Cancel scheduled suspend requests. */
  4398 			/* Cancel scheduled suspend requests. */
  4399 			pm_runtime_resume(netdev->dev.parent);
  4399 			pm_runtime_resume(netdev->dev.parent);
  4487 			if (phy->ops.cfg_on_link_up)
  4487 			if (phy->ops.cfg_on_link_up)
  4488 				phy->ops.cfg_on_link_up(hw);
  4488 				phy->ops.cfg_on_link_up(hw);
  4489 
  4489 
  4490 			if (adapter->ecdev)
  4490 			if (adapter->ecdev)
  4491 				ecdev_set_link(adapter->ecdev, 1);
  4491 				ecdev_set_link(adapter->ecdev, 1);
  4492 			else 
  4492 			else
  4493 				netif_carrier_on(netdev);
  4493 				netif_carrier_on(netdev);
  4494 
  4494 
  4495 			if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state))
  4495 			if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state))
  4496 				mod_timer(&adapter->phy_info_timer,
  4496 				mod_timer(&adapter->phy_info_timer,
  4497 					  round_jiffies(jiffies + 2 * HZ));
  4497 					  round_jiffies(jiffies + 2 * HZ));
  4498 		}
  4498 		}
  4499 	} else {
  4499 	} else {
  4500 		if ((adapter->ecdev && ecdev_get_link(adapter->ecdev)) 
  4500 		if ((adapter->ecdev && ecdev_get_link(adapter->ecdev))
  4501 				|| (!adapter->ecdev && netif_carrier_ok(netdev))) {
  4501 				|| (!adapter->ecdev && netif_carrier_ok(netdev))) {
  4502 			adapter->link_speed = 0;
  4502 			adapter->link_speed = 0;
  4503 			adapter->link_duplex = 0;
  4503 			adapter->link_duplex = 0;
  4504 			/* Link status message must follow this format */
  4504 			/* Link status message must follow this format */
  4505 			printk(KERN_INFO "e1000e: %s NIC Link is Down\n",
  4505 			printk(KERN_INFO "e1000e: %s NIC Link is Down\n",
  4535 	adapter->gotc_old = adapter->stats.gotc;
  4535 	adapter->gotc_old = adapter->stats.gotc;
  4536 	spin_unlock(&adapter->stats64_lock);
  4536 	spin_unlock(&adapter->stats64_lock);
  4537 
  4537 
  4538 	e1000e_update_adaptive(&adapter->hw);
  4538 	e1000e_update_adaptive(&adapter->hw);
  4539 
  4539 
  4540 	if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) 
  4540 	if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev))
  4541 			|| (!adapter->ecdev && (!netif_carrier_ok(netdev) &&
  4541 			|| (!adapter->ecdev && (!netif_carrier_ok(netdev) &&
  4542 	    	(e1000_desc_unused(tx_ring) + 1 < tx_ring->count)))) {
  4542 	    	(e1000_desc_unused(tx_ring) + 1 < tx_ring->count)))) {
  4543 		/*
  4543 		/*
  4544 		 * We've lost link, so the controller stops DMA,
  4544 		 * We've lost link, so the controller stops DMA,
  4545 		 * but we've got queued Tx work that's never going
  4545 		 * but we've got queued Tx work that's never going
  5765 static void e1000_shutdown(struct pci_dev *pdev)
  5765 static void e1000_shutdown(struct pci_dev *pdev)
  5766 {
  5766 {
  5767 	bool wake = false;
  5767 	bool wake = false;
  5768 	struct net_device *netdev = pci_get_drvdata(pdev);
  5768 	struct net_device *netdev = pci_get_drvdata(pdev);
  5769 	struct e1000_adapter *adapter = netdev_priv(netdev);
  5769 	struct e1000_adapter *adapter = netdev_priv(netdev);
  5770 	
  5770 
  5771 	if (adapter->ecdev)
  5771 	if (adapter->ecdev)
  5772 		return;
  5772 		return;
  5773 
  5773 
  5774 	__e1000_shutdown(pdev, &wake, false);
  5774 	__e1000_shutdown(pdev, &wake, false);
  5775 
  5775