Message ID | 20221122074348.88601-1-hengqi@linux.alibaba.com (mailing list archive) |
---|---|
Headers | show |
Series | virtio_net: support multi buffer xdp | expand |
Hi, Jason. Do you have any comments on this series? Thanks. 在 2022/11/22 下午3:43, Heng Qi 写道: > Currently, virtio net only supports xdp for single-buffer packets > or linearized multi-buffer packets. This patchset supports xdp for > multi-buffer packets, then GRO_HW related features can be > negotiated, and do not affect the processing of single-buffer xdp. > > In order to build multi-buffer xdp neatly, we integrated the code > into virtnet_build_xdp_buff() for xdp. The first buffer is used > for prepared xdp buff, and the rest of the buffers are added to > its skb_shared_info structure. This structure can also be > conveniently converted during XDP_PASS to get the corresponding skb. > > Since virtio net uses comp pages, and bpf_xdp_frags_increase_tail() > is based on the assumption of the page pool, > (rxq->frag_size - skb_frag_size(frag) - skb_frag_off(frag)) > is negative in most cases. So we didn't set xdp_rxq->frag_size in > virtnet_open() to disable the tail increase. > > Heng Qi (9): > virtio_net: disable the hole mechanism for xdp > virtio_net: set up xdp for multi buffer packets > virtio_net: update bytes calculation for xdp_frame > virtio_net: remove xdp related info from page_to_skb() > virtio_net: build xdp_buff with multi buffers > virtio_net: construct multi-buffer xdp in mergeable > virtio_net: build skb from multi-buffer xdp > virtio_net: transmit the multi-buffer xdp > virtio_net: support multi-buffer xdp > > drivers/net/virtio_net.c | 356 ++++++++++++++++++++++++--------------- > 1 file changed, 219 insertions(+), 137 deletions(-) >
On Fri, Dec 2, 2022 at 12:50 PM Heng Qi <hengqi@linux.alibaba.com> wrote: > > Hi, Jason. > > Do you have any comments on this series? -EBUSY this week, but I will review it next week for sure. Thanks > > Thanks. > > 在 2022/11/22 下午3:43, Heng Qi 写道: > > Currently, virtio net only supports xdp for single-buffer packets > > or linearized multi-buffer packets. This patchset supports xdp for > > multi-buffer packets, then GRO_HW related features can be > > negotiated, and do not affect the processing of single-buffer xdp. > > > > In order to build multi-buffer xdp neatly, we integrated the code > > into virtnet_build_xdp_buff() for xdp. The first buffer is used > > for prepared xdp buff, and the rest of the buffers are added to > > its skb_shared_info structure. This structure can also be > > conveniently converted during XDP_PASS to get the corresponding skb. > > > > Since virtio net uses comp pages, and bpf_xdp_frags_increase_tail() > > is based on the assumption of the page pool, > > (rxq->frag_size - skb_frag_size(frag) - skb_frag_off(frag)) > > is negative in most cases. So we didn't set xdp_rxq->frag_size in > > virtnet_open() to disable the tail increase. > > > > Heng Qi (9): > > virtio_net: disable the hole mechanism for xdp > > virtio_net: set up xdp for multi buffer packets > > virtio_net: update bytes calculation for xdp_frame > > virtio_net: remove xdp related info from page_to_skb() > > virtio_net: build xdp_buff with multi buffers > > virtio_net: construct multi-buffer xdp in mergeable > > virtio_net: build skb from multi-buffer xdp > > virtio_net: transmit the multi-buffer xdp > > virtio_net: support multi-buffer xdp > > > > drivers/net/virtio_net.c | 356 ++++++++++++++++++++++++--------------- > > 1 file changed, 219 insertions(+), 137 deletions(-) > > >