devices/r8169-2.6.33-ethercat.c
changeset 2589 2b9c78543663
parent 2185 bc08b092238d
equal deleted inserted replaced
2415:af21f0bdc7c9 2589:2b9c78543663
  2707 	if (!(tp->phy_1000_ctrl_reg & ADVERTISE_1000FULL))
  2707 	if (!(tp->phy_1000_ctrl_reg & ADVERTISE_1000FULL))
  2708 		return;
  2708 		return;
  2709 
  2709 
  2710 	if (!tp->ecdev)
  2710 	if (!tp->ecdev)
  2711 		spin_lock_irq(&tp->lock);
  2711 		spin_lock_irq(&tp->lock);
  2712 	
  2712 
  2713 	if (tp->phy_reset_pending(ioaddr)) {
  2713 	if (tp->phy_reset_pending(ioaddr)) {
  2714 		/*
  2714 		/*
  2715 		 * A busy loop could burn quite a few cycles on nowadays CPU.
  2715 		 * A busy loop could burn quite a few cycles on nowadays CPU.
  2716 		 * Let's delay the execution of the timer for a few ticks.
  2716 		 * Let's delay the execution of the timer for a few ticks.
  2717 		 */
  2717 		 */
  3232 	if (tp->mac_version == RTL_GIGA_MAC_VER_05)
  3232 	if (tp->mac_version == RTL_GIGA_MAC_VER_05)
  3233 		RTL_W16(CPlusCmd, RTL_R16(CPlusCmd) | RxVlan);
  3233 		RTL_W16(CPlusCmd, RTL_R16(CPlusCmd) | RxVlan);
  3234 
  3234 
  3235 	device_set_wakeup_enable(&pdev->dev, tp->features & RTL_FEATURE_WOL);
  3235 	device_set_wakeup_enable(&pdev->dev, tp->features & RTL_FEATURE_WOL);
  3236 
  3236 
  3237 	if (tp->ecdev && ecdev_open(tp->ecdev)) {
  3237 	if (tp->ecdev) {
  3238 		ecdev_withdraw(tp->ecdev);
  3238 		rc = ecdev_open(tp->ecdev);
  3239 		goto err_out_msi_5;
  3239 		if (rc) {
       
  3240 			ecdev_withdraw(tp->ecdev);
       
  3241 			goto err_out_msi_5;
       
  3242 		}
  3240 	}
  3243 	}
  3241 
  3244 
  3242 out:
  3245 out:
  3243 	return rc;
  3246 	return rc;
  3244 
  3247 
  3337 				dev->name, dev);
  3340 				dev->name, dev);
  3338 		if (retval < 0)
  3341 		if (retval < 0)
  3339 			goto err_release_ring_2;
  3342 			goto err_release_ring_2;
  3340 
  3343 
  3341 		napi_enable(&tp->napi);
  3344 		napi_enable(&tp->napi);
  3342  
       
  3343 	}
  3345 	}
  3344 
  3346 
  3345 	rtl_hw_start(dev);
  3347 	rtl_hw_start(dev);
  3346 
  3348 
  3347 	rtl8169_request_timer(dev);
  3349 	rtl8169_request_timer(dev);
  4941 static int rtl8169_suspend(struct device *device)
  4943 static int rtl8169_suspend(struct device *device)
  4942 {
  4944 {
  4943 	struct pci_dev *pdev = to_pci_dev(device);
  4945 	struct pci_dev *pdev = to_pci_dev(device);
  4944 	struct net_device *dev = pci_get_drvdata(pdev);
  4946 	struct net_device *dev = pci_get_drvdata(pdev);
  4945 	struct rtl8169_private *tp = netdev_priv(dev);
  4947 	struct rtl8169_private *tp = netdev_priv(dev);
  4946 	
  4948 
  4947 	if (tp->ecdev)
  4949 	if (tp->ecdev)
  4948  		return -EBUSY;
  4950  		return -EBUSY;
  4949 
  4951 
  4950 	rtl8169_net_suspend(dev);
  4952 	rtl8169_net_suspend(dev);
  4951 
  4953