|
@@ -261,9 +261,12 @@ static void virtqueue_napi_complete(struct napi_struct *napi,
|
|
|
int opaque;
|
|
|
|
|
|
opaque = virtqueue_enable_cb_prepare(vq);
|
|
|
- if (napi_complete_done(napi, processed) &&
|
|
|
- unlikely(virtqueue_poll(vq, opaque)))
|
|
|
- virtqueue_napi_schedule(napi, vq);
|
|
|
+ if (napi_complete_done(napi, processed)) {
|
|
|
+ if (unlikely(virtqueue_poll(vq, opaque)))
|
|
|
+ virtqueue_napi_schedule(napi, vq);
|
|
|
+ } else {
|
|
|
+ virtqueue_disable_cb(vq);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void skb_xmit_done(struct virtqueue *vq)
|