Message ID | 20221220141449.115918-1-hengqi@linux.alibaba.com (mailing list archive) |
---|---|
Headers | show |
Series | virtio_net: support multi buffer xdp | expand |
On Tue, 20 Dec 2022 22:14:40 +0800 Heng Qi wrote: > Changes since RFC: > - Using headroom instead of vi->xdp_enabled to avoid re-reading > in add_recvbuf_mergeable(); > - Disable GRO_HW and keep linearization for single buffer xdp; > - Renamed to virtnet_build_xdp_buff_mrg(); > - pr_debug() to netdev_dbg(); > - Adjusted the order of the patch series. # Form letter - net-next is closed We have already submitted the networking pull request to Linus for v6.2 and therefore net-next is closed for new drivers, features, code refactoring and optimizations. We are currently accepting bug fixes only. Please repost when net-next reopens after Jan 2nd. RFC patches sent for review only are obviously welcome at any time.
在 2022/12/22 上午9:30, Jakub Kicinski 写道: > On Tue, 20 Dec 2022 22:14:40 +0800 Heng Qi wrote: >> Changes since RFC: >> - Using headroom instead of vi->xdp_enabled to avoid re-reading >> in add_recvbuf_mergeable(); >> - Disable GRO_HW and keep linearization for single buffer xdp; >> - Renamed to virtnet_build_xdp_buff_mrg(); >> - pr_debug() to netdev_dbg(); >> - Adjusted the order of the patch series. > # Form letter - net-next is closed > > We have already submitted the networking pull request to Linus > for v6.2 and therefore net-next is closed for new drivers, features, > code refactoring and optimizations. We are currently accepting > bug fixes only. > > Please repost when net-next reopens after Jan 2nd. > > RFC patches sent for review only are obviously welcome at any time. Yes, I understand, we can also review this patch series first. Thanks.
Hi Jason, do you have any comments on this? Thanks. 在 2022/12/20 下午10:14, Heng Qi 写道: > Changes since RFC: > - Using headroom instead of vi->xdp_enabled to avoid re-reading > in add_recvbuf_mergeable(); > - Disable GRO_HW and keep linearization for single buffer xdp; > - Renamed to virtnet_build_xdp_buff_mrg(); > - pr_debug() to netdev_dbg(); > - Adjusted the order of the patch series. > > Currently, virtio net only supports xdp for single-buffer packets > or linearized multi-buffer packets. This patchset supports xdp for > multi-buffer packets, then larger MTU can be used if xdp sets the > xdp.frags. This does not affect single buffer handling. > > In order to build multi-buffer xdp neatly, we integrated the code > into virtnet_build_xdp_buff_mrg() 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: build xdp_buff with multi buffers > virtio_net: construct multi-buffer xdp in mergeable > virtio_net: transmit the multi-buffer xdp > virtio_net: build skb from multi-buffer xdp > virtio_net: remove xdp related info from page_to_skb() > virtio_net: support multi-buffer xdp > > drivers/net/virtio_net.c | 332 ++++++++++++++++++++++++++------------- > 1 file changed, 219 insertions(+), 113 deletions(-) >
On Mon, Dec 26, 2022 at 10:33 AM Heng Qi <hengqi@linux.alibaba.com> wrote: > > > Hi Jason, do you have any comments on this? I will review this no later than the end of this week. Thanks > > Thanks. > > 在 2022/12/20 下午10:14, Heng Qi 写道: > > Changes since RFC: > > - Using headroom instead of vi->xdp_enabled to avoid re-reading > > in add_recvbuf_mergeable(); > > - Disable GRO_HW and keep linearization for single buffer xdp; > > - Renamed to virtnet_build_xdp_buff_mrg(); > > - pr_debug() to netdev_dbg(); > > - Adjusted the order of the patch series. > > > > Currently, virtio net only supports xdp for single-buffer packets > > or linearized multi-buffer packets. This patchset supports xdp for > > multi-buffer packets, then larger MTU can be used if xdp sets the > > xdp.frags. This does not affect single buffer handling. > > > > In order to build multi-buffer xdp neatly, we integrated the code > > into virtnet_build_xdp_buff_mrg() 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: build xdp_buff with multi buffers > > virtio_net: construct multi-buffer xdp in mergeable > > virtio_net: transmit the multi-buffer xdp > > virtio_net: build skb from multi-buffer xdp > > virtio_net: remove xdp related info from page_to_skb() > > virtio_net: support multi-buffer xdp > > > > drivers/net/virtio_net.c | 332 ++++++++++++++++++++++++++------------- > > 1 file changed, 219 insertions(+), 113 deletions(-) > > >