Lines Matching defs:vsk

60 static bool vmci_check_transport(struct vsock_sock *vsk);
286 struct vsock_sock *vsk;
288 vsk = vsock_sk(sk);
290 if (!vsock_addr_bound(&vsk->local_addr))
293 if (!vsock_addr_bound(&vsk->remote_addr))
296 return vmci_transport_alloc_send_control_pkt(&vsk->local_addr,
297 &vsk->remote_addr,
319 struct vsock_sock *vsk;
324 vsk = vsock_sk(sk);
326 if (!vsock_addr_bound(&vsk->local_addr))
329 if (vsock_addr_bound(&vsk->remote_addr)) {
330 dst_ptr = &vsk->remote_addr;
336 return vmci_transport_alloc_send_control_pkt(&vsk->local_addr, dst_ptr,
450 static int vmci_transport_shutdown(struct vsock_sock *vsk, int mode)
453 &vsk->sk,
616 struct vsock_sock *vsk;
629 vsk = vsock_sk(sk);
630 if (!vmci_transport_allow_dgram(vsk, dg->src.context))
677 struct vsock_sock *vsk;
746 vsk = vsock_sk(sk);
747 if (!vmci_transport_allow_dgram(vsk, pkt->dg.src.context)) {
761 vsk->local_addr.svm_cid = dst.svm_cid;
764 vmci_trans(vsk)->notify_ops->handle_notify_pkt(
805 struct vsock_sock *vsk;
807 vsk = vsock_sk(sk);
808 if (!vmci_handle_is_invalid(vmci_trans(vsk)->qp_handle)) {
814 vsk->peer_shutdown = SHUTDOWN_MASK;
823 if (vsk->local_addr.svm_cid == VMADDR_CID_HOST ||
824 vsock_stream_has_data(vsk) <= 0) {
1280 struct vsock_sock *vsk;
1284 vsk = vsock_sk(sk);
1290 vmci_trans(vsk)->qp_handle)) {
1303 vsock_insert_connected(vsk);
1310 || pkt->dg.src.context != vsk->remote_addr.svm_cid
1311 || pkt->src_port != vsk->remote_addr.svm_port
1312 || !vmci_handle_is_invalid(vmci_trans(vsk)->qp_handle)
1313 || vmci_trans(vsk)->qpair
1314 || vmci_trans(vsk)->produce_size != 0
1315 || vmci_trans(vsk)->consume_size != 0
1316 || vmci_trans(vsk)->detach_sub_id != VMCI_INVALID_ID) {
1348 if (vsk->ignore_connecting_rst) {
1349 vsk->ignore_connecting_rst = false;
1380 struct vsock_sock *vsk;
1390 vsk = vsock_sk(sk);
1397 vsk->sent_request = false;
1398 vsk->ignore_connecting_rst = false;
1401 if (pkt->u.size < vsk->buffer_min_size ||
1402 pkt->u.size > vsk->buffer_max_size) {
1409 if (vsk->local_addr.svm_cid == VMADDR_CID_ANY)
1410 vsk->local_addr.svm_cid = pkt->dg.dst.context;
1444 vmci_trans(vsk), &detach_sub_id);
1452 is_local = vsk->remote_addr.svm_cid == vsk->local_addr.svm_cid;
1459 vsk->remote_addr.svm_cid,
1462 vsk,
1463 vsk->
1474 vmci_trans(vsk)->qp_handle = handle;
1475 vmci_trans(vsk)->qpair = qpair;
1477 vmci_trans(vsk)->produce_size = vmci_trans(vsk)->consume_size =
1480 vmci_trans(vsk)->detach_sub_id = detach_sub_id;
1482 vmci_trans(vsk)->notify_ops->process_negotiate(sk);
1501 struct vsock_sock *vsk = vsock_sk(sk);
1503 if (vsk->sent_request) {
1504 vsk->sent_request = false;
1505 vsk->ignore_connecting_rst = true;
1507 err = vmci_transport_send_conn_request(sk, vsk->buffer_size);
1521 struct vsock_sock *vsk;
1535 vsk = vsock_sk(sk);
1537 vsk->peer_shutdown |= pkt->u.mode;
1543 vsk = vsock_sk(sk);
1554 vsk->peer_shutdown = SHUTDOWN_MASK;
1555 if (vsock_stream_has_data(vsk) <= 0)
1562 vsk = vsock_sk(sk);
1563 vmci_trans(vsk)->notify_ops->handle_notify_pkt(
1575 static int vmci_transport_socket_init(struct vsock_sock *vsk,
1578 vsk->trans = kmalloc(sizeof(struct vmci_transport), GFP_KERNEL);
1579 if (!vsk->trans)
1582 vmci_trans(vsk)->dg_handle = VMCI_INVALID_HANDLE;
1583 vmci_trans(vsk)->qp_handle = VMCI_INVALID_HANDLE;
1584 vmci_trans(vsk)->qpair = NULL;
1585 vmci_trans(vsk)->produce_size = vmci_trans(vsk)->consume_size = 0;
1586 vmci_trans(vsk)->detach_sub_id = VMCI_INVALID_ID;
1587 vmci_trans(vsk)->notify_ops = NULL;
1588 INIT_LIST_HEAD(&vmci_trans(vsk)->elem);
1589 vmci_trans(vsk)->sk = &vsk->sk;
1590 spin_lock_init(&vmci_trans(vsk)->lock);
1629 static void vmci_transport_destruct(struct vsock_sock *vsk)
1632 if (!vmci_trans(vsk))
1635 /* Ensure that the detach callback doesn't use the sk/vsk
1638 spin_lock_bh(&vmci_trans(vsk)->lock);
1639 vmci_trans(vsk)->sk = NULL;
1640 spin_unlock_bh(&vmci_trans(vsk)->lock);
1642 if (vmci_trans(vsk)->notify_ops)
1643 vmci_trans(vsk)->notify_ops->socket_destruct(vsk);
1646 list_add(&vmci_trans(vsk)->elem, &vmci_transport_cleanup_list);
1650 vsk->trans = NULL;
1653 static void vmci_transport_release(struct vsock_sock *vsk)
1655 vsock_remove_sock(vsk);
1657 if (!vmci_handle_is_invalid(vmci_trans(vsk)->dg_handle)) {
1658 vmci_datagram_destroy_handle(vmci_trans(vsk)->dg_handle);
1659 vmci_trans(vsk)->dg_handle = VMCI_INVALID_HANDLE;
1663 static int vmci_transport_dgram_bind(struct vsock_sock *vsk,
1684 &vsk->sk,
1685 &vmci_trans(vsk)->dg_handle);
1688 vsock_addr_init(&vsk->local_addr, addr->svm_cid,
1689 vmci_trans(vsk)->dg_handle.resource);
1695 struct vsock_sock *vsk,
1706 if (!vmci_transport_allow_dgram(vsk, remote_addr->svm_cid))
1722 dg->src = vmci_make_handle(vsk->local_addr.svm_cid,
1723 vsk->local_addr.svm_port);
1734 static int vmci_transport_dgram_dequeue(struct vsock_sock *vsk,
1748 skb = skb_recv_datagram(&vsk->sk, flags, &err);
1783 skb_free_datagram(&vsk->sk, skb);
1799 static int vmci_transport_connect(struct vsock_sock *vsk)
1803 struct sock *sk = &vsk->sk;
1807 err = vmci_transport_send_conn_request(sk, vsk->buffer_size);
1815 err = vmci_transport_send_conn_request2(sk, vsk->buffer_size,
1822 vsk->sent_request = true;
1829 struct vsock_sock *vsk,
1837 err = vmci_qpair_peekv(vmci_trans(vsk)->qpair, msg, len, 0);
1839 err = vmci_qpair_dequev(vmci_trans(vsk)->qpair, msg, len, 0);
1848 struct vsock_sock *vsk,
1854 err = vmci_qpair_enquev(vmci_trans(vsk)->qpair, msg, len, 0);
1861 static s64 vmci_transport_stream_has_data(struct vsock_sock *vsk)
1863 return vmci_qpair_consume_buf_ready(vmci_trans(vsk)->qpair);
1866 static s64 vmci_transport_stream_has_space(struct vsock_sock *vsk)
1868 return vmci_qpair_produce_free_space(vmci_trans(vsk)->qpair);
1871 static u64 vmci_transport_stream_rcvhiwat(struct vsock_sock *vsk)
1873 return vmci_trans(vsk)->consume_size;
1876 static bool vmci_transport_stream_is_active(struct vsock_sock *vsk)
1878 return !vmci_handle_is_invalid(vmci_trans(vsk)->qp_handle);
1882 struct vsock_sock *vsk,
1886 return vmci_trans(vsk)->notify_ops->poll_in(
1887 &vsk->sk, target, data_ready_now);
1891 struct vsock_sock *vsk,
1895 return vmci_trans(vsk)->notify_ops->poll_out(
1896 &vsk->sk, target, space_available_now);
1900 struct vsock_sock *vsk,
1904 return vmci_trans(vsk)->notify_ops->recv_init(
1905 &vsk->sk, target,
1910 struct vsock_sock *vsk,
1914 return vmci_trans(vsk)->notify_ops->recv_pre_block(
1915 &vsk->sk, target,
1920 struct vsock_sock *vsk,
1924 return vmci_trans(vsk)->notify_ops->recv_pre_dequeue(
1925 &vsk->sk, target,
1930 struct vsock_sock *vsk,
1936 return vmci_trans(vsk)->notify_ops->recv_post_dequeue(
1937 &vsk->sk, target, copied, data_read,
1942 struct vsock_sock *vsk,
1945 return vmci_trans(vsk)->notify_ops->send_init(
1946 &vsk->sk,
1951 struct vsock_sock *vsk,
1954 return vmci_trans(vsk)->notify_ops->send_pre_block(
1955 &vsk->sk,
1960 struct vsock_sock *vsk,
1963 return vmci_trans(vsk)->notify_ops->send_pre_enqueue(
1964 &vsk->sk,
1969 struct vsock_sock *vsk,
1973 return vmci_trans(vsk)->notify_ops->send_post_enqueue(
1974 &vsk->sk, written,
1997 struct vsock_sock *vsk = vsock_sk(sk);
2004 vmci_trans(vsk)->notify_ops = &vmci_transport_notify_pkt_ops;
2010 vmci_trans(vsk)->notify_ops =
2019 vmci_trans(vsk)->notify_ops->socket_init(sk);
2067 static bool vmci_check_transport(struct vsock_sock *vsk)
2069 return vsk->transport == &vmci_transport;