Lines Matching refs:vq

91 			    struct vhost_virtqueue *vq)  in vhost_transport_do_send_pkt()  argument
98 mutex_lock(&vq->mutex); in vhost_transport_do_send_pkt()
100 if (!vhost_vq_get_backend(vq)) in vhost_transport_do_send_pkt()
103 if (!vq_meta_prefetch(vq)) in vhost_transport_do_send_pkt()
107 vhost_disable_notify(&vsock->dev, vq); in vhost_transport_do_send_pkt()
122 vhost_enable_notify(&vsock->dev, vq); in vhost_transport_do_send_pkt()
126 head = vhost_get_vq_desc(vq, vq->iov, ARRAY_SIZE(vq->iov), in vhost_transport_do_send_pkt()
133 if (head == vq->num) { in vhost_transport_do_send_pkt()
138 if (unlikely(vhost_enable_notify(&vsock->dev, vq))) { in vhost_transport_do_send_pkt()
139 vhost_disable_notify(&vsock->dev, vq); in vhost_transport_do_send_pkt()
147 vq_err(vq, "Expected 0 output buffers, got %u\n", out); in vhost_transport_do_send_pkt()
151 iov_len = iov_length(&vq->iov[out], in); in vhost_transport_do_send_pkt()
154 vq_err(vq, "Buffer len [%zu] too small\n", iov_len); in vhost_transport_do_send_pkt()
158 iov_iter_init(&iov_iter, ITER_DEST, &vq->iov[out], in, iov_len); in vhost_transport_do_send_pkt()
196 vq_err(vq, "Faulted on copying pkt hdr\n"); in vhost_transport_do_send_pkt()
203 vq_err(vq, "Faulted on copying pkt buf\n"); in vhost_transport_do_send_pkt()
212 vhost_add_used(vq, head, sizeof(*hdr) + payload_len); in vhost_transport_do_send_pkt()
245 } while(likely(!vhost_exceeds_weight(vq, ++pkts, total_len))); in vhost_transport_do_send_pkt()
247 vhost_signal(&vsock->dev, vq); in vhost_transport_do_send_pkt()
250 mutex_unlock(&vq->mutex); in vhost_transport_do_send_pkt()
258 struct vhost_virtqueue *vq; in vhost_transport_send_pkt_work() local
262 vq = &vsock->vqs[VSOCK_VQ_RX]; in vhost_transport_send_pkt_work()
264 vhost_transport_do_send_pkt(vsock, vq); in vhost_transport_send_pkt_work()
326 vhost_vsock_alloc_skb(struct vhost_virtqueue *vq, in vhost_vsock_alloc_skb() argument
337 vq_err(vq, "Expected 0 input buffers, got %u\n", in); in vhost_vsock_alloc_skb()
341 len = iov_length(vq->iov, out); in vhost_vsock_alloc_skb()
348 iov_iter_init(&iov_iter, ITER_SOURCE, vq->iov, out, len); in vhost_vsock_alloc_skb()
353 vq_err(vq, "Expected %zu bytes for pkt->hdr, got %zu bytes\n", in vhost_vsock_alloc_skb()
376 vq_err(vq, "Expected %zu byte payload, got %zu bytes\n", in vhost_vsock_alloc_skb()
388 struct vhost_virtqueue *vq = &vsock->vqs[VSOCK_VQ_TX]; in vhost_vsock_more_replies() local
394 return val < vq->num; in vhost_vsock_more_replies()
465 struct vhost_virtqueue *vq = container_of(work, struct vhost_virtqueue, in vhost_vsock_handle_tx_kick() local
467 struct vhost_vsock *vsock = container_of(vq->dev, struct vhost_vsock, in vhost_vsock_handle_tx_kick()
474 mutex_lock(&vq->mutex); in vhost_vsock_handle_tx_kick()
476 if (!vhost_vq_get_backend(vq)) in vhost_vsock_handle_tx_kick()
479 if (!vq_meta_prefetch(vq)) in vhost_vsock_handle_tx_kick()
482 vhost_disable_notify(&vsock->dev, vq); in vhost_vsock_handle_tx_kick()
494 head = vhost_get_vq_desc(vq, vq->iov, ARRAY_SIZE(vq->iov), in vhost_vsock_handle_tx_kick()
499 if (head == vq->num) { in vhost_vsock_handle_tx_kick()
500 if (unlikely(vhost_enable_notify(&vsock->dev, vq))) { in vhost_vsock_handle_tx_kick()
501 vhost_disable_notify(&vsock->dev, vq); in vhost_vsock_handle_tx_kick()
507 skb = vhost_vsock_alloc_skb(vq, out, in); in vhost_vsock_handle_tx_kick()
509 vq_err(vq, "Faulted on pkt\n"); in vhost_vsock_handle_tx_kick()
528 vhost_add_used(vq, head, 0); in vhost_vsock_handle_tx_kick()
530 } while(likely(!vhost_exceeds_weight(vq, ++pkts, total_len))); in vhost_vsock_handle_tx_kick()
534 vhost_signal(&vsock->dev, vq); in vhost_vsock_handle_tx_kick()
537 mutex_unlock(&vq->mutex); in vhost_vsock_handle_tx_kick()
542 struct vhost_virtqueue *vq = container_of(work, struct vhost_virtqueue, in vhost_vsock_handle_rx_kick() local
544 struct vhost_vsock *vsock = container_of(vq->dev, struct vhost_vsock, in vhost_vsock_handle_rx_kick()
547 vhost_transport_do_send_pkt(vsock, vq); in vhost_vsock_handle_rx_kick()
552 struct vhost_virtqueue *vq; in vhost_vsock_start() local
563 vq = &vsock->vqs[i]; in vhost_vsock_start()
565 mutex_lock(&vq->mutex); in vhost_vsock_start()
567 if (!vhost_vq_access_ok(vq)) { in vhost_vsock_start()
572 if (!vhost_vq_get_backend(vq)) { in vhost_vsock_start()
573 vhost_vq_set_backend(vq, vsock); in vhost_vsock_start()
574 ret = vhost_vq_init_access(vq); in vhost_vsock_start()
579 mutex_unlock(&vq->mutex); in vhost_vsock_start()
591 vhost_vq_set_backend(vq, NULL); in vhost_vsock_start()
592 mutex_unlock(&vq->mutex); in vhost_vsock_start()
595 vq = &vsock->vqs[i]; in vhost_vsock_start()
597 mutex_lock(&vq->mutex); in vhost_vsock_start()
598 vhost_vq_set_backend(vq, NULL); in vhost_vsock_start()
599 mutex_unlock(&vq->mutex); in vhost_vsock_start()
620 struct vhost_virtqueue *vq = &vsock->vqs[i]; in vhost_vsock_stop() local
622 mutex_lock(&vq->mutex); in vhost_vsock_stop()
623 vhost_vq_set_backend(vq, NULL); in vhost_vsock_stop()
624 mutex_unlock(&vq->mutex); in vhost_vsock_stop()
783 struct vhost_virtqueue *vq; in vhost_vsock_set_features() local
804 vq = &vsock->vqs[i]; in vhost_vsock_set_features()
805 mutex_lock(&vq->mutex); in vhost_vsock_set_features()
806 vq->acked_features = features; in vhost_vsock_set_features()
807 mutex_unlock(&vq->mutex); in vhost_vsock_set_features()