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()
103 if (info->vsk && !skb_set_owner_sk_safe(skb, sk_vsock(info->vsk))) { in virtio_transport_alloc_skb()
203 static int virtio_transport_send_pkt_info(struct vsock_sock *vsk, in virtio_transport_send_pkt_info() argument
213 info->type = virtio_transport_get_type(sk_vsock(vsk)); in virtio_transport_send_pkt_info()
215 t_ops = virtio_transport_get_ops(vsk); in virtio_transport_send_pkt_info()
220 src_port = vsk->local_addr.svm_port; in virtio_transport_send_pkt_info()
222 dst_cid = vsk->remote_addr.svm_cid; in virtio_transport_send_pkt_info()
223 dst_port = vsk->remote_addr.svm_port; in virtio_transport_send_pkt_info()
229 vvs = vsk->trans; in virtio_transport_send_pkt_info()
341 static int virtio_transport_send_credit_update(struct vsock_sock *vsk) in virtio_transport_send_credit_update() argument
345 .vsk = vsk, in virtio_transport_send_credit_update()
348 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_send_credit_update()
352 virtio_transport_stream_do_peek(struct vsock_sock *vsk, in virtio_transport_stream_do_peek() argument
356 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_do_peek()
398 virtio_transport_stream_do_dequeue(struct vsock_sock *vsk, in virtio_transport_stream_do_dequeue() argument
402 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_do_dequeue()
451 sock_rcvlowat(sk_vsock(vsk), 0, INT_MAX)); in virtio_transport_stream_do_dequeue()
466 virtio_transport_send_credit_update(vsk); in virtio_transport_stream_do_dequeue()
477 virtio_transport_seqpacket_do_peek(struct vsock_sock *vsk, in virtio_transport_seqpacket_do_peek() argument
480 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_do_peek()
533 static int virtio_transport_seqpacket_do_dequeue(struct vsock_sock *vsk, in virtio_transport_seqpacket_do_dequeue() argument
537 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_do_dequeue()
604 virtio_transport_send_credit_update(vsk); in virtio_transport_seqpacket_do_dequeue()
610 virtio_transport_stream_dequeue(struct vsock_sock *vsk, in virtio_transport_stream_dequeue() argument
615 return virtio_transport_stream_do_peek(vsk, msg, len); in virtio_transport_stream_dequeue()
617 return virtio_transport_stream_do_dequeue(vsk, msg, len); in virtio_transport_stream_dequeue()
622 virtio_transport_seqpacket_dequeue(struct vsock_sock *vsk, in virtio_transport_seqpacket_dequeue() argument
627 return virtio_transport_seqpacket_do_peek(vsk, msg); in virtio_transport_seqpacket_dequeue()
629 return virtio_transport_seqpacket_do_dequeue(vsk, msg, flags); in virtio_transport_seqpacket_dequeue()
634 virtio_transport_seqpacket_enqueue(struct vsock_sock *vsk, in virtio_transport_seqpacket_enqueue() argument
638 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_enqueue()
649 return virtio_transport_stream_enqueue(vsk, msg, len); in virtio_transport_seqpacket_enqueue()
654 virtio_transport_dgram_dequeue(struct vsock_sock *vsk, in virtio_transport_dgram_dequeue() argument
662 s64 virtio_transport_stream_has_data(struct vsock_sock *vsk) in virtio_transport_stream_has_data() argument
664 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_has_data()
675 u32 virtio_transport_seqpacket_has_data(struct vsock_sock *vsk) in virtio_transport_seqpacket_has_data() argument
677 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_has_data()
688 static s64 virtio_transport_has_space(struct vsock_sock *vsk) in virtio_transport_has_space() argument
690 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_has_space()
700 s64 virtio_transport_stream_has_space(struct vsock_sock *vsk) in virtio_transport_stream_has_space() argument
702 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_has_space()
706 bytes = virtio_transport_has_space(vsk); in virtio_transport_stream_has_space()
713 int virtio_transport_do_socket_init(struct vsock_sock *vsk, in virtio_transport_do_socket_init() argument
722 vsk->trans = vvs; in virtio_transport_do_socket_init()
723 vvs->vsk = vsk; in virtio_transport_do_socket_init()
730 if (vsk->buffer_size > VIRTIO_VSOCK_MAX_BUF_SIZE) in virtio_transport_do_socket_init()
731 vsk->buffer_size = VIRTIO_VSOCK_MAX_BUF_SIZE; in virtio_transport_do_socket_init()
733 vvs->buf_alloc = vsk->buffer_size; in virtio_transport_do_socket_init()
744 void virtio_transport_notify_buffer_size(struct vsock_sock *vsk, u64 *val) in virtio_transport_notify_buffer_size() argument
746 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_notify_buffer_size()
753 virtio_transport_send_credit_update(vsk); in virtio_transport_notify_buffer_size()
758 virtio_transport_notify_poll_in(struct vsock_sock *vsk, in virtio_transport_notify_poll_in() argument
762 *data_ready_now = vsock_stream_has_data(vsk) >= target; in virtio_transport_notify_poll_in()
769 virtio_transport_notify_poll_out(struct vsock_sock *vsk, in virtio_transport_notify_poll_out() argument
775 free_space = vsock_stream_has_space(vsk); in virtio_transport_notify_poll_out()
785 int virtio_transport_notify_recv_init(struct vsock_sock *vsk, in virtio_transport_notify_recv_init() argument
792 int virtio_transport_notify_recv_pre_block(struct vsock_sock *vsk, in virtio_transport_notify_recv_pre_block() argument
799 int virtio_transport_notify_recv_pre_dequeue(struct vsock_sock *vsk, in virtio_transport_notify_recv_pre_dequeue() argument
806 int virtio_transport_notify_recv_post_dequeue(struct vsock_sock *vsk, in virtio_transport_notify_recv_post_dequeue() argument
814 int virtio_transport_notify_send_init(struct vsock_sock *vsk, in virtio_transport_notify_send_init() argument
821 int virtio_transport_notify_send_pre_block(struct vsock_sock *vsk, in virtio_transport_notify_send_pre_block() argument
828 int virtio_transport_notify_send_pre_enqueue(struct vsock_sock *vsk, in virtio_transport_notify_send_pre_enqueue() argument
835 int virtio_transport_notify_send_post_enqueue(struct vsock_sock *vsk, in virtio_transport_notify_send_post_enqueue() argument
842 u64 virtio_transport_stream_rcvhiwat(struct vsock_sock *vsk) in virtio_transport_stream_rcvhiwat() argument
844 return vsk->buffer_size; in virtio_transport_stream_rcvhiwat()
848 bool virtio_transport_stream_is_active(struct vsock_sock *vsk) in virtio_transport_stream_is_active() argument
860 int virtio_transport_dgram_bind(struct vsock_sock *vsk, in virtio_transport_dgram_bind() argument
873 int virtio_transport_connect(struct vsock_sock *vsk) in virtio_transport_connect() argument
877 .vsk = vsk, in virtio_transport_connect()
880 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_connect()
884 int virtio_transport_shutdown(struct vsock_sock *vsk, int mode) in virtio_transport_shutdown() argument
892 .vsk = vsk, in virtio_transport_shutdown()
895 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_shutdown()
900 virtio_transport_dgram_enqueue(struct vsock_sock *vsk, in virtio_transport_dgram_enqueue() argument
910 virtio_transport_stream_enqueue(struct vsock_sock *vsk, in virtio_transport_stream_enqueue() argument
918 .vsk = vsk, in virtio_transport_stream_enqueue()
921 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_stream_enqueue()
925 void virtio_transport_destruct(struct vsock_sock *vsk) in virtio_transport_destruct() argument
927 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_destruct()
933 static int virtio_transport_reset(struct vsock_sock *vsk, in virtio_transport_reset() argument
939 .vsk = vsk, in virtio_transport_reset()
946 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_reset()
982 static void virtio_transport_remove_sock(struct vsock_sock *vsk) in virtio_transport_remove_sock() argument
984 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_remove_sock()
990 vsock_remove_sock(vsk); in virtio_transport_remove_sock()
1010 static void virtio_transport_do_close(struct vsock_sock *vsk, in virtio_transport_do_close() argument
1013 struct sock *sk = sk_vsock(vsk); in virtio_transport_do_close()
1016 vsk->peer_shutdown = SHUTDOWN_MASK; in virtio_transport_do_close()
1017 if (vsock_stream_has_data(vsk) <= 0) in virtio_transport_do_close()
1021 if (vsk->close_work_scheduled && in virtio_transport_do_close()
1022 (!cancel_timeout || cancel_delayed_work(&vsk->close_work))) { in virtio_transport_do_close()
1023 vsk->close_work_scheduled = false; in virtio_transport_do_close()
1025 virtio_transport_remove_sock(vsk); in virtio_transport_do_close()
1034 struct vsock_sock *vsk = in virtio_transport_close_timeout() local
1036 struct sock *sk = sk_vsock(vsk); in virtio_transport_close_timeout()
1042 (void)virtio_transport_reset(vsk, NULL); in virtio_transport_close_timeout()
1044 virtio_transport_do_close(vsk, false); in virtio_transport_close_timeout()
1047 vsk->close_work_scheduled = false; in virtio_transport_close_timeout()
1054 static bool virtio_transport_close(struct vsock_sock *vsk) in virtio_transport_close() argument
1056 struct sock *sk = &vsk->sk; in virtio_transport_close()
1063 if ((vsk->peer_shutdown & SHUTDOWN_MASK) == SHUTDOWN_MASK) { in virtio_transport_close()
1064 (void)virtio_transport_reset(vsk, NULL); in virtio_transport_close()
1069 (void)virtio_transport_shutdown(vsk, SHUTDOWN_MASK); in virtio_transport_close()
1079 INIT_DELAYED_WORK(&vsk->close_work, in virtio_transport_close()
1081 vsk->close_work_scheduled = true; in virtio_transport_close()
1082 schedule_delayed_work(&vsk->close_work, VSOCK_CLOSE_TIMEOUT); in virtio_transport_close()
1086 void virtio_transport_release(struct vsock_sock *vsk) in virtio_transport_release() argument
1088 struct sock *sk = &vsk->sk; in virtio_transport_release()
1092 remove_sock = virtio_transport_close(vsk); in virtio_transport_release()
1096 virtio_transport_remove_sock(vsk); in virtio_transport_release()
1106 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_connecting() local
1114 vsock_insert_connected(vsk); in virtio_transport_recv_connecting()
1131 virtio_transport_reset(vsk, skb); in virtio_transport_recv_connecting()
1139 virtio_transport_recv_enqueue(struct vsock_sock *vsk, in virtio_transport_recv_enqueue() argument
1142 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_recv_enqueue()
1201 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_connected() local
1206 virtio_transport_recv_enqueue(vsk, skb); in virtio_transport_recv_connected()
1210 virtio_transport_send_credit_update(vsk); in virtio_transport_recv_connected()
1217 vsk->peer_shutdown |= RCV_SHUTDOWN; in virtio_transport_recv_connected()
1219 vsk->peer_shutdown |= SEND_SHUTDOWN; in virtio_transport_recv_connected()
1220 if (vsk->peer_shutdown == SHUTDOWN_MASK) { in virtio_transport_recv_connected()
1221 if (vsock_stream_has_data(vsk) <= 0 && !sock_flag(sk, SOCK_DONE)) { in virtio_transport_recv_connected()
1222 (void)virtio_transport_reset(vsk, NULL); in virtio_transport_recv_connected()
1223 virtio_transport_do_close(vsk, true); in virtio_transport_recv_connected()
1230 vsock_remove_sock(vsk); in virtio_transport_recv_connected()
1236 virtio_transport_do_close(vsk, true); in virtio_transport_recv_connected()
1252 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_disconnecting() local
1255 virtio_transport_do_close(vsk, true); in virtio_transport_recv_disconnecting()
1259 virtio_transport_send_response(struct vsock_sock *vsk, in virtio_transport_send_response() argument
1268 .vsk = vsk, in virtio_transport_send_response()
1271 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_send_response()
1278 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_space_update() local
1279 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_space_update()
1294 space_available = virtio_transport_has_space(vsk); in virtio_transport_space_update()
1305 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_listen() local
1338 ret = vsock_assign_transport(vchild, vsk); in virtio_transport_recv_listen()
1376 struct vsock_sock *vsk; in virtio_transport_recv_pkt() local
1422 vsk = vsock_sk(sk); in virtio_transport_recv_pkt()
1437 if (vsk->local_addr.svm_cid != VMADDR_CID_ANY) in virtio_transport_recv_pkt()
1438 vsk->local_addr.svm_cid = dst.svm_cid; in virtio_transport_recv_pkt()
1484 int virtio_transport_purge_skbs(void *vsk, struct sk_buff_head *queue) in virtio_transport_purge_skbs() argument
1494 if (vsock_sk(skb->sk) != vsk) in virtio_transport_purge_skbs()
1511 int virtio_transport_read_skb(struct vsock_sock *vsk, skb_read_actor_t recv_actor) in virtio_transport_read_skb() argument
1513 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_read_skb()
1514 struct sock *sk = sk_vsock(vsk); in virtio_transport_read_skb()
1533 int virtio_transport_notify_set_rcvlowat(struct vsock_sock *vsk, int val) in virtio_transport_notify_set_rcvlowat() argument
1535 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_notify_set_rcvlowat()
1554 err = virtio_transport_send_credit_update(vsk); in virtio_transport_notify_set_rcvlowat()