mirror of
				https://github.com/linuxkit/linuxkit.git
				synced 2025-10-31 22:02:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 49bd29380adca985fee216ea5f8735fa89aba4a5 Mon Sep 17 00:00:00 2001
 | |
| From: Gerard Garcia <ggarcia@deic.uab.cat>
 | |
| Date: Wed, 10 Aug 2016 17:24:34 +0200
 | |
| Subject: [PATCH 14/44] vhost/vsock: drop space available check for TX vq
 | |
| 
 | |
| Remove unnecessary use of enable/disable callback notifications
 | |
| and the incorrect more space available check.
 | |
| 
 | |
| The virtio_transport_tx_work handles when the TX virtqueue
 | |
| has more buffers available.
 | |
| 
 | |
| Signed-off-by: Gerard Garcia <ggarcia@deic.uab.cat>
 | |
| Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
 | |
| Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
 | |
| (cherry picked from commit 21bc54fc0cdc31de72b57d2b3c79cf9c2b83cf39)
 | |
| ---
 | |
|  net/vmw_vsock/virtio_transport.c | 10 +++-------
 | |
|  1 file changed, 3 insertions(+), 7 deletions(-)
 | |
| 
 | |
| diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
 | |
| index 699dfabdbccd..936d7eee62d0 100644
 | |
| --- a/net/vmw_vsock/virtio_transport.c
 | |
| +++ b/net/vmw_vsock/virtio_transport.c
 | |
| @@ -87,9 +87,6 @@ virtio_transport_send_pkt_work(struct work_struct *work)
 | |
|  
 | |
|  	vq = vsock->vqs[VSOCK_VQ_TX];
 | |
|  
 | |
| -	/* Avoid unnecessary interrupts while we're processing the ring */
 | |
| -	virtqueue_disable_cb(vq);
 | |
| -
 | |
|  	for (;;) {
 | |
|  		struct virtio_vsock_pkt *pkt;
 | |
|  		struct scatterlist hdr, buf, *sgs[2];
 | |
| @@ -99,7 +96,6 @@ virtio_transport_send_pkt_work(struct work_struct *work)
 | |
|  		spin_lock_bh(&vsock->send_pkt_list_lock);
 | |
|  		if (list_empty(&vsock->send_pkt_list)) {
 | |
|  			spin_unlock_bh(&vsock->send_pkt_list_lock);
 | |
| -			virtqueue_enable_cb(vq);
 | |
|  			break;
 | |
|  		}
 | |
|  
 | |
| @@ -118,13 +114,13 @@ virtio_transport_send_pkt_work(struct work_struct *work)
 | |
|  		}
 | |
|  
 | |
|  		ret = virtqueue_add_sgs(vq, sgs, out_sg, in_sg, pkt, GFP_KERNEL);
 | |
| +		/* Usually this means that there is no more space available in
 | |
| +		 * the vq
 | |
| +		 */
 | |
|  		if (ret < 0) {
 | |
|  			spin_lock_bh(&vsock->send_pkt_list_lock);
 | |
|  			list_add(&pkt->list, &vsock->send_pkt_list);
 | |
|  			spin_unlock_bh(&vsock->send_pkt_list_lock);
 | |
| -
 | |
| -			if (!virtqueue_enable_cb(vq) && ret == -ENOSPC)
 | |
| -				continue; /* retry now that we have more space */
 | |
|  			break;
 | |
|  		}
 | |
|  
 | |
| -- 
 | |
| 2.11.1
 | |
| 
 |