devices/e100-2.6.24-ethercat.c
changeset 1506 41ca84fb6bb2
parent 1504 e02f3344a748
child 2421 bc2d4bf9cbe5
child 2589 2b9c78543663
equal deleted inserted replaced
1505:da637f7e4e3a 1506:41ca84fb6bb2
  2193 	e100_start_receiver(nic, NULL);
  2193 	e100_start_receiver(nic, NULL);
  2194 	if (!nic->ecdev) {
  2194 	if (!nic->ecdev) {
  2195 		mod_timer(&nic->watchdog, jiffies);
  2195 		mod_timer(&nic->watchdog, jiffies);
  2196 	}
  2196 	}
  2197 	if((err = request_irq(nic->pdev->irq, e100_intr, IRQF_SHARED,
  2197 	if((err = request_irq(nic->pdev->irq, e100_intr, IRQF_SHARED,
  2198 					nic->netdev->name, nic->netdev)))
  2198 		nic->netdev->name, nic->netdev)))
  2199 		goto err_no_irq;
  2199 		goto err_no_irq;
  2200 	if (!nic->ecdev) {
  2200 	if (!nic->ecdev) {
  2201 		netif_wake_queue(nic->netdev);
  2201 		netif_wake_queue(nic->netdev);
  2202 		napi_enable(&nic->napi);
  2202 		napi_enable(&nic->napi);
  2203 		/* enable ints _after_ enabling poll, preventing a race between
  2203 		/* enable ints _after_ enabling poll, preventing a race between
  2222 		/* wait here for poll to complete */
  2222 		/* wait here for poll to complete */
  2223 		napi_disable(&nic->napi);
  2223 		napi_disable(&nic->napi);
  2224 		netif_stop_queue(nic->netdev);
  2224 		netif_stop_queue(nic->netdev);
  2225 	}
  2225 	}
  2226 	e100_hw_reset(nic);
  2226 	e100_hw_reset(nic);
       
  2227 	free_irq(nic->pdev->irq, nic->netdev);
  2227 	if (!nic->ecdev) {
  2228 	if (!nic->ecdev) {
  2228 		free_irq(nic->pdev->irq, nic->netdev);
       
  2229 		del_timer_sync(&nic->watchdog);
  2229 		del_timer_sync(&nic->watchdog);
  2230 		netif_carrier_off(nic->netdev);
  2230 		netif_carrier_off(nic->netdev);
  2231 	}
  2231 	}
  2232 	e100_clean_cbs(nic);
  2232 	e100_clean_cbs(nic);
  2233 	e100_rx_clean_list(nic);
  2233 	e100_rx_clean_list(nic);