devices/e100-2.6.26-ethercat.c
changeset 1506 41ca84fb6bb2
parent 1504 e02f3344a748
child 2582 87e502828b3f
equal deleted inserted replaced
1505:da637f7e4e3a 1506:41ca84fb6bb2
  2264 	e100_start_receiver(nic, NULL);
  2264 	e100_start_receiver(nic, NULL);
  2265 	if (!nic->ecdev) {
  2265 	if (!nic->ecdev) {
  2266 		mod_timer(&nic->watchdog, jiffies);
  2266 		mod_timer(&nic->watchdog, jiffies);
  2267 	}
  2267 	}
  2268 	if((err = request_irq(nic->pdev->irq, e100_intr, IRQF_SHARED,
  2268 	if((err = request_irq(nic->pdev->irq, e100_intr, IRQF_SHARED,
  2269 					nic->netdev->name, nic->netdev)))
  2269 		nic->netdev->name, nic->netdev)))
  2270 		goto err_no_irq;
  2270 		goto err_no_irq;
  2271 	if (!nic->ecdev) {
  2271 	if (!nic->ecdev) {
  2272 		netif_wake_queue(nic->netdev);
  2272 		netif_wake_queue(nic->netdev);
  2273 		napi_enable(&nic->napi);
  2273 		napi_enable(&nic->napi);
  2274 		/* enable ints _after_ enabling poll, preventing a race between
  2274 		/* enable ints _after_ enabling poll, preventing a race between
  2293 		/* wait here for poll to complete */
  2293 		/* wait here for poll to complete */
  2294 		napi_disable(&nic->napi);
  2294 		napi_disable(&nic->napi);
  2295 		netif_stop_queue(nic->netdev);
  2295 		netif_stop_queue(nic->netdev);
  2296 	}
  2296 	}
  2297 	e100_hw_reset(nic);
  2297 	e100_hw_reset(nic);
       
  2298 	free_irq(nic->pdev->irq, nic->netdev);
  2298 	if (!nic->ecdev) {
  2299 	if (!nic->ecdev) {
  2299 		free_irq(nic->pdev->irq, nic->netdev);
       
  2300 		del_timer_sync(&nic->watchdog);
  2300 		del_timer_sync(&nic->watchdog);
  2301 		netif_carrier_off(nic->netdev);
  2301 		netif_carrier_off(nic->netdev);
  2302 	}
  2302 	}
  2303 	e100_clean_cbs(nic);
  2303 	e100_clean_cbs(nic);
  2304 	e100_rx_clean_list(nic);
  2304 	e100_rx_clean_list(nic);