Lines Matching refs:vsk

30 virtio_transport_get_ops(struct vsock_sock *vsk)  in virtio_transport_get_ops()  argument
32 const struct vsock_transport *t = vsock_core_get_transport(vsk); in virtio_transport_get_ops()
65 pkt->vsk = info->vsk; in virtio_transport_alloc_pkt()
189 static int virtio_transport_send_pkt_info(struct vsock_sock *vsk, in virtio_transport_send_pkt_info() argument
198 info->type = virtio_transport_get_type(sk_vsock(vsk)); in virtio_transport_send_pkt_info()
200 t_ops = virtio_transport_get_ops(vsk); in virtio_transport_send_pkt_info()
205 src_port = vsk->local_addr.svm_port; in virtio_transport_send_pkt_info()
207 dst_cid = vsk->remote_addr.svm_cid; in virtio_transport_send_pkt_info()
208 dst_port = vsk->remote_addr.svm_port; in virtio_transport_send_pkt_info()
214 vvs = vsk->trans; in virtio_transport_send_pkt_info()
290 static int virtio_transport_send_credit_update(struct vsock_sock *vsk) in virtio_transport_send_credit_update() argument
294 .vsk = vsk, in virtio_transport_send_credit_update()
297 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_send_credit_update()
301 virtio_transport_stream_do_peek(struct vsock_sock *vsk, in virtio_transport_stream_do_peek() argument
305 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_do_peek()
350 virtio_transport_stream_do_dequeue(struct vsock_sock *vsk, in virtio_transport_stream_do_dequeue() argument
354 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_do_dequeue()
402 virtio_transport_send_credit_update(vsk); in virtio_transport_stream_do_dequeue()
412 static int virtio_transport_seqpacket_do_dequeue(struct vsock_sock *vsk, in virtio_transport_seqpacket_do_dequeue() argument
416 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_do_dequeue()
479 virtio_transport_send_credit_update(vsk); in virtio_transport_seqpacket_do_dequeue()
485 virtio_transport_stream_dequeue(struct vsock_sock *vsk, in virtio_transport_stream_dequeue() argument
490 return virtio_transport_stream_do_peek(vsk, msg, len); in virtio_transport_stream_dequeue()
492 return virtio_transport_stream_do_dequeue(vsk, msg, len); in virtio_transport_stream_dequeue()
497 virtio_transport_seqpacket_dequeue(struct vsock_sock *vsk, in virtio_transport_seqpacket_dequeue() argument
504 return virtio_transport_seqpacket_do_dequeue(vsk, msg, flags); in virtio_transport_seqpacket_dequeue()
509 virtio_transport_seqpacket_enqueue(struct vsock_sock *vsk, in virtio_transport_seqpacket_enqueue() argument
513 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_enqueue()
524 return virtio_transport_stream_enqueue(vsk, msg, len); in virtio_transport_seqpacket_enqueue()
529 virtio_transport_dgram_dequeue(struct vsock_sock *vsk, in virtio_transport_dgram_dequeue() argument
537 s64 virtio_transport_stream_has_data(struct vsock_sock *vsk) in virtio_transport_stream_has_data() argument
539 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_has_data()
550 u32 virtio_transport_seqpacket_has_data(struct vsock_sock *vsk) in virtio_transport_seqpacket_has_data() argument
552 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_has_data()
563 static s64 virtio_transport_has_space(struct vsock_sock *vsk) in virtio_transport_has_space() argument
565 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_has_space()
575 s64 virtio_transport_stream_has_space(struct vsock_sock *vsk) in virtio_transport_stream_has_space() argument
577 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_has_space()
581 bytes = virtio_transport_has_space(vsk); in virtio_transport_stream_has_space()
588 int virtio_transport_do_socket_init(struct vsock_sock *vsk, in virtio_transport_do_socket_init() argument
597 vsk->trans = vvs; in virtio_transport_do_socket_init()
598 vvs->vsk = vsk; in virtio_transport_do_socket_init()
605 if (vsk->buffer_size > VIRTIO_VSOCK_MAX_BUF_SIZE) in virtio_transport_do_socket_init()
606 vsk->buffer_size = VIRTIO_VSOCK_MAX_BUF_SIZE; in virtio_transport_do_socket_init()
608 vvs->buf_alloc = vsk->buffer_size; in virtio_transport_do_socket_init()
619 void virtio_transport_notify_buffer_size(struct vsock_sock *vsk, u64 *val) in virtio_transport_notify_buffer_size() argument
621 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_notify_buffer_size()
628 virtio_transport_send_credit_update(vsk); in virtio_transport_notify_buffer_size()
633 virtio_transport_notify_poll_in(struct vsock_sock *vsk, in virtio_transport_notify_poll_in() argument
637 *data_ready_now = vsock_stream_has_data(vsk) >= target; in virtio_transport_notify_poll_in()
644 virtio_transport_notify_poll_out(struct vsock_sock *vsk, in virtio_transport_notify_poll_out() argument
650 free_space = vsock_stream_has_space(vsk); in virtio_transport_notify_poll_out()
660 int virtio_transport_notify_recv_init(struct vsock_sock *vsk, in virtio_transport_notify_recv_init() argument
667 int virtio_transport_notify_recv_pre_block(struct vsock_sock *vsk, in virtio_transport_notify_recv_pre_block() argument
674 int virtio_transport_notify_recv_pre_dequeue(struct vsock_sock *vsk, in virtio_transport_notify_recv_pre_dequeue() argument
681 int virtio_transport_notify_recv_post_dequeue(struct vsock_sock *vsk, in virtio_transport_notify_recv_post_dequeue() argument
689 int virtio_transport_notify_send_init(struct vsock_sock *vsk, in virtio_transport_notify_send_init() argument
696 int virtio_transport_notify_send_pre_block(struct vsock_sock *vsk, in virtio_transport_notify_send_pre_block() argument
703 int virtio_transport_notify_send_pre_enqueue(struct vsock_sock *vsk, in virtio_transport_notify_send_pre_enqueue() argument
710 int virtio_transport_notify_send_post_enqueue(struct vsock_sock *vsk, in virtio_transport_notify_send_post_enqueue() argument
717 u64 virtio_transport_stream_rcvhiwat(struct vsock_sock *vsk) in virtio_transport_stream_rcvhiwat() argument
719 return vsk->buffer_size; in virtio_transport_stream_rcvhiwat()
723 bool virtio_transport_stream_is_active(struct vsock_sock *vsk) in virtio_transport_stream_is_active() argument
735 int virtio_transport_dgram_bind(struct vsock_sock *vsk, in virtio_transport_dgram_bind() argument
748 int virtio_transport_connect(struct vsock_sock *vsk) in virtio_transport_connect() argument
752 .vsk = vsk, in virtio_transport_connect()
755 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_connect()
759 int virtio_transport_shutdown(struct vsock_sock *vsk, int mode) in virtio_transport_shutdown() argument
767 .vsk = vsk, in virtio_transport_shutdown()
770 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_shutdown()
775 virtio_transport_dgram_enqueue(struct vsock_sock *vsk, in virtio_transport_dgram_enqueue() argument
785 virtio_transport_stream_enqueue(struct vsock_sock *vsk, in virtio_transport_stream_enqueue() argument
793 .vsk = vsk, in virtio_transport_stream_enqueue()
796 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_stream_enqueue()
800 void virtio_transport_destruct(struct vsock_sock *vsk) in virtio_transport_destruct() argument
802 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_destruct()
808 static int virtio_transport_reset(struct vsock_sock *vsk, in virtio_transport_reset() argument
814 .vsk = vsk, in virtio_transport_reset()
821 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_reset()
858 static void virtio_transport_remove_sock(struct vsock_sock *vsk) in virtio_transport_remove_sock() argument
860 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_remove_sock()
871 vsock_remove_sock(vsk); in virtio_transport_remove_sock()
891 static void virtio_transport_do_close(struct vsock_sock *vsk, in virtio_transport_do_close() argument
894 struct sock *sk = sk_vsock(vsk); in virtio_transport_do_close()
897 vsk->peer_shutdown = SHUTDOWN_MASK; in virtio_transport_do_close()
898 if (vsock_stream_has_data(vsk) <= 0) in virtio_transport_do_close()
902 if (vsk->close_work_scheduled && in virtio_transport_do_close()
903 (!cancel_timeout || cancel_delayed_work(&vsk->close_work))) { in virtio_transport_do_close()
904 vsk->close_work_scheduled = false; in virtio_transport_do_close()
906 virtio_transport_remove_sock(vsk); in virtio_transport_do_close()
915 struct vsock_sock *vsk = in virtio_transport_close_timeout() local
917 struct sock *sk = sk_vsock(vsk); in virtio_transport_close_timeout()
923 (void)virtio_transport_reset(vsk, NULL); in virtio_transport_close_timeout()
925 virtio_transport_do_close(vsk, false); in virtio_transport_close_timeout()
928 vsk->close_work_scheduled = false; in virtio_transport_close_timeout()
935 static bool virtio_transport_close(struct vsock_sock *vsk) in virtio_transport_close() argument
937 struct sock *sk = &vsk->sk; in virtio_transport_close()
944 if ((vsk->peer_shutdown & SHUTDOWN_MASK) == SHUTDOWN_MASK) { in virtio_transport_close()
945 (void)virtio_transport_reset(vsk, NULL); in virtio_transport_close()
950 (void)virtio_transport_shutdown(vsk, SHUTDOWN_MASK); in virtio_transport_close()
960 INIT_DELAYED_WORK(&vsk->close_work, in virtio_transport_close()
962 vsk->close_work_scheduled = true; in virtio_transport_close()
963 schedule_delayed_work(&vsk->close_work, VSOCK_CLOSE_TIMEOUT); in virtio_transport_close()
967 void virtio_transport_release(struct vsock_sock *vsk) in virtio_transport_release() argument
969 struct sock *sk = &vsk->sk; in virtio_transport_release()
973 remove_sock = virtio_transport_close(vsk); in virtio_transport_release()
977 virtio_transport_remove_sock(vsk); in virtio_transport_release()
986 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_connecting() local
994 vsock_insert_connected(vsk); in virtio_transport_recv_connecting()
1011 virtio_transport_reset(vsk, pkt); in virtio_transport_recv_connecting()
1019 virtio_transport_recv_enqueue(struct vsock_sock *vsk, in virtio_transport_recv_enqueue() argument
1022 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_recv_enqueue()
1078 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_connected() local
1083 virtio_transport_recv_enqueue(vsk, pkt); in virtio_transport_recv_connected()
1087 virtio_transport_send_credit_update(vsk); in virtio_transport_recv_connected()
1094 vsk->peer_shutdown |= RCV_SHUTDOWN; in virtio_transport_recv_connected()
1096 vsk->peer_shutdown |= SEND_SHUTDOWN; in virtio_transport_recv_connected()
1097 if (vsk->peer_shutdown == SHUTDOWN_MASK && in virtio_transport_recv_connected()
1098 vsock_stream_has_data(vsk) <= 0 && in virtio_transport_recv_connected()
1100 (void)virtio_transport_reset(vsk, NULL); in virtio_transport_recv_connected()
1102 virtio_transport_do_close(vsk, true); in virtio_transport_recv_connected()
1108 virtio_transport_do_close(vsk, true); in virtio_transport_recv_connected()
1123 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_disconnecting() local
1126 virtio_transport_do_close(vsk, true); in virtio_transport_recv_disconnecting()
1130 virtio_transport_send_response(struct vsock_sock *vsk, in virtio_transport_send_response() argument
1138 .vsk = vsk, in virtio_transport_send_response()
1141 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_send_response()
1147 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_space_update() local
1148 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_space_update()
1163 space_available = virtio_transport_has_space(vsk); in virtio_transport_space_update()
1173 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_listen() local
1206 ret = vsock_assign_transport(vchild, vsk); in virtio_transport_recv_listen()
1243 struct vsock_sock *vsk; in virtio_transport_recv_pkt() local
1284 vsk = vsock_sk(sk); in virtio_transport_recv_pkt()
1299 if (vsk->local_addr.svm_cid != VMADDR_CID_ANY) in virtio_transport_recv_pkt()
1300 vsk->local_addr.svm_cid = dst.svm_cid; in virtio_transport_recv_pkt()