Due to historical reasons, the implementation of XDP in virtio-net is relatively chaotic. For example, the processing of XDP actions has two copies of similar code. Such as page, xdp_page processing, etc. The purpose of this patch set is to refactor these code. Reduce the difficulty of subsequent maintenance. Subsequent developers will not introduce new bugs because of some complex logical relationships. In addition, the supporting to AF_XDP that I want to submit later will also need to reuse the logic of XDP, such as the processing of actions, I don't want to introduce a new similar code. In this way, I can reuse these codes in the future. Please review. Thanks. v2: 1. re-split to make review more convenient v1: 1. fix some variables are uninitialized Xuan Zhuo (15): virtio_net: mergeable xdp: put old page immediately virtio_net: introduce mergeable_xdp_get_buf() virtio_net: optimize mergeable_xdp_get_buf() virtio_net: introduce virtnet_xdp_handler() to seprate the logic of run xdp virtio_net: separate the logic of freeing xdp shinfo virtio_net: separate the logic of freeing the rest mergeable buf virtio_net: virtnet_build_xdp_buff_mrg() auto release xdp shinfo virtio_net: introduce receive_mergeable_xdp() virtio_net: merge: remove skip_xdp virtio_net: introduce receive_small_xdp() virtio_net: small: remove the delta virtio_net: small: avoid double counting in xdp scenarios virtio_net: small: remove skip_xdp virtio_net: introduce receive_small_build_xdp virtio_net: introduce virtnet_build_skb() drivers/net/virtio_net.c | 657 +++++++++++++++++++++++---------------- 1 file changed, 384 insertions(+), 273 deletions(-) -- 2.32.0.3.g01195cf9f