Lines Matching refs:pkt

45 	struct virtio_vsock_pkt *pkt;  in virtio_transport_alloc_pkt()  local
48 pkt = kzalloc(sizeof(*pkt), GFP_KERNEL); in virtio_transport_alloc_pkt()
49 if (!pkt) in virtio_transport_alloc_pkt()
52 pkt->hdr.type = cpu_to_le16(info->type); in virtio_transport_alloc_pkt()
53 pkt->hdr.op = cpu_to_le16(info->op); in virtio_transport_alloc_pkt()
54 pkt->hdr.src_cid = cpu_to_le64(src_cid); in virtio_transport_alloc_pkt()
55 pkt->hdr.dst_cid = cpu_to_le64(dst_cid); in virtio_transport_alloc_pkt()
56 pkt->hdr.src_port = cpu_to_le32(src_port); in virtio_transport_alloc_pkt()
57 pkt->hdr.dst_port = cpu_to_le32(dst_port); in virtio_transport_alloc_pkt()
58 pkt->hdr.flags = cpu_to_le32(info->flags); in virtio_transport_alloc_pkt()
59 pkt->len = len; in virtio_transport_alloc_pkt()
60 pkt->hdr.len = cpu_to_le32(len); in virtio_transport_alloc_pkt()
61 pkt->reply = info->reply; in virtio_transport_alloc_pkt()
62 pkt->vsk = info->vsk; in virtio_transport_alloc_pkt()
65 pkt->buf = kmalloc(len, GFP_KERNEL); in virtio_transport_alloc_pkt()
66 if (!pkt->buf) in virtio_transport_alloc_pkt()
68 err = memcpy_from_msg(pkt->buf, info->msg, len); in virtio_transport_alloc_pkt()
80 return pkt; in virtio_transport_alloc_pkt()
83 kfree(pkt->buf); in virtio_transport_alloc_pkt()
85 kfree(pkt); in virtio_transport_alloc_pkt()
92 struct virtio_vsock_pkt *pkt = opaque; in virtio_transport_build_skb() local
96 skb = alloc_skb(sizeof(*hdr) + sizeof(pkt->hdr) + pkt->len, in virtio_transport_build_skb()
104 hdr->src_cid = pkt->hdr.src_cid; in virtio_transport_build_skb()
105 hdr->src_port = pkt->hdr.src_port; in virtio_transport_build_skb()
106 hdr->dst_cid = pkt->hdr.dst_cid; in virtio_transport_build_skb()
107 hdr->dst_port = pkt->hdr.dst_port; in virtio_transport_build_skb()
110 hdr->len = cpu_to_le16(sizeof(pkt->hdr)); in virtio_transport_build_skb()
113 switch (le16_to_cpu(pkt->hdr.op)) { in virtio_transport_build_skb()
134 skb_put_data(skb, &pkt->hdr, sizeof(pkt->hdr)); in virtio_transport_build_skb()
136 if (pkt->len) { in virtio_transport_build_skb()
137 skb_put_data(skb, pkt->buf, pkt->len); in virtio_transport_build_skb()
143 void virtio_transport_deliver_tap_pkt(struct virtio_vsock_pkt *pkt) in virtio_transport_deliver_tap_pkt() argument
145 vsock_deliver_tap(virtio_transport_build_skb, pkt); in virtio_transport_deliver_tap_pkt()
154 struct virtio_vsock_pkt *pkt; in virtio_transport_send_pkt_info() local
180 pkt = virtio_transport_alloc_pkt(info, pkt_len, in virtio_transport_send_pkt_info()
183 if (!pkt) { in virtio_transport_send_pkt_info()
188 virtio_transport_inc_tx_pkt(vvs, pkt); in virtio_transport_send_pkt_info()
190 return virtio_transport_get_ops()->send_pkt(pkt); in virtio_transport_send_pkt_info()
194 struct virtio_vsock_pkt *pkt) in virtio_transport_inc_rx_pkt() argument
196 vvs->rx_bytes += pkt->len; in virtio_transport_inc_rx_pkt()
200 struct virtio_vsock_pkt *pkt) in virtio_transport_dec_rx_pkt() argument
202 vvs->rx_bytes -= pkt->len; in virtio_transport_dec_rx_pkt()
203 vvs->fwd_cnt += pkt->len; in virtio_transport_dec_rx_pkt()
206 void virtio_transport_inc_tx_pkt(struct virtio_vsock_sock *vvs, struct virtio_vsock_pkt *pkt) in virtio_transport_inc_tx_pkt() argument
209 pkt->hdr.fwd_cnt = cpu_to_le32(vvs->fwd_cnt); in virtio_transport_inc_tx_pkt()
210 pkt->hdr.buf_alloc = cpu_to_le32(vvs->buf_alloc); in virtio_transport_inc_tx_pkt()
257 struct virtio_vsock_pkt *pkt; in virtio_transport_stream_do_dequeue() local
263 pkt = list_first_entry(&vvs->rx_queue, in virtio_transport_stream_do_dequeue()
267 if (bytes > pkt->len - pkt->off) in virtio_transport_stream_do_dequeue()
268 bytes = pkt->len - pkt->off; in virtio_transport_stream_do_dequeue()
275 err = memcpy_to_msg(msg, pkt->buf + pkt->off, bytes); in virtio_transport_stream_do_dequeue()
282 pkt->off += bytes; in virtio_transport_stream_do_dequeue()
283 if (pkt->off == pkt->len) { in virtio_transport_stream_do_dequeue()
284 virtio_transport_dec_rx_pkt(vvs, pkt); in virtio_transport_stream_do_dequeue()
285 list_del(&pkt->list); in virtio_transport_stream_do_dequeue()
286 virtio_transport_free_pkt(pkt); in virtio_transport_stream_do_dequeue()
644 struct virtio_vsock_pkt *pkt) in virtio_transport_reset() argument
649 .reply = !!pkt, in virtio_transport_reset()
654 if (pkt && le16_to_cpu(pkt->hdr.op) == VIRTIO_VSOCK_OP_RST) in virtio_transport_reset()
663 static int virtio_transport_reset_no_sock(struct virtio_vsock_pkt *pkt) in virtio_transport_reset_no_sock() argument
667 .type = le16_to_cpu(pkt->hdr.type), in virtio_transport_reset_no_sock()
672 if (le16_to_cpu(pkt->hdr.op) == VIRTIO_VSOCK_OP_RST) in virtio_transport_reset_no_sock()
675 pkt = virtio_transport_alloc_pkt(&info, 0, in virtio_transport_reset_no_sock()
676 le64_to_cpu(pkt->hdr.dst_cid), in virtio_transport_reset_no_sock()
677 le32_to_cpu(pkt->hdr.dst_port), in virtio_transport_reset_no_sock()
678 le64_to_cpu(pkt->hdr.src_cid), in virtio_transport_reset_no_sock()
679 le32_to_cpu(pkt->hdr.src_port)); in virtio_transport_reset_no_sock()
680 if (!pkt) in virtio_transport_reset_no_sock()
683 return virtio_transport_get_ops()->send_pkt(pkt); in virtio_transport_reset_no_sock()
796 struct virtio_vsock_pkt *pkt) in virtio_transport_recv_connecting() argument
802 switch (le16_to_cpu(pkt->hdr.op)) { in virtio_transport_recv_connecting()
823 virtio_transport_reset(vsk, pkt); in virtio_transport_recv_connecting()
832 struct virtio_vsock_pkt *pkt) in virtio_transport_recv_connected() argument
838 switch (le16_to_cpu(pkt->hdr.op)) { in virtio_transport_recv_connected()
840 pkt->len = le32_to_cpu(pkt->hdr.len); in virtio_transport_recv_connected()
841 pkt->off = 0; in virtio_transport_recv_connected()
844 virtio_transport_inc_rx_pkt(vvs, pkt); in virtio_transport_recv_connected()
845 list_add_tail(&pkt->list, &vvs->rx_queue); in virtio_transport_recv_connected()
854 if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SHUTDOWN_RCV) in virtio_transport_recv_connected()
856 if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SHUTDOWN_SEND) in virtio_transport_recv_connected()
861 if (le32_to_cpu(pkt->hdr.flags)) in virtio_transport_recv_connected()
872 virtio_transport_free_pkt(pkt); in virtio_transport_recv_connected()
878 struct virtio_vsock_pkt *pkt) in virtio_transport_recv_disconnecting() argument
882 if (le16_to_cpu(pkt->hdr.op) == VIRTIO_VSOCK_OP_RST) in virtio_transport_recv_disconnecting()
888 struct virtio_vsock_pkt *pkt) in virtio_transport_send_response() argument
893 .remote_cid = le64_to_cpu(pkt->hdr.src_cid), in virtio_transport_send_response()
894 .remote_port = le32_to_cpu(pkt->hdr.src_port), in virtio_transport_send_response()
904 virtio_transport_recv_listen(struct sock *sk, struct virtio_vsock_pkt *pkt) in virtio_transport_recv_listen() argument
910 if (le16_to_cpu(pkt->hdr.op) != VIRTIO_VSOCK_OP_REQUEST) { in virtio_transport_recv_listen()
911 virtio_transport_reset(vsk, pkt); in virtio_transport_recv_listen()
916 virtio_transport_reset(vsk, pkt); in virtio_transport_recv_listen()
923 virtio_transport_reset(vsk, pkt); in virtio_transport_recv_listen()
934 vsock_addr_init(&vchild->local_addr, le64_to_cpu(pkt->hdr.dst_cid), in virtio_transport_recv_listen()
935 le32_to_cpu(pkt->hdr.dst_port)); in virtio_transport_recv_listen()
936 vsock_addr_init(&vchild->remote_addr, le64_to_cpu(pkt->hdr.src_cid), in virtio_transport_recv_listen()
937 le32_to_cpu(pkt->hdr.src_port)); in virtio_transport_recv_listen()
941 virtio_transport_send_response(vchild, pkt); in virtio_transport_recv_listen()
950 struct virtio_vsock_pkt *pkt) in virtio_transport_space_update() argument
958 vvs->peer_buf_alloc = le32_to_cpu(pkt->hdr.buf_alloc); in virtio_transport_space_update()
959 vvs->peer_fwd_cnt = le32_to_cpu(pkt->hdr.fwd_cnt); in virtio_transport_space_update()
968 void virtio_transport_recv_pkt(struct virtio_vsock_pkt *pkt) in virtio_transport_recv_pkt() argument
975 vsock_addr_init(&src, le64_to_cpu(pkt->hdr.src_cid), in virtio_transport_recv_pkt()
976 le32_to_cpu(pkt->hdr.src_port)); in virtio_transport_recv_pkt()
977 vsock_addr_init(&dst, le64_to_cpu(pkt->hdr.dst_cid), in virtio_transport_recv_pkt()
978 le32_to_cpu(pkt->hdr.dst_port)); in virtio_transport_recv_pkt()
982 le32_to_cpu(pkt->hdr.len), in virtio_transport_recv_pkt()
983 le16_to_cpu(pkt->hdr.type), in virtio_transport_recv_pkt()
984 le16_to_cpu(pkt->hdr.op), in virtio_transport_recv_pkt()
985 le32_to_cpu(pkt->hdr.flags), in virtio_transport_recv_pkt()
986 le32_to_cpu(pkt->hdr.buf_alloc), in virtio_transport_recv_pkt()
987 le32_to_cpu(pkt->hdr.fwd_cnt)); in virtio_transport_recv_pkt()
989 if (le16_to_cpu(pkt->hdr.type) != VIRTIO_VSOCK_TYPE_STREAM) { in virtio_transport_recv_pkt()
990 (void)virtio_transport_reset_no_sock(pkt); in virtio_transport_recv_pkt()
1001 (void)virtio_transport_reset_no_sock(pkt); in virtio_transport_recv_pkt()
1008 space_available = virtio_transport_space_update(sk, pkt); in virtio_transport_recv_pkt()
1020 virtio_transport_recv_listen(sk, pkt); in virtio_transport_recv_pkt()
1021 virtio_transport_free_pkt(pkt); in virtio_transport_recv_pkt()
1024 virtio_transport_recv_connecting(sk, pkt); in virtio_transport_recv_pkt()
1025 virtio_transport_free_pkt(pkt); in virtio_transport_recv_pkt()
1028 virtio_transport_recv_connected(sk, pkt); in virtio_transport_recv_pkt()
1031 virtio_transport_recv_disconnecting(sk, pkt); in virtio_transport_recv_pkt()
1032 virtio_transport_free_pkt(pkt); in virtio_transport_recv_pkt()
1035 virtio_transport_free_pkt(pkt); in virtio_transport_recv_pkt()
1047 virtio_transport_free_pkt(pkt); in virtio_transport_recv_pkt()
1051 void virtio_transport_free_pkt(struct virtio_vsock_pkt *pkt) in virtio_transport_free_pkt() argument
1053 kfree(pkt->buf); in virtio_transport_free_pkt()
1054 kfree(pkt); in virtio_transport_free_pkt()