Lines Matching refs:pkt
49 struct vmci_transport_packet *pkt);
53 struct vmci_transport_packet *pkt);
56 struct vmci_transport_packet *pkt);
59 struct vmci_transport_packet *pkt);
62 struct vmci_transport_packet *pkt);
64 struct vmci_transport_packet *pkt);
73 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()
880 struct vmci_transport_packet *pkt; in vmci_transport_recv_pkt_work() local
886 pkt = &recv_pkt_info->pkt; in vmci_transport_recv_pkt_work()
891 vsock_sk(sk)->local_addr.svm_cid = pkt->dg.dst.context; in vmci_transport_recv_pkt_work()
895 vmci_transport_recv_listen(sk, pkt); in vmci_transport_recv_pkt_work()
902 vmci_transport_recv_connecting_client(sk, pkt); in vmci_transport_recv_pkt_work()
905 vmci_transport_recv_connected(sk, pkt); in vmci_transport_recv_pkt_work()
914 vmci_transport_send_reset(sk, pkt); in vmci_transport_recv_pkt_work()
927 struct vmci_transport_packet *pkt) in vmci_transport_recv_listen() argument
945 pending = vmci_transport_get_pending(sk, pkt); in vmci_transport_recv_listen()
950 vsock_sk(pending)->local_addr.svm_cid = pkt->dg.dst.context; in vmci_transport_recv_listen()
956 pkt); in vmci_transport_recv_listen()
959 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_listen()
976 if (!(pkt->type == VMCI_TRANSPORT_PACKET_TYPE_REQUEST || in vmci_transport_recv_listen()
977 pkt->type == VMCI_TRANSPORT_PACKET_TYPE_REQUEST2)) { in vmci_transport_recv_listen()
978 vmci_transport_reply_reset(pkt); in vmci_transport_recv_listen()
982 if (pkt->u.size == 0) { in vmci_transport_recv_listen()
983 vmci_transport_reply_reset(pkt); in vmci_transport_recv_listen()
992 vmci_transport_reply_reset(pkt); in vmci_transport_recv_listen()
999 vmci_transport_send_reset(sk, pkt); in vmci_transport_recv_listen()
1005 vsock_addr_init(&vpending->local_addr, pkt->dg.dst.context, in vmci_transport_recv_listen()
1006 pkt->dst_port); in vmci_transport_recv_listen()
1007 vsock_addr_init(&vpending->remote_addr, pkt->dg.src.context, in vmci_transport_recv_listen()
1008 pkt->src_port); in vmci_transport_recv_listen()
1013 if (pkt->u.size >= vmci_trans(vpending)->queue_pair_min_size && in vmci_transport_recv_listen()
1014 pkt->u.size <= vmci_trans(vpending)->queue_pair_max_size) { in vmci_transport_recv_listen()
1015 qp_size = pkt->u.size; in vmci_transport_recv_listen()
1026 if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_REQUEST) in vmci_transport_recv_listen()
1028 else if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_REQUEST2) in vmci_transport_recv_listen()
1044 int proto_int = pkt->proto; in vmci_transport_recv_listen()
1074 vmci_transport_send_reset(sk, pkt); in vmci_transport_recv_listen()
1112 struct vmci_transport_packet *pkt) in vmci_transport_recv_connecting_server() argument
1126 switch (pkt->type) { in vmci_transport_recv_connecting_server()
1128 if (vmci_handle_is_invalid(pkt->u.handle)) { in vmci_transport_recv_connecting_server()
1129 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1137 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1139 err = pkt->type == VMCI_TRANSPORT_PACKET_TYPE_RST ? 0 : -EINVAL; in vmci_transport_recv_connecting_server()
1158 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1167 handle = pkt->u.handle; in vmci_transport_recv_connecting_server()
1182 pkt->dg.src.context, in vmci_transport_recv_connecting_server()
1188 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1221 vmci_transport_send_reset(pending, pkt); in vmci_transport_recv_connecting_server()
1258 struct vmci_transport_packet *pkt) in vmci_transport_recv_connecting_client() argument
1266 switch (pkt->type) { in vmci_transport_recv_connecting_client()
1268 if (vmci_handle_is_invalid(pkt->u.handle) || in vmci_transport_recv_connecting_client()
1269 !vmci_handle_is_equal(pkt->u.handle, in vmci_transport_recv_connecting_client()
1289 if (pkt->u.size == 0 in vmci_transport_recv_connecting_client()
1290 || pkt->dg.src.context != vsk->remote_addr.svm_cid in vmci_transport_recv_connecting_client()
1291 || pkt->src_port != vsk->remote_addr.svm_port in vmci_transport_recv_connecting_client()
1303 err = vmci_transport_recv_connecting_client_negotiate(sk, pkt); in vmci_transport_recv_connecting_client()
1311 err = vmci_transport_recv_connecting_client_invalid(sk, pkt); in vmci_transport_recv_connecting_client()
1347 vmci_transport_send_reset(sk, pkt); in vmci_transport_recv_connecting_client()
1357 struct vmci_transport_packet *pkt) in vmci_transport_recv_connecting_client_negotiate() argument
1381 if (pkt->u.size < vmci_trans(vsk)->queue_pair_min_size || in vmci_transport_recv_connecting_client_negotiate()
1382 pkt->u.size > vmci_trans(vsk)->queue_pair_max_size) { in vmci_transport_recv_connecting_client_negotiate()
1390 vsk->local_addr.svm_cid = pkt->dg.dst.context; in vmci_transport_recv_connecting_client_negotiate()
1399 if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_NEGOTIATE) in vmci_transport_recv_connecting_client_negotiate()
1401 else if (pkt->type == VMCI_TRANSPORT_PACKET_TYPE_NEGOTIATE2) in vmci_transport_recv_connecting_client_negotiate()
1409 version = pkt->proto; in vmci_transport_recv_connecting_client_negotiate()
1437 pkt->u.size, in vmci_transport_recv_connecting_client_negotiate()
1438 pkt->u.size, in vmci_transport_recv_connecting_client_negotiate()
1458 pkt->u.size; in vmci_transport_recv_connecting_client_negotiate()
1478 struct vmci_transport_packet *pkt) in vmci_transport_recv_connecting_client_invalid() argument
1500 struct vmci_transport_packet *pkt) in vmci_transport_recv_connected() argument
1513 switch (pkt->type) { in vmci_transport_recv_connected()
1515 if (pkt->u.mode) { in vmci_transport_recv_connected()
1518 vsk->peer_shutdown |= pkt->u.mode; in vmci_transport_recv_connected()
1545 sk, pkt, false, NULL, NULL, in vmci_transport_recv_connected()