]> xenbits.xensource.com Git - people/liuw/linux.git/commitdiff
xen-netback: move NAPI add/remove calls to connect/disconnect functions
authorWei Liu <wei.liu2@citrix.com>
Wed, 6 Aug 2014 15:39:52 +0000 (16:39 +0100)
committerWei Liu <wei.liu2@citrix.com>
Fri, 8 Aug 2014 14:56:26 +0000 (15:56 +0100)
Original napi_add was in init_queue and napi_del was in deinit_queue,
while kthreads were handled in _connect and _disconnect. Move napi_add
and napi_remove to _connect and _disconnect so that they reside togother
with kthread operations.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
Cc: Zoltan Kiss <zoltan.kill@citrix.com>
drivers/net/xen-netback/interface.c

index 9e97c7ca0ddd1f1f0439a6f20c72ac2c13c1db59..5f11d1d13d7c1786a55b8d4e88d4a311f6a0674d 100644 (file)
@@ -516,9 +516,6 @@ int xenvif_init_queue(struct xenvif_queue *queue)
 
        init_timer(&queue->wake_queue);
 
-       netif_napi_add(queue->vif->dev, &queue->napi, xenvif_poll,
-                       XENVIF_NAPI_WEIGHT);
-
        return 0;
 }
 
@@ -605,6 +602,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:
@@ -659,6 +659,11 @@ void xenvif_disconnect(struct xenvif *vif)
        if (netif_carrier_ok(vif->dev))
                xenvif_carrier_off(vif);
 
+       for (queue_index = 0; queue_index < num_queues; ++queue_index) {
+               queue = &vif->queues[queue_index];
+               netif_napi_del(&queue->napi);
+       }
+
        for (queue_index = 0; queue_index < num_queues; ++queue_index) {
                queue = &vif->queues[queue_index];
 
@@ -694,7 +699,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)