Lines Matching refs:pkt
51 struct vmci_transport_packet *pkt);
55 struct vmci_transport_packet *pkt);
58 struct vmci_transport_packet *pkt);
61 struct vmci_transport_packet *pkt);
64 struct vmci_transport_packet *pkt);
66 struct vmci_transport_packet *pkt);
75 struct vmci_transport_packet pkt; member
135 vmci_transport_packet_init(struct vmci_transport_packet *pkt, in vmci_transport_packet_init() argument
148 pkt->dg.src = vmci_make_handle(VMADDR_CID_ANY, in vmci_transport_packet_init()
150 pkt->dg.dst = vmci_make_handle(dst->svm_cid, in vmci_transport_packet_init()
152 pkt->dg.payload_size = sizeof(*pkt) - sizeof(pkt->dg); in vmci_transport_packet_init()
153 pkt->version = VMCI_TRANSPORT_PACKET_VERSION; in vmci_transport_packet_init()
154 pkt->type = type; in vmci_transport_packet_init()
155 pkt->src_port = src->svm_port; in vmci_transport_packet_init()
156 pkt->dst_port = dst->svm_port; in vmci_transport_packet_init()
157 memset(&pkt->proto, 0, sizeof(pkt->proto)); in vmci_transport_packet_init()
158 memset(&pkt->_reserved2, 0, sizeof(pkt->_reserved2)); in vmci_transport_packet_init()
160 switch (pkt->type) { in vmci_transport_packet_init()
162 pkt->u.size = 0; in vmci_transport_packet_init()
167 pkt->u.size = size; in vmci_transport_packet_init()
172 pkt->u.handle = handle; in vmci_transport_packet_init()
178 pkt->u.size = 0; in vmci_transport_packet_init()
182 pkt->u.mode = mode; in vmci_transport_packet_init()
187 memcpy(&pkt->u.wait, wait, sizeof(pkt->u.wait)); in vmci_transport_packet_init()
192 pkt->u.size = size; in vmci_transport_packet_init()
193 pkt->proto = proto; in vmci_transport_packet_init()
199 vmci_transport_packet_get_addresses(struct vmci_transport_packet *pkt, in vmci_transport_packet_get_addresses() argument
203 vsock_addr_init(local, pkt->dg.dst.context, pkt->dst_port); in vmci_transport_packet_get_addresses()
204 vsock_addr_init(remote, pkt->dg.src.context, pkt->src_port); in vmci_transport_packet_get_addresses()
208 __vmci_transport_send_control_pkt(struct vmci_transport_packet *pkt, in __vmci_transport_send_control_pkt() argument
221 vmci_transport_packet_init(pkt, src, dst, type, size, mode, wait, in __vmci_transport_send_control_pkt()
223 err = vmci_datagram_send(&pkt->dg); in __vmci_transport_send_control_pkt()
231 vmci_transport_reply_control_pkt_fast(struct vmci_transport_packet *pkt, in vmci_transport_reply_control_pkt_fast() argument
241 if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_RST) { in vmci_transport_reply_control_pkt_fast()
244 vmci_transport_packet_get_addresses(pkt, &src, &dst); in vmci_transport_reply_control_pkt_fast()
267 static struct vmci_transport_packet pkt; in vmci_transport_send_control_pkt_bh() local
269 return __vmci_transport_send_control_pkt(&pkt, src, dst, type, in vmci_transport_send_control_pkt_bh()
284 struct vmci_transport_packet *pkt; in vmci_transport_send_control_pkt() local
296 pkt = kmalloc(sizeof(*pkt), GFP_KERNEL); in vmci_transport_send_control_pkt()
297 if (!pkt) in vmci_transport_send_control_pkt()
300 err = __vmci_transport_send_control_pkt(pkt, &vsk->local_addr, in vmci_transport_send_control_pkt()
304 kfree(pkt); in vmci_transport_send_control_pkt()
311 struct vmci_transport_packet *pkt) in vmci_transport_send_reset_bh() argument
313 if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_RST) in vmci_transport_send_reset_bh()
322 struct vmci_transport_packet *pkt) in vmci_transport_send_reset() argument
324 if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_RST) in vmci_transport_send_reset()
370 static int vmci_transport_reply_reset(struct vmci_transport_packet *pkt) in vmci_transport_reply_reset() argument
373 pkt, in vmci_transport_reply_reset()
470 struct vmci_transport_packet *pkt) in vmci_transport_get_pending() argument
477 vsock_addr_init(&src, pkt->dg.src.context, pkt->src_port); in vmci_transport_get_pending()
484 pkt->dst_port == vpending->local_addr.svm_port) { in vmci_transport_get_pending()
667 struct vmci_transport_packet *pkt; in vmci_transport_recv_stream_cb() local
684 if (VMCI_DG_SIZE(dg) < sizeof(*pkt)) in vmci_transport_recv_stream_cb()
688 pkt = (struct vmci_transport_packet *)dg; in vmci_transport_recv_stream_cb()
694 vsock_addr_init(&src, pkt->dg.src.context, pkt->src_port); in vmci_transport_recv_stream_cb()
695 vsock_addr_init(&dst, pkt->dg.dst.context, pkt->dst_port); in vmci_transport_recv_stream_cb()
710 if (vmci_transport_send_reset_bh(&dst, &src, pkt) < 0) in vmci_transport_recv_stream_cb()
722 if (pkt->type >= VMCI_TRANSPORT_PACKET_TYPE_MAX) { in vmci_transport_recv_stream_cb()
738 if (!vmci_transport_allow_dgram(vsk, pkt->dg.src.context)) { in vmci_transport_recv_stream_cb()
756 sk, pkt, true, &dst, &src, in vmci_transport_recv_stream_cb()
767 if (vmci_transport_send_reset_bh(&dst, &src, pkt) < 0) in vmci_transport_recv_stream_cb()
775 memcpy(&recv_pkt_info->pkt, pkt, sizeof(recv_pkt_info->pkt)); in vmci_transport_recv_stream_cb()
908 struct vmci_transport_packet *pkt; in vmci_transport_recv_pkt_work() local
914 pkt = &recv_pkt_info->pkt; in vmci_transport_recv_pkt_work()
919 vsock_sk(sk)->local_addr.svm_cid = pkt->dg.dst.context; in vmci_transport_recv_pkt_work()
923 vmci_transport_recv_listen(sk, pkt); in vmci_transport_recv_pkt_work()
930 vmci_transport_recv_connecting_client(sk, pkt); in vmci_transport_recv_pkt_work()
933 vmci_transport_recv_connected(sk, pkt); in vmci_transport_recv_pkt_work()
942 vmci_transport_send_reset(sk, pkt); in vmci_transport_recv_pkt_work()
955 struct vmci_transport_packet *pkt) in vmci_transport_recv_listen() argument
973 pending = vmci_transport_get_pending(sk, pkt); in vmci_transport_recv_listen()
978 vsock_sk(pending)->local_addr.svm_cid = pkt->dg.dst.context; in vmci_transport_recv_listen()
984 pkt); in vmci_transport_recv_listen()
987 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_listen()
1004 if (!(pkt->type == VMCI_TRANSPORT_PACKET_TYPE_REQUEST || in vmci_transport_recv_listen()
1005 pkt->type == VMCI_TRANSPORT_PACKET_TYPE_REQUEST2)) { in vmci_transport_recv_listen()
1006 vmci_transport_reply_reset(pkt); in vmci_transport_recv_listen()
1010 if (pkt->u.size == 0) { in vmci_transport_recv_listen()
1011 vmci_transport_reply_reset(pkt); in vmci_transport_recv_listen()
1020 vmci_transport_reply_reset(pkt); in vmci_transport_recv_listen()
1027 vmci_transport_send_reset(sk, pkt); in vmci_transport_recv_listen()
1033 vsock_addr_init(&vpending->local_addr, pkt->dg.dst.context, in vmci_transport_recv_listen()
1034 pkt->dst_port); in vmci_transport_recv_listen()
1035 vsock_addr_init(&vpending->remote_addr, pkt->dg.src.context, in vmci_transport_recv_listen()
1036 pkt->src_port); in vmci_transport_recv_listen()
1041 if (pkt->u.size >= vmci_trans(vpending)->queue_pair_min_size && in vmci_transport_recv_listen()
1042 pkt->u.size <= vmci_trans(vpending)->queue_pair_max_size) { in vmci_transport_recv_listen()
1043 qp_size = pkt->u.size; in vmci_transport_recv_listen()
1054 if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_REQUEST) in vmci_transport_recv_listen()
1056 else if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_REQUEST2) in vmci_transport_recv_listen()
1072 int proto_int = pkt->proto; in vmci_transport_recv_listen()
1102 vmci_transport_send_reset(sk, pkt); in vmci_transport_recv_listen()
1140 struct vmci_transport_packet *pkt) in vmci_transport_recv_connecting_server() argument
1154 switch (pkt->type) { in vmci_transport_recv_connecting_server()
1156 if (vmci_handle_is_invalid(pkt->u.handle)) { in vmci_transport_recv_connecting_server()
1157 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1165 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1167 err = pkt->type == VMCI_TRANSPORT_PACKET_TYPE_RST ? 0 : -EINVAL; in vmci_transport_recv_connecting_server()
1186 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1195 handle = pkt->u.handle; in vmci_transport_recv_connecting_server()
1210 pkt->dg.src.context, in vmci_transport_recv_connecting_server()
1216 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1249 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1286 struct vmci_transport_packet *pkt) in vmci_transport_recv_connecting_client() argument
1294 switch (pkt->type) { in vmci_transport_recv_connecting_client()
1296 if (vmci_handle_is_invalid(pkt->u.handle) || in vmci_transport_recv_connecting_client()
1297 !vmci_handle_is_equal(pkt->u.handle, in vmci_transport_recv_connecting_client()
1317 if (pkt->u.size == 0 in vmci_transport_recv_connecting_client()
1318 || pkt->dg.src.context != vsk->remote_addr.svm_cid in vmci_transport_recv_connecting_client()
1319 || pkt->src_port != vsk->remote_addr.svm_port in vmci_transport_recv_connecting_client()
1332 err = vmci_transport_recv_connecting_client_negotiate(sk, pkt); in vmci_transport_recv_connecting_client()
1340 err = vmci_transport_recv_connecting_client_invalid(sk, pkt); in vmci_transport_recv_connecting_client()
1376 vmci_transport_send_reset(sk, pkt); in vmci_transport_recv_connecting_client()
1386 struct vmci_transport_packet *pkt) in vmci_transport_recv_connecting_client_negotiate() argument
1412 if (pkt->u.size < vmci_trans(vsk)->queue_pair_min_size || in vmci_transport_recv_connecting_client_negotiate()
1413 pkt->u.size > vmci_trans(vsk)->queue_pair_max_size) { in vmci_transport_recv_connecting_client_negotiate()
1421 vsk->local_addr.svm_cid = pkt->dg.dst.context; in vmci_transport_recv_connecting_client_negotiate()
1430 if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_NEGOTIATE) in vmci_transport_recv_connecting_client_negotiate()
1432 else if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_NEGOTIATE2) in vmci_transport_recv_connecting_client_negotiate()
1440 version = pkt->proto; in vmci_transport_recv_connecting_client_negotiate()
1476 pkt->u.size, in vmci_transport_recv_connecting_client_negotiate()
1477 pkt->u.size, in vmci_transport_recv_connecting_client_negotiate()
1497 pkt->u.size; in vmci_transport_recv_connecting_client_negotiate()
1521 struct vmci_transport_packet *pkt) in vmci_transport_recv_connecting_client_invalid() argument
1543 struct vmci_transport_packet *pkt) in vmci_transport_recv_connected() argument
1556 switch (pkt->type) { in vmci_transport_recv_connected()
1558 if (pkt->u.mode) { in vmci_transport_recv_connected()
1561 vsk->peer_shutdown |= pkt->u.mode; in vmci_transport_recv_connected()
1588 sk, pkt, false, NULL, NULL, in vmci_transport_recv_connected()