Lines Matching refs:pkt

101 		struct virtio_vsock_pkt *pkt;  in vhost_transport_do_send_pkt()  local
115 pkt = list_first_entry(&vsock->send_pkt_list, in vhost_transport_do_send_pkt()
117 list_del_init(&pkt->list); in vhost_transport_do_send_pkt()
124 list_add(&pkt->list, &vsock->send_pkt_list); in vhost_transport_do_send_pkt()
131 list_add(&pkt->list, &vsock->send_pkt_list); in vhost_transport_do_send_pkt()
145 virtio_transport_free_pkt(pkt); in vhost_transport_do_send_pkt()
151 if (iov_len < sizeof(pkt->hdr)) { in vhost_transport_do_send_pkt()
152 virtio_transport_free_pkt(pkt); in vhost_transport_do_send_pkt()
158 payload_len = pkt->len - pkt->off; in vhost_transport_do_send_pkt()
163 if (payload_len > iov_len - sizeof(pkt->hdr)) in vhost_transport_do_send_pkt()
164 payload_len = iov_len - sizeof(pkt->hdr); in vhost_transport_do_send_pkt()
167 pkt->hdr.len = cpu_to_le32(payload_len); in vhost_transport_do_send_pkt()
169 nbytes = copy_to_iter(&pkt->hdr, sizeof(pkt->hdr), &iov_iter); in vhost_transport_do_send_pkt()
170 if (nbytes != sizeof(pkt->hdr)) { in vhost_transport_do_send_pkt()
171 virtio_transport_free_pkt(pkt); in vhost_transport_do_send_pkt()
176 nbytes = copy_to_iter(pkt->buf + pkt->off, payload_len, in vhost_transport_do_send_pkt()
179 virtio_transport_free_pkt(pkt); in vhost_transport_do_send_pkt()
184 vhost_add_used(vq, head, sizeof(pkt->hdr) + payload_len); in vhost_transport_do_send_pkt()
190 virtio_transport_deliver_tap_pkt(pkt); in vhost_transport_do_send_pkt()
192 pkt->off += payload_len; in vhost_transport_do_send_pkt()
198 if (pkt->off < pkt->len) { in vhost_transport_do_send_pkt()
200 list_add(&pkt->list, &vsock->send_pkt_list); in vhost_transport_do_send_pkt()
203 if (pkt->reply) { in vhost_transport_do_send_pkt()
215 virtio_transport_free_pkt(pkt); in vhost_transport_do_send_pkt()
240 vhost_transport_send_pkt(struct virtio_vsock_pkt *pkt) in vhost_transport_send_pkt() argument
243 int len = pkt->len; in vhost_transport_send_pkt()
248 vsock = vhost_vsock_get(le64_to_cpu(pkt->hdr.dst_cid)); in vhost_transport_send_pkt()
251 virtio_transport_free_pkt(pkt); in vhost_transport_send_pkt()
255 if (pkt->reply) in vhost_transport_send_pkt()
259 list_add_tail(&pkt->list, &vsock->send_pkt_list); in vhost_transport_send_pkt()
272 struct virtio_vsock_pkt *pkt, *n; in vhost_transport_cancel_pkt() local
285 list_for_each_entry_safe(pkt, n, &vsock->send_pkt_list, list) { in vhost_transport_cancel_pkt()
286 if (pkt->vsk != vsk) in vhost_transport_cancel_pkt()
288 list_move(&pkt->list, &freeme); in vhost_transport_cancel_pkt()
292 list_for_each_entry_safe(pkt, n, &freeme, list) { in vhost_transport_cancel_pkt()
293 if (pkt->reply) in vhost_transport_cancel_pkt()
295 list_del(&pkt->list); in vhost_transport_cancel_pkt()
296 virtio_transport_free_pkt(pkt); in vhost_transport_cancel_pkt()
318 struct virtio_vsock_pkt *pkt; in vhost_vsock_alloc_pkt() local
328 pkt = kzalloc(sizeof(*pkt), GFP_KERNEL); in vhost_vsock_alloc_pkt()
329 if (!pkt) in vhost_vsock_alloc_pkt()
335 nbytes = copy_from_iter(&pkt->hdr, sizeof(pkt->hdr), &iov_iter); in vhost_vsock_alloc_pkt()
336 if (nbytes != sizeof(pkt->hdr)) { in vhost_vsock_alloc_pkt()
338 sizeof(pkt->hdr), nbytes); in vhost_vsock_alloc_pkt()
339 kfree(pkt); in vhost_vsock_alloc_pkt()
343 if (le16_to_cpu(pkt->hdr.type) == VIRTIO_VSOCK_TYPE_STREAM) in vhost_vsock_alloc_pkt()
344 pkt->len = le32_to_cpu(pkt->hdr.len); in vhost_vsock_alloc_pkt()
347 if (!pkt->len) in vhost_vsock_alloc_pkt()
348 return pkt; in vhost_vsock_alloc_pkt()
351 if (pkt->len > VIRTIO_VSOCK_MAX_PKT_BUF_SIZE) { in vhost_vsock_alloc_pkt()
352 kfree(pkt); in vhost_vsock_alloc_pkt()
356 pkt->buf = kmalloc(pkt->len, GFP_KERNEL); in vhost_vsock_alloc_pkt()
357 if (!pkt->buf) { in vhost_vsock_alloc_pkt()
358 kfree(pkt); in vhost_vsock_alloc_pkt()
362 pkt->buf_len = pkt->len; in vhost_vsock_alloc_pkt()
364 nbytes = copy_from_iter(pkt->buf, pkt->len, &iov_iter); in vhost_vsock_alloc_pkt()
365 if (nbytes != pkt->len) { in vhost_vsock_alloc_pkt()
367 pkt->len, nbytes); in vhost_vsock_alloc_pkt()
368 virtio_transport_free_pkt(pkt); in vhost_vsock_alloc_pkt()
372 return pkt; in vhost_vsock_alloc_pkt()
393 struct virtio_vsock_pkt *pkt; in vhost_vsock_handle_tx_kick() local
428 pkt = vhost_vsock_alloc_pkt(vq, out, in); in vhost_vsock_handle_tx_kick()
429 if (!pkt) { in vhost_vsock_handle_tx_kick()
434 len = pkt->len; in vhost_vsock_handle_tx_kick()
437 virtio_transport_deliver_tap_pkt(pkt); in vhost_vsock_handle_tx_kick()
440 if (le64_to_cpu(pkt->hdr.src_cid) == vsock->guest_cid) in vhost_vsock_handle_tx_kick()
441 virtio_transport_recv_pkt(pkt); in vhost_vsock_handle_tx_kick()
443 virtio_transport_free_pkt(pkt); in vhost_vsock_handle_tx_kick()
445 len += sizeof(pkt->hdr); in vhost_vsock_handle_tx_kick()
650 struct virtio_vsock_pkt *pkt; in vhost_vsock_dev_release() local
652 pkt = list_first_entry(&vsock->send_pkt_list, in vhost_vsock_dev_release()
654 list_del_init(&pkt->list); in vhost_vsock_dev_release()
655 virtio_transport_free_pkt(pkt); in vhost_vsock_dev_release()