Lines Matching refs:pkt
105 struct virtio_vsock_pkt *pkt; in virtio_transport_loopback_work() local
107 pkt = list_first_entry(&pkts, struct virtio_vsock_pkt, list); in virtio_transport_loopback_work()
108 list_del_init(&pkt->list); in virtio_transport_loopback_work()
110 virtio_transport_recv_pkt(pkt); in virtio_transport_loopback_work()
117 struct virtio_vsock_pkt *pkt) in virtio_transport_send_pkt_loopback() argument
119 int len = pkt->len; in virtio_transport_send_pkt_loopback()
122 list_add_tail(&pkt->list, &vsock->loopback_list); in virtio_transport_send_pkt_loopback()
147 struct virtio_vsock_pkt *pkt; in virtio_transport_send_pkt_work() local
158 pkt = list_first_entry(&vsock->send_pkt_list, in virtio_transport_send_pkt_work()
160 list_del_init(&pkt->list); in virtio_transport_send_pkt_work()
163 virtio_transport_deliver_tap_pkt(pkt); in virtio_transport_send_pkt_work()
165 reply = pkt->reply; in virtio_transport_send_pkt_work()
167 sg_init_one(&hdr, &pkt->hdr, sizeof(pkt->hdr)); in virtio_transport_send_pkt_work()
169 if (pkt->buf) { in virtio_transport_send_pkt_work()
170 sg_init_one(&buf, pkt->buf, pkt->len); in virtio_transport_send_pkt_work()
174 ret = virtqueue_add_sgs(vq, sgs, out_sg, in_sg, pkt, GFP_KERNEL); in virtio_transport_send_pkt_work()
180 list_add(&pkt->list, &vsock->send_pkt_list); in virtio_transport_send_pkt_work()
210 virtio_transport_send_pkt(struct virtio_vsock_pkt *pkt) in virtio_transport_send_pkt() argument
213 int len = pkt->len; in virtio_transport_send_pkt()
218 virtio_transport_free_pkt(pkt); in virtio_transport_send_pkt()
223 if (le64_to_cpu(pkt->hdr.dst_cid) == vsock->guest_cid) { in virtio_transport_send_pkt()
224 len = virtio_transport_send_pkt_loopback(vsock, pkt); in virtio_transport_send_pkt()
228 if (pkt->reply) in virtio_transport_send_pkt()
232 list_add_tail(&pkt->list, &vsock->send_pkt_list); in virtio_transport_send_pkt()
246 struct virtio_vsock_pkt *pkt, *n; in virtio_transport_cancel_pkt() local
258 list_for_each_entry_safe(pkt, n, &vsock->send_pkt_list, list) { in virtio_transport_cancel_pkt()
259 if (pkt->vsk != vsk) in virtio_transport_cancel_pkt()
261 list_move(&pkt->list, &freeme); in virtio_transport_cancel_pkt()
265 list_for_each_entry_safe(pkt, n, &freeme, list) { in virtio_transport_cancel_pkt()
266 if (pkt->reply) in virtio_transport_cancel_pkt()
268 list_del(&pkt->list); in virtio_transport_cancel_pkt()
269 virtio_transport_free_pkt(pkt); in virtio_transport_cancel_pkt()
292 struct virtio_vsock_pkt *pkt; in virtio_vsock_rx_fill() local
300 pkt = kzalloc(sizeof(*pkt), GFP_KERNEL); in virtio_vsock_rx_fill()
301 if (!pkt) in virtio_vsock_rx_fill()
304 pkt->buf = kmalloc(buf_len, GFP_KERNEL); in virtio_vsock_rx_fill()
305 if (!pkt->buf) { in virtio_vsock_rx_fill()
306 virtio_transport_free_pkt(pkt); in virtio_vsock_rx_fill()
310 pkt->buf_len = buf_len; in virtio_vsock_rx_fill()
311 pkt->len = buf_len; in virtio_vsock_rx_fill()
313 sg_init_one(&hdr, &pkt->hdr, sizeof(pkt->hdr)); in virtio_vsock_rx_fill()
316 sg_init_one(&buf, pkt->buf, buf_len); in virtio_vsock_rx_fill()
318 ret = virtqueue_add_sgs(vq, sgs, 0, 2, pkt, GFP_KERNEL); in virtio_vsock_rx_fill()
320 virtio_transport_free_pkt(pkt); in virtio_vsock_rx_fill()
344 struct virtio_vsock_pkt *pkt; in virtio_transport_tx_work() local
348 while ((pkt = virtqueue_get_buf(vq, &len)) != NULL) { in virtio_transport_tx_work()
349 virtio_transport_free_pkt(pkt); in virtio_transport_tx_work()
389 struct virtio_vsock_pkt *pkt; in virtio_transport_rx_work() local
400 pkt = virtqueue_get_buf(vq, &len); in virtio_transport_rx_work()
401 if (!pkt) { in virtio_transport_rx_work()
408 if (unlikely(len < sizeof(pkt->hdr) || in virtio_transport_rx_work()
409 len > sizeof(pkt->hdr) + pkt->len)) { in virtio_transport_rx_work()
410 virtio_transport_free_pkt(pkt); in virtio_transport_rx_work()
414 pkt->len = len - sizeof(pkt->hdr); in virtio_transport_rx_work()
415 virtio_transport_deliver_tap_pkt(pkt); in virtio_transport_rx_work()
416 virtio_transport_recv_pkt(pkt); in virtio_transport_rx_work()
677 struct virtio_vsock_pkt *pkt; in virtio_vsock_remove() local
709 while ((pkt = virtqueue_detach_unused_buf(vsock->vqs[VSOCK_VQ_RX]))) in virtio_vsock_remove()
710 virtio_transport_free_pkt(pkt); in virtio_vsock_remove()
714 while ((pkt = virtqueue_detach_unused_buf(vsock->vqs[VSOCK_VQ_TX]))) in virtio_vsock_remove()
715 virtio_transport_free_pkt(pkt); in virtio_vsock_remove()
720 pkt = list_first_entry(&vsock->send_pkt_list, in virtio_vsock_remove()
722 list_del(&pkt->list); in virtio_vsock_remove()
723 virtio_transport_free_pkt(pkt); in virtio_vsock_remove()
729 pkt = list_first_entry(&vsock->loopback_list, in virtio_vsock_remove()
731 list_del(&pkt->list); in virtio_vsock_remove()
732 virtio_transport_free_pkt(pkt); in virtio_vsock_remove()