Lines Matching defs:pkt

101 		struct virtio_vsock_pkt *pkt;
115 pkt = list_first_entry(&vsock->send_pkt_list,
117 list_del_init(&pkt->list);
124 list_add(&pkt->list, &vsock->send_pkt_list);
131 list_add(&pkt->list, &vsock->send_pkt_list);
145 virtio_transport_free_pkt(pkt);
151 if (iov_len < sizeof(pkt->hdr)) {
152 virtio_transport_free_pkt(pkt);
158 payload_len = pkt->len - pkt->off;
163 if (payload_len > iov_len - sizeof(pkt->hdr))
164 payload_len = iov_len - sizeof(pkt->hdr);
167 pkt->hdr.len = cpu_to_le32(payload_len);
169 nbytes = copy_to_iter(&pkt->hdr, sizeof(pkt->hdr), &iov_iter);
170 if (nbytes != sizeof(pkt->hdr)) {
171 virtio_transport_free_pkt(pkt);
172 vq_err(vq, "Faulted on copying pkt hdr\n");
176 nbytes = copy_to_iter(pkt->buf + pkt->off, payload_len,
179 virtio_transport_free_pkt(pkt);
180 vq_err(vq, "Faulted on copying pkt buf\n");
187 virtio_transport_deliver_tap_pkt(pkt);
189 vhost_add_used(vq, head, sizeof(pkt->hdr) + payload_len);
192 pkt->off += payload_len;
198 if (pkt->off < pkt->len) {
203 pkt->tap_delivered = false;
206 list_add(&pkt->list, &vsock->send_pkt_list);
209 if (pkt->reply) {
221 virtio_transport_free_pkt(pkt);
246 vhost_transport_send_pkt(struct virtio_vsock_pkt *pkt)
249 int len = pkt->len;
254 vsock = vhost_vsock_get(le64_to_cpu(pkt->hdr.dst_cid));
257 virtio_transport_free_pkt(pkt);
261 if (pkt->reply)
265 list_add_tail(&pkt->list, &vsock->send_pkt_list);
278 struct virtio_vsock_pkt *pkt, *n;
291 list_for_each_entry_safe(pkt, n, &vsock->send_pkt_list, list) {
292 if (pkt->vsk != vsk)
294 list_move(&pkt->list, &freeme);
298 list_for_each_entry_safe(pkt, n, &freeme, list) {
299 if (pkt->reply)
301 list_del(&pkt->list);
302 virtio_transport_free_pkt(pkt);
324 struct virtio_vsock_pkt *pkt;
334 pkt = kzalloc(sizeof(*pkt), GFP_KERNEL);
335 if (!pkt)
341 nbytes = copy_from_iter(&pkt->hdr, sizeof(pkt->hdr), &iov_iter);
342 if (nbytes != sizeof(pkt->hdr)) {
343 vq_err(vq, "Expected %zu bytes for pkt->hdr, got %zu bytes\n",
344 sizeof(pkt->hdr), nbytes);
345 kfree(pkt);
349 if (le16_to_cpu(pkt->hdr.type) == VIRTIO_VSOCK_TYPE_STREAM)
350 pkt->len = le32_to_cpu(pkt->hdr.len);
353 if (!pkt->len)
354 return pkt;
356 /* The pkt is too big */
357 if (pkt->len > VIRTIO_VSOCK_MAX_PKT_BUF_SIZE) {
358 kfree(pkt);
362 pkt->buf = kvmalloc(pkt->len, GFP_KERNEL);
363 if (!pkt->buf) {
364 kfree(pkt);
368 pkt->buf_len = pkt->len;
370 nbytes = copy_from_iter(pkt->buf, pkt->len, &iov_iter);
371 if (nbytes != pkt->len) {
373 pkt->len, nbytes);
374 virtio_transport_free_pkt(pkt);
378 return pkt;
442 struct virtio_vsock_pkt *pkt;
477 pkt = vhost_vsock_alloc_pkt(vq, out, in);
478 if (!pkt) {
479 vq_err(vq, "Faulted on pkt\n");
483 len = pkt->len;
486 virtio_transport_deliver_tap_pkt(pkt);
489 if (le64_to_cpu(pkt->hdr.src_cid) == vsock->guest_cid &&
490 le64_to_cpu(pkt->hdr.dst_cid) ==
492 virtio_transport_recv_pkt(&vhost_transport, pkt);
494 virtio_transport_free_pkt(pkt);
496 len += sizeof(pkt->hdr);
714 struct virtio_vsock_pkt *pkt;
716 pkt = list_first_entry(&vsock->send_pkt_list,
718 list_del_init(&pkt->list);
719 virtio_transport_free_pkt(pkt);