Lines Matching refs:pkt

111 		struct virtio_vsock_pkt *pkt;  in vhost_transport_do_send_pkt()  local
126 pkt = list_first_entry(&vsock->send_pkt_list, in vhost_transport_do_send_pkt()
128 list_del_init(&pkt->list); in vhost_transport_do_send_pkt()
135 list_add(&pkt->list, &vsock->send_pkt_list); in vhost_transport_do_send_pkt()
142 list_add(&pkt->list, &vsock->send_pkt_list); in vhost_transport_do_send_pkt()
156 virtio_transport_free_pkt(pkt); in vhost_transport_do_send_pkt()
162 if (iov_len < sizeof(pkt->hdr)) { in vhost_transport_do_send_pkt()
163 virtio_transport_free_pkt(pkt); in vhost_transport_do_send_pkt()
169 payload_len = pkt->len - pkt->off; in vhost_transport_do_send_pkt()
174 if (payload_len > iov_len - sizeof(pkt->hdr)) { in vhost_transport_do_send_pkt()
175 payload_len = iov_len - sizeof(pkt->hdr); in vhost_transport_do_send_pkt()
188 if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOM) { in vhost_transport_do_send_pkt()
189 pkt->hdr.flags &= ~cpu_to_le32(VIRTIO_VSOCK_SEQ_EOM); in vhost_transport_do_send_pkt()
192 if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOR) { in vhost_transport_do_send_pkt()
193 pkt->hdr.flags &= ~cpu_to_le32(VIRTIO_VSOCK_SEQ_EOR); in vhost_transport_do_send_pkt()
200 pkt->hdr.len = cpu_to_le32(payload_len); in vhost_transport_do_send_pkt()
202 nbytes = copy_to_iter(&pkt->hdr, sizeof(pkt->hdr), &iov_iter); in vhost_transport_do_send_pkt()
203 if (nbytes != sizeof(pkt->hdr)) { in vhost_transport_do_send_pkt()
204 virtio_transport_free_pkt(pkt); in vhost_transport_do_send_pkt()
209 nbytes = copy_to_iter(pkt->buf + pkt->off, payload_len, in vhost_transport_do_send_pkt()
212 virtio_transport_free_pkt(pkt); in vhost_transport_do_send_pkt()
220 virtio_transport_deliver_tap_pkt(pkt); in vhost_transport_do_send_pkt()
222 vhost_add_used(vq, head, sizeof(pkt->hdr) + payload_len); in vhost_transport_do_send_pkt()
225 pkt->off += payload_len; in vhost_transport_do_send_pkt()
231 if (pkt->off < pkt->len) { in vhost_transport_do_send_pkt()
232 pkt->hdr.flags |= cpu_to_le32(flags_to_restore); in vhost_transport_do_send_pkt()
238 pkt->tap_delivered = false; in vhost_transport_do_send_pkt()
241 list_add(&pkt->list, &vsock->send_pkt_list); in vhost_transport_do_send_pkt()
244 if (pkt->reply) { in vhost_transport_do_send_pkt()
256 virtio_transport_free_pkt(pkt); in vhost_transport_do_send_pkt()
281 vhost_transport_send_pkt(struct virtio_vsock_pkt *pkt) in vhost_transport_send_pkt() argument
284 int len = pkt->len; in vhost_transport_send_pkt()
289 vsock = vhost_vsock_get(le64_to_cpu(pkt->hdr.dst_cid)); in vhost_transport_send_pkt()
292 virtio_transport_free_pkt(pkt); in vhost_transport_send_pkt()
296 if (pkt->reply) in vhost_transport_send_pkt()
300 list_add_tail(&pkt->list, &vsock->send_pkt_list); in vhost_transport_send_pkt()
313 struct virtio_vsock_pkt *pkt, *n; in vhost_transport_cancel_pkt() local
326 list_for_each_entry_safe(pkt, n, &vsock->send_pkt_list, list) { in vhost_transport_cancel_pkt()
327 if (pkt->vsk != vsk) in vhost_transport_cancel_pkt()
329 list_move(&pkt->list, &freeme); in vhost_transport_cancel_pkt()
333 list_for_each_entry_safe(pkt, n, &freeme, list) { in vhost_transport_cancel_pkt()
334 if (pkt->reply) in vhost_transport_cancel_pkt()
336 list_del(&pkt->list); in vhost_transport_cancel_pkt()
337 virtio_transport_free_pkt(pkt); in vhost_transport_cancel_pkt()
359 struct virtio_vsock_pkt *pkt; in vhost_vsock_alloc_pkt() local
369 pkt = kzalloc(sizeof(*pkt), GFP_KERNEL); in vhost_vsock_alloc_pkt()
370 if (!pkt) in vhost_vsock_alloc_pkt()
376 nbytes = copy_from_iter(&pkt->hdr, sizeof(pkt->hdr), &iov_iter); in vhost_vsock_alloc_pkt()
377 if (nbytes != sizeof(pkt->hdr)) { in vhost_vsock_alloc_pkt()
379 sizeof(pkt->hdr), nbytes); in vhost_vsock_alloc_pkt()
380 kfree(pkt); in vhost_vsock_alloc_pkt()
384 pkt->len = le32_to_cpu(pkt->hdr.len); in vhost_vsock_alloc_pkt()
387 if (!pkt->len) in vhost_vsock_alloc_pkt()
388 return pkt; in vhost_vsock_alloc_pkt()
391 if (pkt->len > VIRTIO_VSOCK_MAX_PKT_BUF_SIZE) { in vhost_vsock_alloc_pkt()
392 kfree(pkt); in vhost_vsock_alloc_pkt()
396 pkt->buf = kmalloc(pkt->len, GFP_KERNEL); in vhost_vsock_alloc_pkt()
397 if (!pkt->buf) { in vhost_vsock_alloc_pkt()
398 kfree(pkt); in vhost_vsock_alloc_pkt()
402 pkt->buf_len = pkt->len; in vhost_vsock_alloc_pkt()
404 nbytes = copy_from_iter(pkt->buf, pkt->len, &iov_iter); in vhost_vsock_alloc_pkt()
405 if (nbytes != pkt->len) { in vhost_vsock_alloc_pkt()
407 pkt->len, nbytes); in vhost_vsock_alloc_pkt()
408 virtio_transport_free_pkt(pkt); in vhost_vsock_alloc_pkt()
412 return pkt; in vhost_vsock_alloc_pkt()
499 struct virtio_vsock_pkt *pkt; in vhost_vsock_handle_tx_kick() local
535 pkt = vhost_vsock_alloc_pkt(vq, out, in); in vhost_vsock_handle_tx_kick()
536 if (!pkt) { in vhost_vsock_handle_tx_kick()
541 total_len += sizeof(pkt->hdr) + pkt->len; in vhost_vsock_handle_tx_kick()
544 virtio_transport_deliver_tap_pkt(pkt); in vhost_vsock_handle_tx_kick()
547 if (le64_to_cpu(pkt->hdr.src_cid) == vsock->guest_cid && in vhost_vsock_handle_tx_kick()
548 le64_to_cpu(pkt->hdr.dst_cid) == in vhost_vsock_handle_tx_kick()
550 virtio_transport_recv_pkt(&vhost_transport, pkt); in vhost_vsock_handle_tx_kick()
552 virtio_transport_free_pkt(pkt); in vhost_vsock_handle_tx_kick()
762 struct virtio_vsock_pkt *pkt; in vhost_vsock_dev_release() local
764 pkt = list_first_entry(&vsock->send_pkt_list, in vhost_vsock_dev_release()
766 list_del_init(&pkt->list); in vhost_vsock_dev_release()
767 virtio_transport_free_pkt(pkt); in vhost_vsock_dev_release()