Lines Matching refs:pkt
40 struct vmci_transport_packet *pkt);
44 struct vmci_transport_packet *pkt);
47 struct vmci_transport_packet *pkt);
50 struct vmci_transport_packet *pkt);
53 struct vmci_transport_packet *pkt);
55 struct vmci_transport_packet *pkt);
64 struct vmci_transport_packet pkt; member
118 vmci_transport_packet_init(struct vmci_transport_packet *pkt, in vmci_transport_packet_init() argument
131 pkt->dg.src = vmci_make_handle(VMADDR_CID_ANY, in vmci_transport_packet_init()
133 pkt->dg.dst = vmci_make_handle(dst->svm_cid, in vmci_transport_packet_init()
135 pkt->dg.payload_size = sizeof(*pkt) - sizeof(pkt->dg); in vmci_transport_packet_init()
136 pkt->version = VMCI_TRANSPORT_PACKET_VERSION; in vmci_transport_packet_init()
137 pkt->type = type; in vmci_transport_packet_init()
138 pkt->src_port = src->svm_port; in vmci_transport_packet_init()
139 pkt->dst_port = dst->svm_port; in vmci_transport_packet_init()
140 memset(&pkt->proto, 0, sizeof(pkt->proto)); in vmci_transport_packet_init()
141 memset(&pkt->_reserved2, 0, sizeof(pkt->_reserved2)); in vmci_transport_packet_init()
143 switch (pkt->type) { in vmci_transport_packet_init()
145 pkt->u.size = 0; in vmci_transport_packet_init()
150 pkt->u.size = size; in vmci_transport_packet_init()
155 pkt->u.handle = handle; in vmci_transport_packet_init()
161 pkt->u.size = 0; in vmci_transport_packet_init()
165 pkt->u.mode = mode; in vmci_transport_packet_init()
170 memcpy(&pkt->u.wait, wait, sizeof(pkt->u.wait)); in vmci_transport_packet_init()
175 pkt->u.size = size; in vmci_transport_packet_init()
176 pkt->proto = proto; in vmci_transport_packet_init()
182 vmci_transport_packet_get_addresses(struct vmci_transport_packet *pkt, in vmci_transport_packet_get_addresses() argument
186 vsock_addr_init(local, pkt->dg.dst.context, pkt->dst_port); in vmci_transport_packet_get_addresses()
187 vsock_addr_init(remote, pkt->dg.src.context, pkt->src_port); in vmci_transport_packet_get_addresses()
191 __vmci_transport_send_control_pkt(struct vmci_transport_packet *pkt, in __vmci_transport_send_control_pkt() argument
204 vmci_transport_packet_init(pkt, src, dst, type, size, mode, wait, in __vmci_transport_send_control_pkt()
206 err = vmci_datagram_send(&pkt->dg); in __vmci_transport_send_control_pkt()
214 vmci_transport_reply_control_pkt_fast(struct vmci_transport_packet *pkt, in vmci_transport_reply_control_pkt_fast() argument
224 if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_RST) { in vmci_transport_reply_control_pkt_fast()
227 vmci_transport_packet_get_addresses(pkt, &src, &dst); in vmci_transport_reply_control_pkt_fast()
250 static struct vmci_transport_packet pkt; in vmci_transport_send_control_pkt_bh() local
252 return __vmci_transport_send_control_pkt(&pkt, src, dst, type, in vmci_transport_send_control_pkt_bh()
268 struct vmci_transport_packet *pkt; in vmci_transport_alloc_send_control_pkt() local
271 pkt = kmalloc(sizeof(*pkt), GFP_KERNEL); in vmci_transport_alloc_send_control_pkt()
272 if (!pkt) in vmci_transport_alloc_send_control_pkt()
275 err = __vmci_transport_send_control_pkt(pkt, src, dst, type, size, in vmci_transport_alloc_send_control_pkt()
278 kfree(pkt); in vmci_transport_alloc_send_control_pkt()
310 struct vmci_transport_packet *pkt) in vmci_transport_send_reset_bh() argument
312 if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_RST) in vmci_transport_send_reset_bh()
321 struct vmci_transport_packet *pkt) in vmci_transport_send_reset() argument
327 if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_RST) in vmci_transport_send_reset()
338 vsock_addr_init(&dst, pkt->dg.src.context, in vmci_transport_send_reset()
339 pkt->src_port); in vmci_transport_send_reset()
386 static int vmci_transport_reply_reset(struct vmci_transport_packet *pkt) in vmci_transport_reply_reset() argument
389 pkt, in vmci_transport_reply_reset()
486 struct vmci_transport_packet *pkt) in vmci_transport_get_pending() argument
493 vsock_addr_init(&src, pkt->dg.src.context, pkt->src_port); in vmci_transport_get_pending()
500 pkt->dst_port == vpending->local_addr.svm_port) { in vmci_transport_get_pending()
683 struct vmci_transport_packet *pkt; in vmci_transport_recv_stream_cb() local
700 if (VMCI_DG_SIZE(dg) < sizeof(*pkt)) in vmci_transport_recv_stream_cb()
704 pkt = (struct vmci_transport_packet *)dg; in vmci_transport_recv_stream_cb()
710 vsock_addr_init(&src, pkt->dg.src.context, pkt->src_port); in vmci_transport_recv_stream_cb()
711 vsock_addr_init(&dst, pkt->dg.dst.context, pkt->dst_port); in vmci_transport_recv_stream_cb()
726 if (vmci_transport_send_reset_bh(&dst, &src, pkt) < 0) in vmci_transport_recv_stream_cb()
738 if (pkt->type >= VMCI_TRANSPORT_PACKET_TYPE_MAX) { in vmci_transport_recv_stream_cb()
754 if (!vmci_transport_allow_dgram(vsk, pkt->dg.src.context)) { in vmci_transport_recv_stream_cb()
772 sk, pkt, true, &dst, &src, in vmci_transport_recv_stream_cb()
783 if (vmci_transport_send_reset_bh(&dst, &src, pkt) < 0) in vmci_transport_recv_stream_cb()
791 memcpy(&recv_pkt_info->pkt, pkt, sizeof(recv_pkt_info->pkt)); in vmci_transport_recv_stream_cb()
900 struct vmci_transport_packet *pkt; in vmci_transport_recv_pkt_work() local
906 pkt = &recv_pkt_info->pkt; in vmci_transport_recv_pkt_work()
911 vsock_sk(sk)->local_addr.svm_cid = pkt->dg.dst.context; in vmci_transport_recv_pkt_work()
915 vmci_transport_recv_listen(sk, pkt); in vmci_transport_recv_pkt_work()
922 vmci_transport_recv_connecting_client(sk, pkt); in vmci_transport_recv_pkt_work()
925 vmci_transport_recv_connected(sk, pkt); in vmci_transport_recv_pkt_work()
934 vmci_transport_send_reset(sk, pkt); in vmci_transport_recv_pkt_work()
947 struct vmci_transport_packet *pkt) in vmci_transport_recv_listen() argument
965 pending = vmci_transport_get_pending(sk, pkt); in vmci_transport_recv_listen()
970 vsock_sk(pending)->local_addr.svm_cid = pkt->dg.dst.context; in vmci_transport_recv_listen()
976 pkt); in vmci_transport_recv_listen()
979 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_listen()
996 if (!(pkt->type == VMCI_TRANSPORT_PACKET_TYPE_REQUEST || in vmci_transport_recv_listen()
997 pkt->type == VMCI_TRANSPORT_PACKET_TYPE_REQUEST2)) { in vmci_transport_recv_listen()
998 vmci_transport_reply_reset(pkt); in vmci_transport_recv_listen()
1002 if (pkt->u.size == 0) { in vmci_transport_recv_listen()
1003 vmci_transport_reply_reset(pkt); in vmci_transport_recv_listen()
1012 vmci_transport_reply_reset(pkt); in vmci_transport_recv_listen()
1019 vmci_transport_send_reset(sk, pkt); in vmci_transport_recv_listen()
1025 vsock_addr_init(&vpending->local_addr, pkt->dg.dst.context, in vmci_transport_recv_listen()
1026 pkt->dst_port); in vmci_transport_recv_listen()
1027 vsock_addr_init(&vpending->remote_addr, pkt->dg.src.context, in vmci_transport_recv_listen()
1028 pkt->src_port); in vmci_transport_recv_listen()
1033 if (pkt->u.size >= vmci_trans(vpending)->queue_pair_min_size && in vmci_transport_recv_listen()
1034 pkt->u.size <= vmci_trans(vpending)->queue_pair_max_size) { in vmci_transport_recv_listen()
1035 qp_size = pkt->u.size; in vmci_transport_recv_listen()
1046 if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_REQUEST) in vmci_transport_recv_listen()
1048 else if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_REQUEST2) in vmci_transport_recv_listen()
1064 int proto_int = pkt->proto; in vmci_transport_recv_listen()
1094 vmci_transport_send_reset(sk, pkt); in vmci_transport_recv_listen()
1131 struct vmci_transport_packet *pkt) in vmci_transport_recv_connecting_server() argument
1145 switch (pkt->type) { in vmci_transport_recv_connecting_server()
1147 if (vmci_handle_is_invalid(pkt->u.handle)) { in vmci_transport_recv_connecting_server()
1148 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1156 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1158 err = pkt->type == VMCI_TRANSPORT_PACKET_TYPE_RST ? 0 : -EINVAL; in vmci_transport_recv_connecting_server()
1177 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1186 handle = pkt->u.handle; in vmci_transport_recv_connecting_server()
1201 pkt->dg.src.context, in vmci_transport_recv_connecting_server()
1207 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1240 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1277 struct vmci_transport_packet *pkt) in vmci_transport_recv_connecting_client() argument
1285 switch (pkt->type) { in vmci_transport_recv_connecting_client()
1287 if (vmci_handle_is_invalid(pkt->u.handle) || in vmci_transport_recv_connecting_client()
1288 !vmci_handle_is_equal(pkt->u.handle, in vmci_transport_recv_connecting_client()
1308 if (pkt->u.size == 0 in vmci_transport_recv_connecting_client()
1309 || pkt->dg.src.context != vsk->remote_addr.svm_cid in vmci_transport_recv_connecting_client()
1310 || pkt->src_port != vsk->remote_addr.svm_port in vmci_transport_recv_connecting_client()
1322 err = vmci_transport_recv_connecting_client_negotiate(sk, pkt); in vmci_transport_recv_connecting_client()
1330 err = vmci_transport_recv_connecting_client_invalid(sk, pkt); in vmci_transport_recv_connecting_client()
1366 vmci_transport_send_reset(sk, pkt); in vmci_transport_recv_connecting_client()
1376 struct vmci_transport_packet *pkt) in vmci_transport_recv_connecting_client_negotiate() argument
1400 if (pkt->u.size < vmci_trans(vsk)->queue_pair_min_size || in vmci_transport_recv_connecting_client_negotiate()
1401 pkt->u.size > vmci_trans(vsk)->queue_pair_max_size) { in vmci_transport_recv_connecting_client_negotiate()
1409 vsk->local_addr.svm_cid = pkt->dg.dst.context; in vmci_transport_recv_connecting_client_negotiate()
1418 if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_NEGOTIATE) in vmci_transport_recv_connecting_client_negotiate()
1420 else if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_NEGOTIATE2) in vmci_transport_recv_connecting_client_negotiate()
1428 version = pkt->proto; in vmci_transport_recv_connecting_client_negotiate()
1456 pkt->u.size, in vmci_transport_recv_connecting_client_negotiate()
1457 pkt->u.size, in vmci_transport_recv_connecting_client_negotiate()
1477 pkt->u.size; in vmci_transport_recv_connecting_client_negotiate()
1497 struct vmci_transport_packet *pkt) in vmci_transport_recv_connecting_client_invalid() argument
1519 struct vmci_transport_packet *pkt) in vmci_transport_recv_connected() argument
1532 switch (pkt->type) { in vmci_transport_recv_connected()
1534 if (pkt->u.mode) { in vmci_transport_recv_connected()
1537 vsk->peer_shutdown |= pkt->u.mode; in vmci_transport_recv_connected()
1564 sk, pkt, false, NULL, NULL, in vmci_transport_recv_connected()