Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2805039lqp; Mon, 25 Mar 2024 09:38:47 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXDUrnJP0NkSQVD743Dhfeu5IxXxuLLwgZLvIMd5NpQpenFKYNw2AHlUIHK0gMwHytzn9J8zE5dqQvv10E9mVCMgNcKZs8C/1s+dRZJCA== X-Google-Smtp-Source: AGHT+IGXMPXzEwyZeIysyI0zudNiL1D4kUr5qs/0P6AbMtRRXaGf9ILxe5rmFBwjrkgX3Wcogcfz X-Received: by 2002:a05:6358:2618:b0:17f:16d8:277c with SMTP id l24-20020a056358261800b0017f16d8277cmr8555840rwc.14.1711384726410; Mon, 25 Mar 2024 09:38:46 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711384726; cv=pass; d=google.com; s=arc-20160816; b=noVc5IIdgSCn/REessZ/0gg+nMrx5bpTKCidr/FwVle6Ki9PCJBDXalpvJh5iqni1W /wO90vM8K64Yl0cHZgZqZmfy5/jasPd+OzfLD/ieY1TTjFQFmJLUhq5Qpmt0vBgk8FkD dpPcRQbEB5uLXrnoaZtfZKh4iEsAtLhwwOHsS2cndsQ9Dwt3IpLgjHQc5MXv0Q4HpyRc /lMVuy3b420OLxrFeWF6sEfsJx0z4wNAJ0YP7lO3XNXNuiZ6i54mQtaV560Y9Im+l3MN Lo0OlPp2T3R6Zu+5ujBuw3aWJgfEFfSbUylp7QzvRQABcFgRKLs+1a/j0BsLtD0iudxu gVTw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-id:precedence:in-reply-to :references:cc:to:from:date:subject:message-id:dkim-signature; bh=tWzoma9+YgEU3EhGSSB8r00Sws8k2xiQqkay3SxZld4=; fh=WYxjDgcq4I0MlJ1Ii4iac0X9vLMEwT9e033R9ut1lME=; b=tUEaTp/ghEP2K5wtfF1s6DNrDRDHtSyjWf+lyHuLQaRjHm+BviEvy9Cty8lhZ7RcTw e1cTzT8ttJ9cnjdnCbRXQGliGq2zbrjA+Q3/zV2xzLeJa4kqKBYdfC+1Mup7i72VF4S1 XwHSUE/brintB8p4Xl59lEYOQnUQ48Unqik8wrCx8lL6ml7tVx4ymYHLaZy5t4s2KqCN DpWH6Hz1aV3U3OtqQ8iMUiGGmxXwvUozsu2gaIgnKOlPKPCwLbDtWxBmVuSUxvYnQXr1 Z3M4YZgYeusWFIedJPTJYtwiL5h5Zq4SSVPTwpLTYfWJKZuxOB1Bs46hzqG26R0NQhtY +sEg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linux.alibaba.com header.s=default header.b="DMTG+/ph"; arc=pass (i=1 spf=pass spfdomain=linux.alibaba.com dkim=pass dkdomain=linux.alibaba.com dmarc=pass fromdomain=linux.alibaba.com); spf=pass (google.com: domain of linux-kernel+bounces-116951-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-116951-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.alibaba.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id c1-20020a63d141000000b005dd99dbfe0bsi7910775pgj.892.2024.03.25.09.38.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 09:38:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-116951-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.alibaba.com header.s=default header.b="DMTG+/ph"; arc=pass (i=1 spf=pass spfdomain=linux.alibaba.com dkim=pass dkdomain=linux.alibaba.com dmarc=pass fromdomain=linux.alibaba.com); spf=pass (google.com: domain of linux-kernel+bounces-116951-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-116951-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.alibaba.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 7D87FCA18FA for ; Mon, 25 Mar 2024 14:57:01 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 390781C68B8; Mon, 25 Mar 2024 11:58:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="DMTG+/ph" Received: from out30-100.freemail.mail.aliyun.com (out30-100.freemail.mail.aliyun.com [115.124.30.100]) (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 ACB6E1514C4; Mon, 25 Mar 2024 11:36:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.100 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711366601; cv=none; b=fVftjRFnZqeIjc4Dlqe3rk/NK+7FJwN9USUSZzC3VotndKfFQIOasxiMDqeGDac8323SeBDMQ/SjWBmKtJXkLQXPh9CnkalTcgC796b09X2yykrQnhcsf5r5eQ8WWE9Nj3KwodbmZkJ4O141gYjEdB69tSioqXBnss0nBxFuvF8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711366601; c=relaxed/simple; bh=Utx9BnJ1thOR5r2WzvjcoE1Knx8Dk2lV1G9j0DGv5WI=; h=Message-ID:Subject:Date:From:To:Cc:References:In-Reply-To; b=iS4/TWY3WOI16ppvcS0fXhpKqXv/VT9oOn09jA/B/M9T/rfOIedyYXDgYhIa1KHt2LvUjQBY4c9HOQHOasoMxr/uwed6jT1w3r77JCDPU3YrQ5LAAPYI1yTSHVRvvexTTCZ8wTINijx6LfyOyINXlwWn5PhWXo+RIdgNDnllnHc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=DMTG+/ph; arc=none smtp.client-ip=115.124.30.100 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1711366591; h=Message-ID:Subject:Date:From:To; bh=tWzoma9+YgEU3EhGSSB8r00Sws8k2xiQqkay3SxZld4=; b=DMTG+/ph680l+w96mCOi5M2WWAED0R6RyaXzfM/YE6cWM9GcdVcylmWMq90HswuX8eR0YQMdnyKIXlTLlCmPKZSlAKKJTDvlqbvmA+a3PEW500bM/iB0te1Tpc4FHNrDXIclh6d66tkTySWL1Qz1a8B1sa6KyLdWrJABpbsEXgk= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R161e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046056;MF=xuanzhuo@linux.alibaba.com;NM=1;PH=DS;RN=16;SR=0;TI=SMTPD_---0W3FiqZe_1711366589; Received: from localhost(mailfrom:xuanzhuo@linux.alibaba.com fp:SMTPD_---0W3FiqZe_1711366589) by smtp.aliyun-inc.com; Mon, 25 Mar 2024 19:36:30 +0800 Message-ID: <1711366510.4360204-1-xuanzhuo@linux.alibaba.com> Subject: Re: [PATCH] virtio_net: Do not send RSS key if it is not supported Date: Mon, 25 Mar 2024 19:35:10 +0800 From: Xuan Zhuo To: Breno Leitao Cc: rbc@meta.com, riel@surriel.com, stable@vger.kernel.org, qemu-devel@nongnu.org, "open list:VIRTIO CORE AND NET DRIVERS" , "open list:NETWORKING DRIVERS" , open list , "Michael S. Tsirkin" , Jason Wang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Melnychenko , "Heng Qi" References: <20240321165431.3517868-1-leitao@debian.org> <1711072822.882584-1-xuanzhuo@linux.alibaba.com> <1711346273.5079622-1-xuanzhuo@linux.alibaba.com> In-Reply-To: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: On Mon, 25 Mar 2024 04:26:08 -0700, Breno Leitao wrote: > Hello Xuan, > > On Mon, Mar 25, 2024 at 01:57:53PM +0800, Xuan Zhuo wrote: > > On Fri, 22 Mar 2024 03:21:21 -0700, Breno Leitao wrote: > > > Hello Xuan, > > > > > > On Fri, Mar 22, 2024 at 10:00:22AM +0800, Xuan Zhuo wrote: > > > > On Thu, 21 Mar 2024 09:54:30 -0700, Breno Leitao wrote: > > > > > > > > 4) Since the command above does not have a key, then the last > > > > > scatter-gatter entry will be zeroed, since rss_key_size == 0. > > > > > sg_buf_size = vi->rss_key_size; > > > > > > > > > > > > > > > > if (vi->has_rss || vi->has_rss_hash_report) { > > > > vi->rss_indir_table_size = > > > > virtio_cread16(vdev, offsetof(struct virtio_net_config, > > > > rss_max_indirection_table_length)); > > > > vi->rss_key_size = > > > > virtio_cread8(vdev, offsetof(struct virtio_net_config, rss_max_key_size)); > > > > > > > > vi->rss_hash_types_supported = > > > > virtio_cread32(vdev, offsetof(struct virtio_net_config, supported_hash_types)); > > > > vi->rss_hash_types_supported &= > > > > ~(VIRTIO_NET_RSS_HASH_TYPE_IP_EX | > > > > VIRTIO_NET_RSS_HASH_TYPE_TCP_EX | > > > > VIRTIO_NET_RSS_HASH_TYPE_UDP_EX); > > > > > > > > dev->hw_features |= NETIF_F_RXHASH; > > > > } > > > > > > > > > > > > vi->rss_key_size is initiated here, I wonder if there is something wrong? > > > > > > Not really, the code above is never executed (in my machines). This is > > > because `vi->has_rss` and `vi->has_rss_hash_report` are both unset. > > > > > > Looking further, vdev does not have the VIRTIO_NET_F_RSS and > > > VIRTIO_NET_F_HASH_REPORT features. > > > > > > Also, when I run `ethtool -x`, I got: > > > > > > # ethtool -x eth0 > > > RX flow hash indirection table for eth0 with 1 RX ring(s): > > > Operation not supported > > > RSS hash key: > > > Operation not supported > > > RSS hash function: > > > toeplitz: on > > > xor: off > > > crc32: off > > > > > > The spec saies: > > Note that if the device offers VIRTIO_NET_F_HASH_REPORT, even if it > > supports only one pair of virtqueues, it MUST support at least one of > > commands of VIRTIO_NET_CTRL_MQ class to configure reported hash > > parameters: > > > > If the device offers VIRTIO_NET_F_RSS, it MUST support > > VIRTIO_NET_CTRL_MQ_RSS_CONFIG command per 5.1.6.5.7.1. > > > > Otherwise the device MUST support VIRTIO_NET_CTRL_MQ_HASH_CONFIG command > > per 5.1.6.5.6.4. > > > > > > So if we have not anyone of `vi->has_rss` and `vi->has_rss_hash_report`, > > we should return from virtnet_set_rxfh directly. > > Makes sense. Although it is not clear to me how vi->has_rss_hash_report > is related here, but, I am convinced that we shouldn't do any RSS > operation if the device doesn't have the RSS feature, i.e, vi->has_rss > is false. > > That said, I am thinking about something like this. How does it sound? > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index 5a7700b103f8..8c1ad7361cf2 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -3780,6 +3780,9 @@ static int virtnet_set_rxfh(struct net_device *dev, > struct virtnet_info *vi = netdev_priv(dev); > int i; > > + if (!vi->has_rss) > + return -EOPNOTSUPP; > + Should we check has_rss_hash_report? @Heng Qi Could you help us? Thanks. > if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && > rxfh->hfunc != ETH_RSS_HASH_TOP) > return -EOPNOTSUPP; > > Thanks!