diff options
author | Wei Liu <wei.liu2@citrix.com> | 2014-08-12 11:48:07 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-08-13 20:07:44 -0700 |
commit | a64bd934528e26e8956112e43a279fba2ee0634e (patch) | |
tree | 304e4fca43ec1c2907bb0db71f50445ef5fcae32 /drivers/net/xen-netback/common.h | |
parent | ea2c5e134237eadc9924ce821ded678750024549 (diff) | |
download | op-kernel-dev-a64bd934528e26e8956112e43a279fba2ee0634e.zip op-kernel-dev-a64bd934528e26e8956112e43a279fba2ee0634e.tar.gz |
xen-netback: don't stop dealloc kthread too early
Reference count the number of packets in host stack, so that we don't
stop the deallocation thread too early. If not, we can end up with
xenvif_free permanently waiting for deallocation thread to unmap grefs.
Reported-by: Thomas Leonard <talex5@gmail.com>
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
Cc: Zoltan Kiss <zoltan.kiss@citrix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/xen-netback/common.h')
-rw-r--r-- | drivers/net/xen-netback/common.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/xen-netback/common.h b/drivers/net/xen-netback/common.h index ef3026f..d4eb8d2 100644 --- a/drivers/net/xen-netback/common.h +++ b/drivers/net/xen-netback/common.h @@ -165,6 +165,7 @@ struct xenvif_queue { /* Per-queue data for xenvif */ u16 dealloc_ring[MAX_PENDING_REQS]; struct task_struct *dealloc_task; wait_queue_head_t dealloc_wq; + atomic_t inflight_packets; /* Use kthread for guest RX */ struct task_struct *task; @@ -329,4 +330,8 @@ extern unsigned int xenvif_max_queues; extern struct dentry *xen_netback_dbg_root; #endif +void xenvif_skb_zerocopy_prepare(struct xenvif_queue *queue, + struct sk_buff *skb); +void xenvif_skb_zerocopy_complete(struct xenvif_queue *queue); + #endif /* __XEN_NETBACK__COMMON_H__ */ |