devices/e1000e/netdev-2.6.37-ethercat.c
branchstable-1.5
changeset 2421 bc2d4bf9cbe5
parent 2234 18f9c69d9590
child 2472 50b861e981f7
equal deleted inserted replaced
2420:69056c46aa4d 2421:bc2d4bf9cbe5
  3412 	/* disable receives in the hardware */
  3412 	/* disable receives in the hardware */
  3413 	rctl = er32(RCTL);
  3413 	rctl = er32(RCTL);
  3414 	ew32(RCTL, rctl & ~E1000_RCTL_EN);
  3414 	ew32(RCTL, rctl & ~E1000_RCTL_EN);
  3415 	/* flush and sleep below */
  3415 	/* flush and sleep below */
  3416 
  3416 
  3417 	if (!adapter->ecdev) 
  3417 	if (!adapter->ecdev)
  3418 		netif_stop_queue(netdev);
  3418 		netif_stop_queue(netdev);
  3419 
  3419 
  3420 	/* disable transmits in the hardware */
  3420 	/* disable transmits in the hardware */
  3421 	tctl = er32(TCTL);
  3421 	tctl = er32(TCTL);
  3422 	tctl &= ~E1000_TCTL_EN;
  3422 	tctl &= ~E1000_TCTL_EN;
  4234 	if ((e1000e_enable_tx_pkt_filtering(hw)) &&
  4234 	if ((e1000e_enable_tx_pkt_filtering(hw)) &&
  4235 	    (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id))
  4235 	    (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id))
  4236 		e1000_update_mng_vlan(adapter);
  4236 		e1000_update_mng_vlan(adapter);
  4237 
  4237 
  4238 	if (link) {
  4238 	if (link) {
  4239 		if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) 
  4239 		if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev))
  4240 				|| (!adapter->ecdev && !netif_carrier_ok(netdev))) {
  4240 				|| (!adapter->ecdev && !netif_carrier_ok(netdev))) {
  4241 			bool txb2b = 1;
  4241 			bool txb2b = 1;
  4242 
  4242 
  4243 			/* Cancel scheduled suspend requests. */
  4243 			/* Cancel scheduled suspend requests. */
  4244 			pm_runtime_resume(netdev->dev.parent);
  4244 			pm_runtime_resume(netdev->dev.parent);
  4332 			if (phy->ops.cfg_on_link_up)
  4332 			if (phy->ops.cfg_on_link_up)
  4333 				phy->ops.cfg_on_link_up(hw);
  4333 				phy->ops.cfg_on_link_up(hw);
  4334 
  4334 
  4335 			if (adapter->ecdev)
  4335 			if (adapter->ecdev)
  4336 				ecdev_set_link(adapter->ecdev, 1);
  4336 				ecdev_set_link(adapter->ecdev, 1);
  4337 			else 
  4337 			else
  4338 				netif_carrier_on(netdev);
  4338 				netif_carrier_on(netdev);
  4339 
  4339 
  4340 			if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state))
  4340 			if (!adapter->ecdev && !test_bit(__E1000_DOWN, &adapter->state))
  4341 				mod_timer(&adapter->phy_info_timer,
  4341 				mod_timer(&adapter->phy_info_timer,
  4342 					  round_jiffies(jiffies + 2 * HZ));
  4342 					  round_jiffies(jiffies + 2 * HZ));
  4343 		}
  4343 		}
  4344 	} else {
  4344 	} else {
  4345 		if ((adapter->ecdev && ecdev_get_link(adapter->ecdev)) 
  4345 		if ((adapter->ecdev && ecdev_get_link(adapter->ecdev))
  4346 				|| (!adapter->ecdev && netif_carrier_ok(netdev))) {
  4346 				|| (!adapter->ecdev && netif_carrier_ok(netdev))) {
  4347 			adapter->link_speed = 0;
  4347 			adapter->link_speed = 0;
  4348 			adapter->link_duplex = 0;
  4348 			adapter->link_duplex = 0;
  4349 			/* Link status message must follow this format */
  4349 			/* Link status message must follow this format */
  4350 			printk(KERN_INFO "e1000e: %s NIC Link is Down\n",
  4350 			printk(KERN_INFO "e1000e: %s NIC Link is Down\n",
  4378 	adapter->gotc = adapter->stats.gotc - adapter->gotc_old;
  4378 	adapter->gotc = adapter->stats.gotc - adapter->gotc_old;
  4379 	adapter->gotc_old = adapter->stats.gotc;
  4379 	adapter->gotc_old = adapter->stats.gotc;
  4380 
  4380 
  4381 	e1000e_update_adaptive(&adapter->hw);
  4381 	e1000e_update_adaptive(&adapter->hw);
  4382 
  4382 
  4383 	if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev)) 
  4383 	if ((adapter->ecdev && !ecdev_get_link(adapter->ecdev))
  4384 			|| (!adapter->ecdev && !netif_carrier_ok(netdev))) {
  4384 			|| (!adapter->ecdev && !netif_carrier_ok(netdev))) {
  4385 		tx_pending = (e1000_desc_unused(tx_ring) + 1 <
  4385 		tx_pending = (e1000_desc_unused(tx_ring) + 1 <
  4386 			       tx_ring->count);
  4386 			       tx_ring->count);
  4387 		if (tx_pending) {
  4387 		if (tx_pending) {
  4388 			/*
  4388 			/*
  5562 static void e1000_shutdown(struct pci_dev *pdev)
  5562 static void e1000_shutdown(struct pci_dev *pdev)
  5563 {
  5563 {
  5564 	bool wake = false;
  5564 	bool wake = false;
  5565 	struct net_device *netdev = pci_get_drvdata(pdev);
  5565 	struct net_device *netdev = pci_get_drvdata(pdev);
  5566 	struct e1000_adapter *adapter = netdev_priv(netdev);
  5566 	struct e1000_adapter *adapter = netdev_priv(netdev);
  5567 	
  5567 
  5568 	if (adapter->ecdev)
  5568 	if (adapter->ecdev)
  5569 		return;
  5569 		return;
  5570 
  5570 
  5571 	__e1000_shutdown(pdev, &wake, false);
  5571 	__e1000_shutdown(pdev, &wake, false);
  5572 
  5572