Received: by 2002:a05:6358:51dd:b0:131:369:b2a3 with SMTP id 29csp936046rwl; Thu, 10 Aug 2023 04:09:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG0RGi85rnclAHBwHe9I1gtUhSiOu/fPA+zyqaIWVADlcorlMMLbjh1DrLnFJUHbDeiLz6i X-Received: by 2002:a17:907:2cf7:b0:992:ef60:aadd with SMTP id hz23-20020a1709072cf700b00992ef60aaddmr2170407ejc.13.1691665769782; Thu, 10 Aug 2023 04:09:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691665769; cv=none; d=google.com; s=arc-20160816; b=bsgGD2nknjHfFXrPYCYYOScL9XH7OoDKGUTn1/5K0ZXwuQ4J0XMQrCqHHBTUKa/6h1 InDGTyP1Ww9pj20pX3ZUIGROMvvATd3ZQaP8v+WsTy3ZQgU7YodpMdr2qHuCjGvRILLB 9SZboE9QkD0A9DnE4jp1Cj/maNyXqlnKi3Mv1FuTGN67cWfo29NspaD8ABTxQD3/E6Ds PHvqJa6P1V4rYdCjQ1tF8RSsxhKVpR60YfsqxRq/SWGmUrphWluoaH+/YBq8lRGrdVYK CcIPGXhDTojdmZhGmqcE4CVjXRbhZcge6UewmNt2WCM03mS7U7bn5QH+ctFkcrtd+n0+ GKpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=8sDZ5IUJkTx+O3oWwbTDQAJM2hqa7MawEyJCwCqZhC0=; fh=+gc0kgJhrnvvbXrsH2IZe2Bonxd6wIHOezVSmeEDJf8=; b=Wjyqytl8CHiQmyD/RBEbQfHmMqknVeCCOywiTQCwZ58g6a2yxcsjgnazLcGHjQEz9/ uFYGyySiSqftyDutDrA8vOa8pRwLIEeEIkzXsyKRaAguhucrIw7YDVa1UidlhxUD0U1X d6d7/6PDG/PHpRpb4ZunvGUNVe76Z6udcqFqm+R7l7QWiWmlUt6BLwLWjpf/YMagh2Kv PPJNilvB/bqM81LMCgr0A9ymTvl78a4UAcqsGS/lXAxiKV6ZWd9R/5WAWPpTfanHpqmb Fz93LLubNtma2x7P1R0Ub4t5v6njCegsm6vX+CPI0jcIkP9JuV3U3U+lfwuAFQkdO8Yi yVsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=Rd5sZMDG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k19-20020a1709065fd300b0099bd54dc8easi1162997ejv.671.2023.08.10.04.09.04; Thu, 10 Aug 2023 04:09:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=Rd5sZMDG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235115AbjHJKls (ORCPT + 99 others); Thu, 10 Aug 2023 06:41:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58262 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235132AbjHJKld (ORCPT ); Thu, 10 Aug 2023 06:41:33 -0400 Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com [IPv6:2a00:1450:4864:20::230]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8F4D52720; Thu, 10 Aug 2023 03:41:30 -0700 (PDT) Received: by mail-lj1-x230.google.com with SMTP id 38308e7fff4ca-2b9b6e943ebso21963231fa.1; Thu, 10 Aug 2023 03:41:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691664089; x=1692268889; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=8sDZ5IUJkTx+O3oWwbTDQAJM2hqa7MawEyJCwCqZhC0=; b=Rd5sZMDGywAH33+SWcF2vo0qrXT+ANO744tyte3tM+UprDLFJazaHiwBc41NFE/tRa AmQW0r+dvwaoNshZMyE3dJkR1QasYBV9mD9rt6pRWdq2HEjpXF1KYdwR9epMfWrtBpHV Qv2Kry46XjY9jaLQ1ugcJixCXjXiQWrZNw0zL1TBJrJAt//o63E4g7dR6uwf2cMA0Ilv YK5GjabFkP7ElRr6HNdRvO/W6dMHSqaZh93RcXtFwDLjlNWaaBKm3HBTmwY/z9L2r2zp oQ9cXwYur7sltNVkuYjcOtVHvPU7Tl5OXKyarIE72md3eTR0hSCDOBnhv1wUnwyFdU1R /M+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691664089; x=1692268889; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=8sDZ5IUJkTx+O3oWwbTDQAJM2hqa7MawEyJCwCqZhC0=; b=MIn9woCNzsaRmTK0pdKI7V2W312gHd6rhULIwFjn5B/cLijXnJz8iLgpAWlTP0y9gI pDB/VGpNpf61zpxuCzSCBgi5e1vihmymkGJgstbn5tJ2GubhRvDXAjRfB2UeEpPAiYXR 4ArVVaO3BOiiXU3qcpDXHO6/BizUtegQVCk+BIcZudwIBqwFxH1w55QVK+RQJqLsdFeI 6NTNqX4ikGOzhT/MX6UBqrkERYKBMzk3Z1rOmEDZ99nHxMuH7LBHGSlAocIUwo0re873 P+JGyujuM7yeHz+8+ZYOjFI3kxtUxYE6GjYjBGj2WMauh/yvhuYs5CdJVGwH7aLMcJH/ ko2g== X-Gm-Message-State: AOJu0YyTLG2SP2nYr3EVGbkNEs1Du2Dxg5vVn9s/fVhakcSe6xan6L7l H8yp90bEkUemcf203ZGRvFMlwZUiTuo5z+ALReCPVGI5/Lci5/VC X-Received: by 2002:a2e:b04b:0:b0:2b9:a9d8:16a7 with SMTP id d11-20020a2eb04b000000b002b9a9d816a7mr722740ljl.8.1691664088114; Thu, 10 Aug 2023 03:41:28 -0700 (PDT) MIME-Version: 1.0 References: <20230810031557.135557-1-yin31149@gmail.com> <20230810045106-mutt-send-email-mst@kernel.org> In-Reply-To: <20230810045106-mutt-send-email-mst@kernel.org> From: Hawkins Jiawei Date: Thu, 10 Aug 2023 18:41:16 +0800 Message-ID: Subject: Re: [PATCH] virtio-net: Zero max_tx_vq field for VIRTIO_NET_CTRL_MQ_HASH_CONFIG case To: "Michael S. Tsirkin" Cc: Jason Wang , Xuan Zhuo , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , eperezma@redhat.com, 18801353760@163.com, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2023/8/10 16:51, Michael S. Tsirkin wrote: > On Thu, Aug 10, 2023 at 11:15:57AM +0800, Hawkins Jiawei wrote: >> Kernel uses `struct virtio_net_ctrl_rss` to save command-specific-data >> for both the VIRTIO_NET_CTRL_MQ_HASH_CONFIG and >> VIRTIO_NET_CTRL_MQ_RSS_CONFIG commands. >> >> According to the VirtIO standard, "Field reserved MUST contain zeroes. >> It is defined to make the structure to match the layout of >> virtio_net_rss_config structure, defined in 5.1.6.5.7.". >> >> Yet for the VIRTIO_NET_CTRL_MQ_HASH_CONFIG command case, the `max_tx_vq` >> field in struct virtio_net_ctrl_rss, which corresponds to the >> `reserved` field in struct virtio_net_hash_config, is not zeroed, >> thereby violating the VirtIO standard. >> >> This patch solves this problem by zeroing this field in >> virtnet_init_default_rss(). >> >> Signed-off-by: Hawkins Jiawei > > > > Fixes: c7114b1249fa ("drivers/net/virtio_net: Added basic RSS support.") > Cc: Andrew Melnychenko > Acked-by: Michael S. Tsirkin > > And this is stable material I believe. Hi Michael, Thank you for the reminder, I will send the v2 patch with all these tags included. Thanks! > > > >> --- >> >> TestStep >> ======== >> 1. Boot QEMU with one virtio-net-pci net device with `mq` and `hash` >> feature on, command line like: >> -netdev tap,vhost=off,... >> -device virtio-net-pci,mq=on,hash=on,... >> >> 2. Trigger VIRTIO_NET_CTRL_MQ_HASH_CONFIG command in guest, command >> line like: >> ethtool -K eth0 rxhash on >> >> Without this patch, in virtnet_commit_rss_command(), we can see the >> `max_tx_vq` field is 1 in gdb like below: >> >> pwndbg> p vi->ctrl->rss >> $1 = { >> hash_types = 63, >> indirection_table_mask = 0, >> unclassified_queue = 0, >> indirection_table = {0 }, >> max_tx_vq = 1, >> hash_key_length = 40 '(', >> ... >> } >> >> With this patch, in virtnet_commit_rss_command(), we can see the >> `max_tx_vq` field is 0 in gdb like below: >> >> pwndbg> p vi->ctrl->rss >> $1 = { >> hash_types = 63, >> indirection_table_mask = 0, >> unclassified_queue = 0, >> indirection_table = {0 }, >> max_tx_vq = 0, >> hash_key_length = 40 '(', >> ... >> } >> >> drivers/net/virtio_net.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c >> index 1270c8d23463..8db38634ae82 100644 >> --- a/drivers/net/virtio_net.c >> +++ b/drivers/net/virtio_net.c >> @@ -2761,7 +2761,7 @@ static void virtnet_init_default_rss(struct virtnet_info *vi) >> vi->ctrl->rss.indirection_table[i] = indir_val; >> } >> >> - vi->ctrl->rss.max_tx_vq = vi->curr_queue_pairs; >> + vi->ctrl->rss.max_tx_vq = vi->has_rss ? vi->curr_queue_pairs : 0; >> vi->ctrl->rss.hash_key_length = vi->rss_key_size; >> >> netdev_rss_key_fill(vi->ctrl->rss.key, vi->rss_key_size); >> -- >> 2.34.1 >