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) {
1282 struct vsock_sock *vsk;
1286 vsk = vsock_sk(sk);
1292 vmci_trans(vsk)->qp_handle)) {
1305 vsock_insert_connected(vsk);
1312 || pkt->dg.src.context != vsk->remote_addr.svm_cid
1313 || pkt->src_port != vsk->remote_addr.svm_port
1314 || !vmci_handle_is_invalid(vmci_trans(vsk)->qp_handle)
1315 || vmci_trans(vsk)->qpair
1316 || vmci_trans(vsk)->produce_size != 0
1317 || vmci_trans(vsk)->consume_size != 0
1318 || vmci_trans(vsk)->detach_sub_id != VMCI_INVALID_ID) {
1350 if (vsk->ignore_connecting_rst) {
1351 vsk->ignore_connecting_rst = false;
1382 struct vsock_sock *vsk;
1392 vsk = vsock_sk(sk);
1399 vsk->sent_request = false;
1400 vsk->ignore_connecting_rst = false;
1403 if (pkt->u.size < vsk->buffer_min_size ||
1404 pkt->u.size > vsk->buffer_max_size) {
1411 if (vsk->local_addr.svm_cid == VMADDR_CID_ANY)
1412 vsk->local_addr.svm_cid = pkt->dg.dst.context;
1446 vmci_trans(vsk), &detach_sub_id);
1454 is_local = vsk->remote_addr.svm_cid == vsk->local_addr.svm_cid;
1461 vsk->remote_addr.svm_cid,
1464 vsk,
1465 vsk->
1476 vmci_trans(vsk)->qp_handle = handle;
1477 vmci_trans(vsk)->qpair = qpair;
1479 vmci_trans(vsk)->produce_size = vmci_trans(vsk)->consume_size =
1482 vmci_trans(vsk)->detach_sub_id = detach_sub_id;
1484 vmci_trans(vsk)->notify_ops->process_negotiate(sk);
1503 struct vsock_sock *vsk = vsock_sk(sk);
1505 if (vsk->sent_request) {
1506 vsk->sent_request = false;
1507 vsk->ignore_connecting_rst = true;
1509 err = vmci_transport_send_conn_request(sk, vsk->buffer_size);
1523 struct vsock_sock *vsk;
1537 vsk = vsock_sk(sk);
1539 vsk->peer_shutdown |= pkt->u.mode;
1545 vsk = vsock_sk(sk);
1556 vsk->peer_shutdown = SHUTDOWN_MASK;
1557 if (vsock_stream_has_data(vsk) <= 0)
1564 vsk = vsock_sk(sk);
1565 vmci_trans(vsk)->notify_ops->handle_notify_pkt(
1577 static int vmci_transport_socket_init(struct vsock_sock *vsk,
1580 vsk->trans = kmalloc(sizeof(struct vmci_transport), GFP_KERNEL);
1581 if (!vsk->trans)
1584 vmci_trans(vsk)->dg_handle = VMCI_INVALID_HANDLE;
1585 vmci_trans(vsk)->qp_handle = VMCI_INVALID_HANDLE;
1586 vmci_trans(vsk)->qpair = NULL;
1587 vmci_trans(vsk)->produce_size = vmci_trans(vsk)->consume_size = 0;
1588 vmci_trans(vsk)->detach_sub_id = VMCI_INVALID_ID;
1589 vmci_trans(vsk)->notify_ops = NULL;
1590 INIT_LIST_HEAD(&vmci_trans(vsk)->elem);
1591 vmci_trans(vsk)->sk = &vsk->sk;
1592 spin_lock_init(&vmci_trans(vsk)->lock);
1631 static void vmci_transport_destruct(struct vsock_sock *vsk)
1634 if (!vmci_trans(vsk))
1637 /* Ensure that the detach callback doesn't use the sk/vsk
1640 spin_lock_bh(&vmci_trans(vsk)->lock);
1641 vmci_trans(vsk)->sk = NULL;
1642 spin_unlock_bh(&vmci_trans(vsk)->lock);
1644 if (vmci_trans(vsk)->notify_ops)
1645 vmci_trans(vsk)->notify_ops->socket_destruct(vsk);
1648 list_add(&vmci_trans(vsk)->elem, &vmci_transport_cleanup_list);
1652 vsk->trans = NULL;
1655 static void vmci_transport_release(struct vsock_sock *vsk)
1657 vsock_remove_sock(vsk);
1659 if (!vmci_handle_is_invalid(vmci_trans(vsk)->dg_handle)) {
1660 vmci_datagram_destroy_handle(vmci_trans(vsk)->dg_handle);
1661 vmci_trans(vsk)->dg_handle = VMCI_INVALID_HANDLE;
1665 static int vmci_transport_dgram_bind(struct vsock_sock *vsk,
1686 &vsk->sk,
1687 &vmci_trans(vsk)->dg_handle);
1690 vsock_addr_init(&vsk->local_addr, addr->svm_cid,
1691 vmci_trans(vsk)->dg_handle.resource);
1697 struct vsock_sock *vsk,
1708 if (!vmci_transport_allow_dgram(vsk, remote_addr->svm_cid))
1724 dg->src = vmci_make_handle(vsk->local_addr.svm_cid,
1725 vsk->local_addr.svm_port);
1736 static int vmci_transport_dgram_dequeue(struct vsock_sock *vsk,
1753 skb = skb_recv_datagram(&vsk->sk, flags, noblock, &err);
1788 skb_free_datagram(&vsk->sk, skb);
1804 static int vmci_transport_connect(struct vsock_sock *vsk)
1808 struct sock *sk = &vsk->sk;
1812 err = vmci_transport_send_conn_request(sk, vsk->buffer_size);
1820 err = vmci_transport_send_conn_request2(sk, vsk->buffer_size,
1827 vsk->sent_request = true;
1834 struct vsock_sock *vsk,
1840 return vmci_qpair_peekv(vmci_trans(vsk)->qpair, msg, len, 0);
1842 return vmci_qpair_dequev(vmci_trans(vsk)->qpair, msg, len, 0);
1846 struct vsock_sock *vsk,
1850 return vmci_qpair_enquev(vmci_trans(vsk)->qpair, msg, len, 0);
1853 static s64 vmci_transport_stream_has_data(struct vsock_sock *vsk)
1855 return vmci_qpair_consume_buf_ready(vmci_trans(vsk)->qpair);
1858 static s64 vmci_transport_stream_has_space(struct vsock_sock *vsk)
1860 return vmci_qpair_produce_free_space(vmci_trans(vsk)->qpair);
1863 static u64 vmci_transport_stream_rcvhiwat(struct vsock_sock *vsk)
1865 return vmci_trans(vsk)->consume_size;
1868 static bool vmci_transport_stream_is_active(struct vsock_sock *vsk)
1870 return !vmci_handle_is_invalid(vmci_trans(vsk)->qp_handle);
1874 struct vsock_sock *vsk,
1878 return vmci_trans(vsk)->notify_ops->poll_in(
1879 &vsk->sk, target, data_ready_now);
1883 struct vsock_sock *vsk,
1887 return vmci_trans(vsk)->notify_ops->poll_out(
1888 &vsk->sk, target, space_available_now);
1892 struct vsock_sock *vsk,
1896 return vmci_trans(vsk)->notify_ops->recv_init(
1897 &vsk->sk, target,
1902 struct vsock_sock *vsk,
1906 return vmci_trans(vsk)->notify_ops->recv_pre_block(
1907 &vsk->sk, target,
1912 struct vsock_sock *vsk,
1916 return vmci_trans(vsk)->notify_ops->recv_pre_dequeue(
1917 &vsk->sk, target,
1922 struct vsock_sock *vsk,
1928 return vmci_trans(vsk)->notify_ops->recv_post_dequeue(
1929 &vsk->sk, target, copied, data_read,
1934 struct vsock_sock *vsk,
1937 return vmci_trans(vsk)->notify_ops->send_init(
1938 &vsk->sk,
1943 struct vsock_sock *vsk,
1946 return vmci_trans(vsk)->notify_ops->send_pre_block(
1947 &vsk->sk,
1952 struct vsock_sock *vsk,
1955 return vmci_trans(vsk)->notify_ops->send_pre_enqueue(
1956 &vsk->sk,
1961 struct vsock_sock *vsk,
1965 return vmci_trans(vsk)->notify_ops->send_post_enqueue(
1966 &vsk->sk, written,
1989 struct vsock_sock *vsk = vsock_sk(sk);
1996 vmci_trans(vsk)->notify_ops = &vmci_transport_notify_pkt_ops;
2002 vmci_trans(vsk)->notify_ops =
2011 vmci_trans(vsk)->notify_ops->socket_init(sk);
2059 static bool vmci_check_transport(struct vsock_sock *vsk)
2061 return vsk->transport == &vmci_transport;