devices/e100-2.6.20-ethercat.c
changeset 1506 41ca84fb6bb2
parent 1504 e02f3344a748
child 2582 87e502828b3f
equal deleted inserted replaced
1505:da637f7e4e3a 1506:41ca84fb6bb2
  2184 	e100_start_receiver(nic, NULL);
  2184 	e100_start_receiver(nic, NULL);
  2185     if (!nic->ecdev) {
  2185     if (!nic->ecdev) {
  2186 		mod_timer(&nic->watchdog, jiffies);
  2186 		mod_timer(&nic->watchdog, jiffies);
  2187 	}
  2187 	}
  2188 	if((err = request_irq(nic->pdev->irq, e100_intr, IRQF_SHARED,
  2188 	if((err = request_irq(nic->pdev->irq, e100_intr, IRQF_SHARED,
  2189 					nic->netdev->name, nic->netdev)))
  2189 		nic->netdev->name, nic->netdev)))
  2190 		goto err_no_irq;
  2190 		goto err_no_irq;
  2191 	if (!nic->ecdev) {
  2191 	if (!nic->ecdev) {
  2192         netif_wake_queue(nic->netdev);
  2192         netif_wake_queue(nic->netdev);
  2193         netif_poll_enable(nic->netdev);
  2193         netif_poll_enable(nic->netdev);
  2194         /* enable ints _after_ enabling poll, preventing a race between
  2194         /* enable ints _after_ enabling poll, preventing a race between
  2213         /* wait here for poll to complete */
  2213         /* wait here for poll to complete */
  2214         netif_poll_disable(nic->netdev);
  2214         netif_poll_disable(nic->netdev);
  2215         netif_stop_queue(nic->netdev);
  2215         netif_stop_queue(nic->netdev);
  2216     }
  2216     }
  2217 	e100_hw_reset(nic);
  2217 	e100_hw_reset(nic);
       
  2218 	free_irq(nic->pdev->irq, nic->netdev);
  2218     if (!nic->ecdev) {
  2219     if (!nic->ecdev) {
  2219         free_irq(nic->pdev->irq, nic->netdev);
       
  2220 		del_timer_sync(&nic->watchdog);
  2220 		del_timer_sync(&nic->watchdog);
  2221         netif_carrier_off(nic->netdev);
  2221         netif_carrier_off(nic->netdev);
  2222 	}
  2222 	}
  2223 	e100_clean_cbs(nic);
  2223 	e100_clean_cbs(nic);
  2224 	e100_rx_clean_list(nic);
  2224 	e100_rx_clean_list(nic);