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()
59 t_ops = virtio_transport_get_ops(info->vsk); in virtio_transport_can_zcopy()
71 static int virtio_transport_init_zcopy_skb(struct vsock_sock *vsk, in virtio_transport_init_zcopy_skb() argument
85 uarg = msg_zerocopy_realloc(sk_vsock(vsk), in virtio_transport_init_zcopy_skb()
253 struct vsock_sock *vsk; in virtio_transport_alloc_skb() local
269 vsk = info->vsk; in virtio_transport_alloc_skb()
277 WARN_ON_ONCE(!(vsk && (info->msg && payload_len)) && zcopy); in virtio_transport_alloc_skb()
282 if (vsk) in virtio_transport_alloc_skb()
283 skb_set_owner_w(skb, sk_vsock(vsk)); in virtio_transport_alloc_skb()
325 static int virtio_transport_send_pkt_info(struct vsock_sock *vsk, in virtio_transport_send_pkt_info() argument
337 info->type = virtio_transport_get_type(sk_vsock(vsk)); in virtio_transport_send_pkt_info()
339 t_ops = virtio_transport_get_ops(vsk); in virtio_transport_send_pkt_info()
344 src_port = vsk->local_addr.svm_port; in virtio_transport_send_pkt_info()
346 dst_cid = vsk->remote_addr.svm_cid; in virtio_transport_send_pkt_info()
347 dst_port = vsk->remote_addr.svm_port; in virtio_transport_send_pkt_info()
353 vvs = vsk->trans; in virtio_transport_send_pkt_info()
366 if (!sock_flag(sk_vsock(vsk), SOCK_ZEROCOPY)) in virtio_transport_send_pkt_info()
400 if (virtio_transport_init_zcopy_skb(vsk, skb, in virtio_transport_send_pkt_info()
518 static int virtio_transport_send_credit_update(struct vsock_sock *vsk) in virtio_transport_send_credit_update() argument
522 .vsk = vsk, in virtio_transport_send_credit_update()
525 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_send_credit_update()
529 virtio_transport_stream_do_peek(struct vsock_sock *vsk, in virtio_transport_stream_do_peek() argument
533 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_do_peek()
576 virtio_transport_stream_do_dequeue(struct vsock_sock *vsk, in virtio_transport_stream_do_dequeue() argument
580 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_do_dequeue()
631 sock_rcvlowat(sk_vsock(vsk), 0, INT_MAX)); in virtio_transport_stream_do_dequeue()
646 virtio_transport_send_credit_update(vsk); in virtio_transport_stream_do_dequeue()
657 virtio_transport_seqpacket_do_peek(struct vsock_sock *vsk, in virtio_transport_seqpacket_do_peek() argument
660 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_do_peek()
714 static int virtio_transport_seqpacket_do_dequeue(struct vsock_sock *vsk, in virtio_transport_seqpacket_do_dequeue() argument
718 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_do_dequeue()
787 virtio_transport_send_credit_update(vsk); in virtio_transport_seqpacket_do_dequeue()
793 virtio_transport_stream_dequeue(struct vsock_sock *vsk, in virtio_transport_stream_dequeue() argument
798 return virtio_transport_stream_do_peek(vsk, msg, len); in virtio_transport_stream_dequeue()
800 return virtio_transport_stream_do_dequeue(vsk, msg, len); in virtio_transport_stream_dequeue()
805 virtio_transport_seqpacket_dequeue(struct vsock_sock *vsk, in virtio_transport_seqpacket_dequeue() argument
810 return virtio_transport_seqpacket_do_peek(vsk, msg); in virtio_transport_seqpacket_dequeue()
812 return virtio_transport_seqpacket_do_dequeue(vsk, msg, flags); in virtio_transport_seqpacket_dequeue()
817 virtio_transport_seqpacket_enqueue(struct vsock_sock *vsk, in virtio_transport_seqpacket_enqueue() argument
821 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_enqueue()
832 return virtio_transport_stream_enqueue(vsk, msg, len); in virtio_transport_seqpacket_enqueue()
837 virtio_transport_dgram_dequeue(struct vsock_sock *vsk, in virtio_transport_dgram_dequeue() argument
845 s64 virtio_transport_stream_has_data(struct vsock_sock *vsk) in virtio_transport_stream_has_data() argument
847 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_has_data()
858 u32 virtio_transport_seqpacket_has_data(struct vsock_sock *vsk) in virtio_transport_seqpacket_has_data() argument
860 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_seqpacket_has_data()
871 static s64 virtio_transport_has_space(struct vsock_sock *vsk) in virtio_transport_has_space() argument
873 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_has_space()
883 s64 virtio_transport_stream_has_space(struct vsock_sock *vsk) in virtio_transport_stream_has_space() argument
885 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_stream_has_space()
889 bytes = virtio_transport_has_space(vsk); in virtio_transport_stream_has_space()
896 int virtio_transport_do_socket_init(struct vsock_sock *vsk, in virtio_transport_do_socket_init() argument
905 vsk->trans = vvs; in virtio_transport_do_socket_init()
906 vvs->vsk = vsk; in virtio_transport_do_socket_init()
913 if (vsk->buffer_size > VIRTIO_VSOCK_MAX_BUF_SIZE) in virtio_transport_do_socket_init()
914 vsk->buffer_size = VIRTIO_VSOCK_MAX_BUF_SIZE; in virtio_transport_do_socket_init()
916 vvs->buf_alloc = vsk->buffer_size; in virtio_transport_do_socket_init()
927 void virtio_transport_notify_buffer_size(struct vsock_sock *vsk, u64 *val) in virtio_transport_notify_buffer_size() argument
929 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_notify_buffer_size()
936 virtio_transport_send_credit_update(vsk); in virtio_transport_notify_buffer_size()
941 virtio_transport_notify_poll_in(struct vsock_sock *vsk, in virtio_transport_notify_poll_in() argument
945 *data_ready_now = vsock_stream_has_data(vsk) >= target; in virtio_transport_notify_poll_in()
952 virtio_transport_notify_poll_out(struct vsock_sock *vsk, in virtio_transport_notify_poll_out() argument
958 free_space = vsock_stream_has_space(vsk); in virtio_transport_notify_poll_out()
968 int virtio_transport_notify_recv_init(struct vsock_sock *vsk, in virtio_transport_notify_recv_init() argument
975 int virtio_transport_notify_recv_pre_block(struct vsock_sock *vsk, in virtio_transport_notify_recv_pre_block() argument
982 int virtio_transport_notify_recv_pre_dequeue(struct vsock_sock *vsk, in virtio_transport_notify_recv_pre_dequeue() argument
989 int virtio_transport_notify_recv_post_dequeue(struct vsock_sock *vsk, in virtio_transport_notify_recv_post_dequeue() argument
997 int virtio_transport_notify_send_init(struct vsock_sock *vsk, in virtio_transport_notify_send_init() argument
1004 int virtio_transport_notify_send_pre_block(struct vsock_sock *vsk, in virtio_transport_notify_send_pre_block() argument
1011 int virtio_transport_notify_send_pre_enqueue(struct vsock_sock *vsk, in virtio_transport_notify_send_pre_enqueue() argument
1018 int virtio_transport_notify_send_post_enqueue(struct vsock_sock *vsk, in virtio_transport_notify_send_post_enqueue() argument
1025 u64 virtio_transport_stream_rcvhiwat(struct vsock_sock *vsk) in virtio_transport_stream_rcvhiwat() argument
1027 return vsk->buffer_size; in virtio_transport_stream_rcvhiwat()
1031 bool virtio_transport_stream_is_active(struct vsock_sock *vsk) in virtio_transport_stream_is_active() argument
1043 int virtio_transport_dgram_bind(struct vsock_sock *vsk, in virtio_transport_dgram_bind() argument
1056 int virtio_transport_connect(struct vsock_sock *vsk) in virtio_transport_connect() argument
1060 .vsk = vsk, in virtio_transport_connect()
1063 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_connect()
1067 int virtio_transport_shutdown(struct vsock_sock *vsk, int mode) in virtio_transport_shutdown() argument
1075 .vsk = vsk, in virtio_transport_shutdown()
1078 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_shutdown()
1083 virtio_transport_dgram_enqueue(struct vsock_sock *vsk, in virtio_transport_dgram_enqueue() argument
1093 virtio_transport_stream_enqueue(struct vsock_sock *vsk, in virtio_transport_stream_enqueue() argument
1101 .vsk = vsk, in virtio_transport_stream_enqueue()
1104 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_stream_enqueue()
1108 void virtio_transport_destruct(struct vsock_sock *vsk) in virtio_transport_destruct() argument
1110 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_destruct()
1113 vsk->trans = NULL; in virtio_transport_destruct()
1117 ssize_t virtio_transport_unsent_bytes(struct vsock_sock *vsk) in virtio_transport_unsent_bytes() argument
1119 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_unsent_bytes()
1130 static int virtio_transport_reset(struct vsock_sock *vsk, in virtio_transport_reset() argument
1136 .vsk = vsk, in virtio_transport_reset()
1143 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_reset()
1179 static void virtio_transport_remove_sock(struct vsock_sock *vsk) in virtio_transport_remove_sock() argument
1181 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_remove_sock()
1187 vsock_remove_sock(vsk); in virtio_transport_remove_sock()
1207 static void virtio_transport_do_close(struct vsock_sock *vsk, in virtio_transport_do_close() argument
1210 struct sock *sk = sk_vsock(vsk); in virtio_transport_do_close()
1213 vsk->peer_shutdown = SHUTDOWN_MASK; in virtio_transport_do_close()
1214 if (vsock_stream_has_data(vsk) <= 0) in virtio_transport_do_close()
1218 if (vsk->close_work_scheduled && in virtio_transport_do_close()
1219 (!cancel_timeout || cancel_delayed_work(&vsk->close_work))) { in virtio_transport_do_close()
1220 vsk->close_work_scheduled = false; in virtio_transport_do_close()
1222 virtio_transport_remove_sock(vsk); in virtio_transport_do_close()
1231 struct vsock_sock *vsk = in virtio_transport_close_timeout() local
1233 struct sock *sk = sk_vsock(vsk); in virtio_transport_close_timeout()
1239 (void)virtio_transport_reset(vsk, NULL); in virtio_transport_close_timeout()
1241 virtio_transport_do_close(vsk, false); in virtio_transport_close_timeout()
1244 vsk->close_work_scheduled = false; in virtio_transport_close_timeout()
1251 static bool virtio_transport_close(struct vsock_sock *vsk) in virtio_transport_close() argument
1253 struct sock *sk = &vsk->sk; in virtio_transport_close()
1260 if ((vsk->peer_shutdown & SHUTDOWN_MASK) == SHUTDOWN_MASK) { in virtio_transport_close()
1261 (void)virtio_transport_reset(vsk, NULL); in virtio_transport_close()
1266 (void)virtio_transport_shutdown(vsk, SHUTDOWN_MASK); in virtio_transport_close()
1276 INIT_DELAYED_WORK(&vsk->close_work, in virtio_transport_close()
1278 vsk->close_work_scheduled = true; in virtio_transport_close()
1279 schedule_delayed_work(&vsk->close_work, VSOCK_CLOSE_TIMEOUT); in virtio_transport_close()
1283 void virtio_transport_release(struct vsock_sock *vsk) in virtio_transport_release() argument
1285 struct sock *sk = &vsk->sk; in virtio_transport_release()
1289 remove_sock = virtio_transport_close(vsk); in virtio_transport_release()
1293 virtio_transport_remove_sock(vsk); in virtio_transport_release()
1303 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_connecting() local
1311 vsock_insert_connected(vsk); in virtio_transport_recv_connecting()
1328 virtio_transport_reset(vsk, skb); in virtio_transport_recv_connecting()
1336 virtio_transport_recv_enqueue(struct vsock_sock *vsk, in virtio_transport_recv_enqueue() argument
1339 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_recv_enqueue()
1398 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_connected() local
1403 virtio_transport_recv_enqueue(vsk, skb); in virtio_transport_recv_connected()
1407 virtio_transport_send_credit_update(vsk); in virtio_transport_recv_connected()
1414 vsk->peer_shutdown |= RCV_SHUTDOWN; in virtio_transport_recv_connected()
1416 vsk->peer_shutdown |= SEND_SHUTDOWN; in virtio_transport_recv_connected()
1417 if (vsk->peer_shutdown == SHUTDOWN_MASK) { in virtio_transport_recv_connected()
1418 if (vsock_stream_has_data(vsk) <= 0 && !sock_flag(sk, SOCK_DONE)) { in virtio_transport_recv_connected()
1419 (void)virtio_transport_reset(vsk, NULL); in virtio_transport_recv_connected()
1420 virtio_transport_do_close(vsk, true); in virtio_transport_recv_connected()
1427 vsock_remove_sock(vsk); in virtio_transport_recv_connected()
1433 virtio_transport_do_close(vsk, true); in virtio_transport_recv_connected()
1449 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_disconnecting() local
1452 virtio_transport_do_close(vsk, true); in virtio_transport_recv_disconnecting()
1456 virtio_transport_send_response(struct vsock_sock *vsk, in virtio_transport_send_response() argument
1465 .vsk = vsk, in virtio_transport_send_response()
1468 return virtio_transport_send_pkt_info(vsk, &info); in virtio_transport_send_response()
1475 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_space_update() local
1476 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_space_update()
1491 space_available = virtio_transport_has_space(vsk); in virtio_transport_space_update()
1502 struct vsock_sock *vsk = vsock_sk(sk); in virtio_transport_recv_listen() local
1543 ret = vsock_assign_transport(vchild, vsk); in virtio_transport_recv_listen()
1581 struct vsock_sock *vsk; in virtio_transport_recv_pkt() local
1627 vsk = vsock_sk(sk); in virtio_transport_recv_pkt()
1642 if (vsk->local_addr.svm_cid != VMADDR_CID_ANY) in virtio_transport_recv_pkt()
1643 vsk->local_addr.svm_cid = dst.svm_cid; in virtio_transport_recv_pkt()
1689 int virtio_transport_purge_skbs(void *vsk, struct sk_buff_head *queue) in virtio_transport_purge_skbs() argument
1699 if (vsock_sk(skb->sk) != vsk) in virtio_transport_purge_skbs()
1716 int virtio_transport_read_skb(struct vsock_sock *vsk, skb_read_actor_t recv_actor) in virtio_transport_read_skb() argument
1718 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_read_skb()
1719 struct sock *sk = sk_vsock(vsk); in virtio_transport_read_skb()
1742 virtio_transport_send_credit_update(vsk); in virtio_transport_read_skb()
1748 int virtio_transport_notify_set_rcvlowat(struct vsock_sock *vsk, int val) in virtio_transport_notify_set_rcvlowat() argument
1750 struct virtio_vsock_sock *vvs = vsk->trans; in virtio_transport_notify_set_rcvlowat()
1769 err = virtio_transport_send_credit_update(vsk); in virtio_transport_notify_set_rcvlowat()