From patchwork Mon Jun 26 12:02:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heng Qi X-Patchwork-Id: 13292787 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A6154847A; Mon, 26 Jun 2023 12:03:09 +0000 (UTC) Received: from out30-132.freemail.mail.aliyun.com (out30-132.freemail.mail.aliyun.com [115.124.30.132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9F836E43; Mon, 26 Jun 2023 05:03:06 -0700 (PDT) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R151e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046049;MF=hengqi@linux.alibaba.com;NM=1;PH=DS;RN=13;SR=0;TI=SMTPD_---0Vm05AbG_1687780981; Received: from localhost(mailfrom:hengqi@linux.alibaba.com fp:SMTPD_---0Vm05AbG_1687780981) by smtp.aliyun-inc.com; Mon, 26 Jun 2023 20:03:02 +0800 From: Heng Qi To: netdev@vger.kernel.org, bpf@vger.kernel.org Cc: "Michael S . Tsirkin" , Jason Wang , Xuan Zhuo , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend Subject: [PATCH net-next v3 0/2] virtio-net: avoid conflicts between XDP and GUEST_CSUM Date: Mon, 26 Jun 2023 20:02:59 +0800 Message-Id: <20230626120301.380-1-hengqi@linux.alibaba.com> X-Mailer: git-send-email 2.19.1.6.gb485710b Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net X-Patchwork-Delegate: kuba@kernel.org virtio-net needs to clear the VIRTIO_NET_F_GUEST_CSUM feature when loading XDP. The main reason for doing this is because VIRTIO_NET_F_GUEST_CSUM allows to receive packets marked as VIRTIO_NET_HDR_F_NEEDS_CSUM. Such packets are not compatible with XDP programs, because we cannot guarantee that the csum_{start, offset} fields are correct after XDP modifies the packets. There is also an existing problem, in the same host vm-vm (eg [vm]<->[ovs vhost-user]<->[vm]) scenario, loading XDP will cause packet loss. To solve the above problems, we have discussed in the [1] proposal, and now try to solve it through the method of reprobing fields suggested by Jason. [1] https://lists.oasis-open.org/archives/virtio-dev/202305/msg00318.html --- v2->v3: - Use skb_checksum_setup() instead of virtnet_flow_dissect_udp_tcp(). The two operations are different, skb_checksum_setup() operates as skb->data==>iphdr, and virtnet_flow_dissect_udp_tcp() operates as skb->data==>ethhdr. Essentially equivalent. @Jason Wang v1->v2: - Squash v1's patch [1/4] and patch [2/4] into v2's patch [1/3]. @Michael S. Tsirkin - Some minor modifications. Heng Qi (2): virtio-net: support coexistence of XDP and GUEST_CSUM virtio-net: remove GUEST_CSUM check for XDP drivers/net/virtio_net.c | 90 +++++++++++++++++++++++++++++++++------- 1 file changed, 74 insertions(+), 16 deletions(-)