devices/e100-2.6.29-ethercat.c
changeset 1506 41ca84fb6bb2
parent 1505 da637f7e4e3a
child 2421 bc2d4bf9cbe5
child 2589 2b9c78543663
equal deleted inserted replaced
1505:da637f7e4e3a 1506:41ca84fb6bb2
  2159 	e100_start_receiver(nic, NULL);
  2159 	e100_start_receiver(nic, NULL);
  2160 	if (!nic->ecdev) {
  2160 	if (!nic->ecdev) {
  2161 		mod_timer(&nic->watchdog, jiffies);
  2161 		mod_timer(&nic->watchdog, jiffies);
  2162 	}
  2162 	}
  2163 	if ((err = request_irq(nic->pdev->irq, e100_intr, IRQF_SHARED,
  2163 	if ((err = request_irq(nic->pdev->irq, e100_intr, IRQF_SHARED,
  2164 					nic->netdev->name, nic->netdev)))
  2164 		nic->netdev->name, nic->netdev)))
  2165 		goto err_no_irq;
  2165 		goto err_no_irq;
  2166 	if (!nic->ecdev) {
  2166 	if (!nic->ecdev) {
  2167 		netif_wake_queue(nic->netdev);
  2167 		netif_wake_queue(nic->netdev);
  2168 		napi_enable(&nic->napi);
  2168 		napi_enable(&nic->napi);
  2169 		/* enable ints _after_ enabling poll, preventing a race between
  2169 		/* enable ints _after_ enabling poll, preventing a race between
  2188 		/* wait here for poll to complete */
  2188 		/* wait here for poll to complete */
  2189 		napi_disable(&nic->napi);
  2189 		napi_disable(&nic->napi);
  2190 		netif_stop_queue(nic->netdev);
  2190 		netif_stop_queue(nic->netdev);
  2191 	}
  2191 	}
  2192 	e100_hw_reset(nic);
  2192 	e100_hw_reset(nic);
       
  2193 	free_irq(nic->pdev->irq, nic->netdev);
  2193 	if (!nic->ecdev) {
  2194 	if (!nic->ecdev) {
  2194 		free_irq(nic->pdev->irq, nic->netdev);
       
  2195 		del_timer_sync(&nic->watchdog);
  2195 		del_timer_sync(&nic->watchdog);
  2196 		netif_carrier_off(nic->netdev);
  2196 		netif_carrier_off(nic->netdev);
  2197 	}
  2197 	}
  2198 	e100_clean_cbs(nic);
  2198 	e100_clean_cbs(nic);
  2199 	e100_rx_clean_list(nic);
  2199 	e100_rx_clean_list(nic);