diff options
Diffstat (limited to 'drivers/net/xen-netback/interface.c')
| -rw-r--r-- | drivers/net/xen-netback/interface.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c index bfd10cb9c8de..5f3d6c06fcf7 100644 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c @@ -524,9 +524,6 @@ int xenvif_init_queue(struct xenvif_queue *queue)  	init_timer(&queue->rx_stalled); -	netif_napi_add(queue->vif->dev, &queue->napi, xenvif_poll, -			XENVIF_NAPI_WEIGHT); -  	return 0;  } @@ -614,6 +611,9 @@ int xenvif_connect(struct xenvif_queue *queue, unsigned long tx_ring_ref,  	wake_up_process(queue->task);  	wake_up_process(queue->dealloc_task); +	netif_napi_add(queue->vif->dev, &queue->napi, xenvif_poll, +			XENVIF_NAPI_WEIGHT); +  	return 0;  err_rx_unbind: @@ -672,6 +672,8 @@ void xenvif_disconnect(struct xenvif *vif)  	for (queue_index = 0; queue_index < num_queues; ++queue_index) {  		queue = &vif->queues[queue_index]; +		netif_napi_del(&queue->napi); +  		if (queue->task) {  			del_timer_sync(&queue->rx_stalled);  			kthread_stop(queue->task); @@ -704,7 +706,6 @@ void xenvif_disconnect(struct xenvif *vif)  void xenvif_deinit_queue(struct xenvif_queue *queue)  {  	free_xenballooned_pages(MAX_PENDING_REQS, queue->mmap_pages); -	netif_napi_del(&queue->napi);  }  void xenvif_free(struct xenvif *vif)  | 
