Displaying 3 results from an estimated 3 matches for "virtio_vsock_skb_cb".
2023 Feb 16
0
[RFC PATCH v1 04/12] vhost/vsock: non-linear skb handling support
...ov_iter,
>+ size_t len)
>+{
>+ size_t rest_len = len;
>+
>+ while (rest_len && virtio_vsock_skb_has_frags(skb)) {
>+ struct bio_vec *curr_vec;
>+ size_t curr_vec_end;
>+ size_t to_copy;
>+ int curr_frag;
>+ int curr_offs;
>+
>+ curr_frag = VIRTIO_VSOCK_SKB_CB(skb)->curr_frag;
>+ curr_offs = VIRTIO_VSOCK_SKB_CB(skb)->frag_off;
>+ curr_vec = &skb_shinfo(skb)->frags[curr_frag];
>+
>+ curr_vec_end = curr_vec->bv_offset + curr_vec->bv_len;
>+ to_copy = min(rest_len, (size_t)(curr_vec_end - curr_offs));
>+
>+ if (c...
2023 Feb 16
0
[RFC PATCH v1 06/12] vsock/virtio: non-linear skb handling for TAP dev
...void *dst,
>+ size_t len)
>+{
>+ size_t rest_len = len;
>+
>+ while (rest_len && virtio_vsock_skb_has_frags(skb)) {
>+ struct bio_vec *curr_vec;
>+ size_t curr_vec_end;
>+ size_t to_copy;
>+ int curr_frag;
>+ int curr_offs;
>+
>+ curr_frag = VIRTIO_VSOCK_SKB_CB(skb)->curr_frag;
>+ curr_offs = VIRTIO_VSOCK_SKB_CB(skb)->frag_off;
>+ curr_vec = &skb_shinfo(skb)->frags[curr_frag];
>+
>+ curr_vec_end = curr_vec->bv_offset + curr_vec->bv_len;
>+ to_copy = min(rest_len, (size_t)(curr_vec_end - curr_offs));
>+
>+ memcp...
2023 Feb 16
0
[RFC PATCH v1 07/12] vsock/virtio: MGS_ZEROCOPY flag support
...tio_transport_fill_nonlinear_skb(struct sk_buff *skb,
>+ struct vsock_sock *vsk,
>+ struct virtio_vsock_pkt_info *info)
>+{
>+ struct iov_iter *iter;
>+ int frag_idx;
>+ int seg_idx;
>+
>+ iter = &info->msg->msg_iter;
>+ frag_idx = 0;
>+ VIRTIO_VSOCK_SKB_CB(skb)->curr_frag = 0;
>+ VIRTIO_VSOCK_SKB_CB(skb)->frag_off = 0;
>+
>+ /* At this moment:
>+ * 1) 'iov_offset' is zero.
>+ * 2) Every 'iov_base' and 'iov_len' are also page aligned
>+ * (except length of the last element).
>+ * 3) Number of p...