Lines Matching refs:vsk
34 virtio_transport_get_ops(struct vsock_sock *vsk) in virtio_transport_get_ops() argument
36 const struct vsock_transport *t = vsock_core_get_transport(vsk); in virtio_transport_get_ops()
69 pkt->vsk = info->vsk; in virtio_transport_alloc_pkt()
193 static int virtio_transport_send_pkt_info(struct vsock_sock *vsk, in virtio_transport_send_pkt_info() argument
202 info->type = virtio_transport_get_type(sk_vsock(vsk)); in virtio_transport_send_pkt_info()
204 t_ops = virtio_transport_get_ops(vsk); in virtio_transport_send_pkt_info()
209 src_port = vsk->local_addr.svm_port; in virtio_transport_send_pkt_info()
211 dst_cid = vsk->remote_addr.svm_cid; in virtio_transport_send_pkt_info()
212 dst_port = vsk->remote_addr.svm_port; in virtio_transport_send_pkt_info()
218 vvs = vsk->trans; in virtio_transport_send_pkt_info()
294 static int virtio_transport_send_credit_update(struct vsock_sock *vsk) in virtio_transport_send_credit_update() argument
298 .vsk = vsk, in virtio_transport_send_credit_update()
301 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_send_credit_update()
305 virtio_transport_stream_do_peek(struct vsock_sock *vsk, in virtio_transport_stream_do_peek() argument
309 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_do_peek()
354 virtio_transport_stream_do_dequeue(struct vsock_sock *vsk, in virtio_transport_stream_do_dequeue() argument
358 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_do_dequeue()
398 sock_rcvlowat(sk_vsock(vsk), 0, INT_MAX)); in virtio_transport_stream_do_dequeue()
413 virtio_transport_send_credit_update(vsk); in virtio_transport_stream_do_dequeue()
423 static int virtio_transport_seqpacket_do_dequeue(struct vsock_sock *vsk, in virtio_transport_seqpacket_do_dequeue() argument
427 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_do_dequeue()
490 virtio_transport_send_credit_update(vsk); in virtio_transport_seqpacket_do_dequeue()
496 virtio_transport_stream_dequeue(struct vsock_sock *vsk, in virtio_transport_stream_dequeue() argument
501 return virtio_transport_stream_do_peek(vsk, msg, len); in virtio_transport_stream_dequeue()
503 return virtio_transport_stream_do_dequeue(vsk, msg, len); in virtio_transport_stream_dequeue()
508 virtio_transport_seqpacket_dequeue(struct vsock_sock *vsk, in virtio_transport_seqpacket_dequeue() argument
515 return virtio_transport_seqpacket_do_dequeue(vsk, msg, flags); in virtio_transport_seqpacket_dequeue()
520 virtio_transport_seqpacket_enqueue(struct vsock_sock *vsk, in virtio_transport_seqpacket_enqueue() argument
524 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_enqueue()
535 return virtio_transport_stream_enqueue(vsk, msg, len); in virtio_transport_seqpacket_enqueue()
540 virtio_transport_dgram_dequeue(struct vsock_sock *vsk, in virtio_transport_dgram_dequeue() argument
548 s64 virtio_transport_stream_has_data(struct vsock_sock *vsk) in virtio_transport_stream_has_data() argument
550 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_has_data()
561 u32 virtio_transport_seqpacket_has_data(struct vsock_sock *vsk) in virtio_transport_seqpacket_has_data() argument
563 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_has_data()
574 static s64 virtio_transport_has_space(struct vsock_sock *vsk) in virtio_transport_has_space() argument
576 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_has_space()
586 s64 virtio_transport_stream_has_space(struct vsock_sock *vsk) in virtio_transport_stream_has_space() argument
588 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_has_space()
592 bytes = virtio_transport_has_space(vsk); in virtio_transport_stream_has_space()
599 int virtio_transport_do_socket_init(struct vsock_sock *vsk, in virtio_transport_do_socket_init() argument
608 vsk->trans = vvs; in virtio_transport_do_socket_init()
609 vvs->vsk = vsk; in virtio_transport_do_socket_init()
616 if (vsk->buffer_size > VIRTIO_VSOCK_MAX_BUF_SIZE) in virtio_transport_do_socket_init()
617 vsk->buffer_size = VIRTIO_VSOCK_MAX_BUF_SIZE; in virtio_transport_do_socket_init()
619 vvs->buf_alloc = vsk->buffer_size; in virtio_transport_do_socket_init()
630 void virtio_transport_notify_buffer_size(struct vsock_sock *vsk, u64 *val) in virtio_transport_notify_buffer_size() argument
632 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_notify_buffer_size()
639 virtio_transport_send_credit_update(vsk); in virtio_transport_notify_buffer_size()
644 virtio_transport_notify_poll_in(struct vsock_sock *vsk, in virtio_transport_notify_poll_in() argument
648 if (vsock_stream_has_data(vsk)) in virtio_transport_notify_poll_in()
658 virtio_transport_notify_poll_out(struct vsock_sock *vsk, in virtio_transport_notify_poll_out() argument
664 free_space = vsock_stream_has_space(vsk); in virtio_transport_notify_poll_out()
674 int virtio_transport_notify_recv_init(struct vsock_sock *vsk, in virtio_transport_notify_recv_init() argument
681 int virtio_transport_notify_recv_pre_block(struct vsock_sock *vsk, in virtio_transport_notify_recv_pre_block() argument
688 int virtio_transport_notify_recv_pre_dequeue(struct vsock_sock *vsk, in virtio_transport_notify_recv_pre_dequeue() argument
695 int virtio_transport_notify_recv_post_dequeue(struct vsock_sock *vsk, in virtio_transport_notify_recv_post_dequeue() argument
703 int virtio_transport_notify_send_init(struct vsock_sock *vsk, in virtio_transport_notify_send_init() argument
710 int virtio_transport_notify_send_pre_block(struct vsock_sock *vsk, in virtio_transport_notify_send_pre_block() argument
717 int virtio_transport_notify_send_pre_enqueue(struct vsock_sock *vsk, in virtio_transport_notify_send_pre_enqueue() argument
724 int virtio_transport_notify_send_post_enqueue(struct vsock_sock *vsk, in virtio_transport_notify_send_post_enqueue() argument
731 u64 virtio_transport_stream_rcvhiwat(struct vsock_sock *vsk) in virtio_transport_stream_rcvhiwat() argument
733 return vsk->buffer_size; in virtio_transport_stream_rcvhiwat()
737 bool virtio_transport_stream_is_active(struct vsock_sock *vsk) in virtio_transport_stream_is_active() argument
749 int virtio_transport_dgram_bind(struct vsock_sock *vsk, in virtio_transport_dgram_bind() argument
762 int virtio_transport_connect(struct vsock_sock *vsk) in virtio_transport_connect() argument
766 .vsk = vsk, in virtio_transport_connect()
769 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_connect()
773 int virtio_transport_shutdown(struct vsock_sock *vsk, int mode) in virtio_transport_shutdown() argument
781 .vsk = vsk, in virtio_transport_shutdown()
784 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_shutdown()
789 virtio_transport_dgram_enqueue(struct vsock_sock *vsk, in virtio_transport_dgram_enqueue() argument
799 virtio_transport_stream_enqueue(struct vsock_sock *vsk, in virtio_transport_stream_enqueue() argument
807 .vsk = vsk, in virtio_transport_stream_enqueue()
810 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_stream_enqueue()
814 void virtio_transport_destruct(struct vsock_sock *vsk) in virtio_transport_destruct() argument
816 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_destruct()
822 static int virtio_transport_reset(struct vsock_sock *vsk, in virtio_transport_reset() argument
828 .vsk = vsk, in virtio_transport_reset()
835 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_reset()
872 static void virtio_transport_remove_sock(struct vsock_sock *vsk) in virtio_transport_remove_sock() argument
874 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_remove_sock()
885 vsock_remove_sock(vsk); in virtio_transport_remove_sock()
905 static void virtio_transport_do_close(struct vsock_sock *vsk, in virtio_transport_do_close() argument
908 struct sock *sk = sk_vsock(vsk); in virtio_transport_do_close()
911 vsk->peer_shutdown = SHUTDOWN_MASK; in virtio_transport_do_close()
912 if (vsock_stream_has_data(vsk) <= 0) in virtio_transport_do_close()
916 if (vsk->close_work_scheduled && in virtio_transport_do_close()
917 (!cancel_timeout || cancel_delayed_work(&vsk->close_work))) { in virtio_transport_do_close()
918 vsk->close_work_scheduled = false; in virtio_transport_do_close()
920 virtio_transport_remove_sock(vsk); in virtio_transport_do_close()
929 struct vsock_sock *vsk = in virtio_transport_close_timeout() local
931 struct sock *sk = sk_vsock(vsk); in virtio_transport_close_timeout()
937 (void)virtio_transport_reset(vsk, NULL); in virtio_transport_close_timeout()
939 virtio_transport_do_close(vsk, false); in virtio_transport_close_timeout()
942 vsk->close_work_scheduled = false; in virtio_transport_close_timeout()
949 static bool virtio_transport_close(struct vsock_sock *vsk) in virtio_transport_close() argument
951 struct sock *sk = &vsk->sk; in virtio_transport_close()
958 if ((vsk->peer_shutdown & SHUTDOWN_MASK) == SHUTDOWN_MASK) { in virtio_transport_close()
959 (void)virtio_transport_reset(vsk, NULL); in virtio_transport_close()
964 (void)virtio_transport_shutdown(vsk, SHUTDOWN_MASK); in virtio_transport_close()
974 INIT_DELAYED_WORK(&vsk->close_work, in virtio_transport_close()
976 vsk->close_work_scheduled = true; in virtio_transport_close()
977 schedule_delayed_work(&vsk->close_work, VSOCK_CLOSE_TIMEOUT); in virtio_transport_close()
981 void virtio_transport_release(struct vsock_sock *vsk) in virtio_transport_release() argument
983 struct sock *sk = &vsk->sk; in virtio_transport_release()
987 remove_sock = virtio_transport_close(vsk); in virtio_transport_release()
991 virtio_transport_remove_sock(vsk); in virtio_transport_release()
1000 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_connecting() local
1008 vsock_insert_connected(vsk); in virtio_transport_recv_connecting()
1025 virtio_transport_reset(vsk, pkt); in virtio_transport_recv_connecting()
1033 virtio_transport_recv_enqueue(struct vsock_sock *vsk, in virtio_transport_recv_enqueue() argument
1036 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_recv_enqueue()
1092 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_connected() local
1097 virtio_transport_recv_enqueue(vsk, pkt); in virtio_transport_recv_connected()
1101 virtio_transport_send_credit_update(vsk); in virtio_transport_recv_connected()
1108 vsk->peer_shutdown |= RCV_SHUTDOWN; in virtio_transport_recv_connected()
1110 vsk->peer_shutdown |= SEND_SHUTDOWN; in virtio_transport_recv_connected()
1111 if (vsk->peer_shutdown == SHUTDOWN_MASK && in virtio_transport_recv_connected()
1112 vsock_stream_has_data(vsk) <= 0 && in virtio_transport_recv_connected()
1114 (void)virtio_transport_reset(vsk, NULL); in virtio_transport_recv_connected()
1116 virtio_transport_do_close(vsk, true); in virtio_transport_recv_connected()
1122 virtio_transport_do_close(vsk, true); in virtio_transport_recv_connected()
1137 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_disconnecting() local
1140 virtio_transport_do_close(vsk, true); in virtio_transport_recv_disconnecting()
1144 virtio_transport_send_response(struct vsock_sock *vsk, in virtio_transport_send_response() argument
1152 .vsk = vsk, in virtio_transport_send_response()
1155 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_send_response()
1161 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_space_update() local
1162 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_space_update()
1177 space_available = virtio_transport_has_space(vsk); in virtio_transport_space_update()
1187 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_listen() local
1220 ret = vsock_assign_transport(vchild, vsk); in virtio_transport_recv_listen()
1257 struct vsock_sock *vsk; in virtio_transport_recv_pkt() local
1298 vsk = vsock_sk(sk); in virtio_transport_recv_pkt()
1313 if (vsk->local_addr.svm_cid != VMADDR_CID_ANY) in virtio_transport_recv_pkt()
1314 vsk->local_addr.svm_cid = dst.svm_cid; in virtio_transport_recv_pkt()