From nobody Thu Oct 2 15:32:59 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8A4912FDC21 for ; Mon, 15 Sep 2025 10:47:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933263; cv=none; b=fe0Bud8zutDUemGXq/ZlSwrptARe4G8jfuoImnW5pWpTRlZfsdBteGqGXZB2kv09OGghzbsBTKAuvW9Pv3zTh/hp+jdsHNjAKVh/FN9gESSACyKkvhjADUXvQaJ5lH3BIwIytLlVodrT1cvHoaWxswKJQo3BGnbcHetDBju4VLI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933263; c=relaxed/simple; bh=LCDHUbohxTHgzzdULwcsi+67Tz4B7J+HXNyStYI9NJM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WVXPu9cKnZNoncmcf+9X1b/4LbgtLPxxm8r+7z25bOJCLygGsvL0AWozBMMi/0reYqtrSco8vTbmcMFU/XEsOXPRdtw8nM/Cl4v6/XRLl4nYjbGWYdi28gRXgxoiSptE89W5ZLNSr8L0XJBFDFA7A7Ipjg/3dNhlSY9fpP4b9VM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.218.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-b07883a5feeso689681866b.1 for ; Mon, 15 Sep 2025 03:47:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757933260; x=1758538060; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XjFEyEGuqdVSCAOxsi8hLG5VAzYgCXVIet3Kae4PlkA=; b=xQ3ZP5/qPYayT4Pu+R/eSIXTNzLmpZyEHWpuSWnH2n6OuY3+5FpDyTDItNFzIOTaTR /fheSYACi0LPFi+2pvmFHKQb8FkanH9mNqEeQoIYiugCErju+9KgJlV4T/FJMG3x/xpb UF9PRBIqucw1TdGEtMRL3qbnkifB2pdVecMvUCnv4F3Nqpv5Dntt8PsLkFrh8ASgsHYr pfyimRJYit1P5PEtQ7sR2qB5aSSG2MK7dtMNKrH0ooNdinV5x/2NPLiQc4UUCqh1taCk UjFx6T92WB9zVUh7hO/zvh+FU91cvQk5ej4vONKP8cSrcbrC7xp8T+PpEN98Rq+Z6Axa RVmg== X-Forwarded-Encrypted: i=1; AJvYcCUWEwkK1j2pcsdfwsVsat05IYZd5bwDmC4cx7urI9RdVbrd4jatLgwDngVcpgeLFEksborU4kSK8N4hBfM=@vger.kernel.org X-Gm-Message-State: AOJu0Yzh9Gsl7XfejQXKgl83x7tZyViGklU/xBKT6FhbLenzujEXogK5 37FkfN64hCRCbk3snZNFrYiFh9gKhOKFn8+X1X5U6Sic4bO12VOnYrRWzRLqEQ== X-Gm-Gg: ASbGncsYbgIdmaWY9qKBK8+ba4hycUFS7NSiVN99VBQmIFwBsQcs/OCvaG3vWlwDPNA KgPgcMlASM2W6TDyPxqm8aoffjukhkhDjiLwt05ScqPQUAyncB6PSioiuqm6cxyzcnEZ02FclOk 5T5JnVKEeYbNIeiVjNtHreei3Vz6bviCEq3j0ymDBDRXNIVRUONSHf5gmgn+xIt3lkzTYzCKPA6 fntVQVHKMivJlRhEEZaCIjPgm4pC9bXuKpmb1Eo3okB9i0gQEk7/GUhO0OdxRsdZ5Owv16FUJqI ab55wl+b/LFCCfyWuDMewt/L+/N1rd58GBbWRPkQSKzNPNU75f/GrqWGMD8gGg/oZMpnTYxBQEy JxnUtjajh1/iBE1vYEfRnXsY= X-Google-Smtp-Source: AGHT+IEQ9CUxEeQHE3JWeIoC8BvynW9DvSy0HF5ePZmATusnxUn9fnpDDlUTtZxfE1vunib1KQd/Pg== X-Received: by 2002:a17:907:7ba3:b0:afe:8f0b:6c64 with SMTP id a640c23a62f3a-b07c3540a7dmr1323625466b.4.1757933259662; Mon, 15 Sep 2025 03:47:39 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:3::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07d6bfa591sm572756266b.15.2025.09.15.03.47.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 03:47:39 -0700 (PDT) From: Breno Leitao Date: Mon, 15 Sep 2025 03:47:26 -0700 Subject: [PATCH net-next v3 1/8] net: ethtool: pass the num of RX rings directly to ethtool_copy_validate_indir Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250915-gxrings-v3-1-bfd717dbcaad@debian.org> References: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> In-Reply-To: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , kuba@kernel.org, Simon Horman , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?utf-8?q?Eugenio_P=C3=A9rez?= , Andrew Lunn Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, Breno Leitao , Lei Yang , kernel-team@meta.com X-Mailer: b4 0.15-dev-dd21f X-Developer-Signature: v=1; a=openpgp-sha256; l=1815; i=leitao@debian.org; h=from:subject:message-id; bh=LCDHUbohxTHgzzdULwcsi+67Tz4B7J+HXNyStYI9NJM=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBox+7HRQadCYc9h5GkYpniPFgfnT/0CcAEMafkT xuCsB2YQsuJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaMfuxwAKCRA1o5Of/Hh3 bQfjD/4lrt/Xiz2QXAq1v5Ij3l122VUYnu57K+oaAWsTIbUswubQhe9ghZG0rlB5vBcFbKB6ifg h4rjFqfnxwPWw1Ya9lScsGSaUuyz4R3iBUjVcYxDzH0whPHMK4u+o+XlPNrKvA/vMu/93lfVjU7 zuPmKBhPnqiqwv7kyA75z0SY/+ygRSDqV4Y4A8LhT0CBD1bpmMko9PHjRAznUwsfFJqmrrbQTjU oSjq4hxms/om1T7G93kQL3qvP/eNjEFtLQ0EyKxfHfERYKVSinEhUdRRfhQmButmHxKQKOqxVmp fa9yGyS2O/GmxIlU0d31loo7kOmnt/JMgcAzgjOWbzG+mewUxlhIWZo3cwfl3p6NyFAI7pnkuyx ouF3WNW1HTPULNnjt4Zu04Z/QfbvA+WNaYsytakafDmuCel7LNMdELoBUucOaW81PGpVtj9KX6L cC4j0juY+QjEwzZXZdg/P/VBkIK5FFLMwNF0ek6z+MK9cVAtmiPB3NHQGKPObQrr/shtegXW3cK ruSuGSdZaiC6F5DUIbpUW1EVWbNDfpIfrbSYGiXytw3SivwshUFVkvziN/q4RJoya0D4Ih/dGjp Ndf0Zu7KJveBQNXQ6U+f4FILMV78m68phdBBwn3BynkIEpOF0e6p39nkb2VBIRaFT9/shYVlkbq x5DvosIngPw6T/Q== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D Modify ethtool_copy_validate_indir() and callers to validate indirection table entries against the number of RX rings as an integer instead of accessing rx_rings->data. This will be useful in the future, given that struct ethtool_rxnfc might not exist for native GRXRINGS call. Signed-off-by: Breno Leitao Suggested-by: Jakub Kicinski Tested-by: Lei Yang --- net/ethtool/ioctl.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index 0b2a4d0573b38..15627afa4424f 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c @@ -1246,8 +1246,8 @@ static noinline_for_stack int ethtool_get_rxnfc(struc= t net_device *dev, } =20 static int ethtool_copy_validate_indir(u32 *indir, void __user *useraddr, - struct ethtool_rxnfc *rx_rings, - u32 size) + int num_rx_rings, + u32 size) { int i; =20 @@ -1256,7 +1256,7 @@ static int ethtool_copy_validate_indir(u32 *indir, vo= id __user *useraddr, =20 /* Validate ring indices */ for (i =3D 0; i < size; i++) - if (indir[i] >=3D rx_rings->data) + if (indir[i] >=3D num_rx_rings) return -EINVAL; =20 return 0; @@ -1366,7 +1366,7 @@ static noinline_for_stack int ethtool_set_rxfh_indir(= struct net_device *dev, } else { ret =3D ethtool_copy_validate_indir(rxfh_dev.indir, useraddr + ringidx_offset, - &rx_rings, + rx_rings.data, rxfh_dev.indir_size); if (ret) goto out; @@ -1587,7 +1587,7 @@ static noinline_for_stack int ethtool_set_rxfh(struct= net_device *dev, rxfh_dev.indir_size =3D dev_indir_size; ret =3D ethtool_copy_validate_indir(rxfh_dev.indir, useraddr + rss_cfg_offset, - &rx_rings, + rx_rings.data, rxfh.indir_size); if (ret) goto out_free; --=20 2.47.3 From nobody Thu Oct 2 15:32:59 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0B5C72FF671 for ; Mon, 15 Sep 2025 10:47:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933264; cv=none; b=tPlro7rTSri9CSZQYbu9O9ZxVNj96T51yRD7bwnuRs1LN+x/9Zh/gF7SJoD1dfEjTsj6NvFA3ShFwqWJLY5WQeO60iJ6lDPuhP3iE7oe1hMyXWCSdaOIwViTNJEkyXtSnbqxuBSOr+orCvDiHJk8MFgFMI5VXhhILPvl4A0jZhs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933264; c=relaxed/simple; bh=4qXNf5FPKeqB6oI1PmmIoli/4B/k2fYlPhoDMAj4Ltg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WvfdoJgSy4G/JE5Ohq6Z5ERDhMp45rdzjzGdp0YOmFmL8NNH3oFr/8XqJmsqzNrYy6VX5e+9hQG9uw2y9ZS6ZRNY4454u2HdzCe76l8eTLJ+ujp2P2/9Vv9uVkn4HyWVOykBFqu1XONaNJ8byej/SY3mx9quwMtbPvBdvgEMAlU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.218.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-b00a9989633so775504266b.0 for ; Mon, 15 Sep 2025 03:47:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757933261; x=1758538061; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AEyyDJEjHIGcptoyVMY30XDmajElEFVLCjxYGTHfuEc=; b=LjNFjig5Vp5kGV6w0zYDQ5Yf1J25erYx9VtU/07D/V4PEOBBdwlq3sQMNcBLS6iTMc whRqEeDjI9WuCvKn53rcfGrkKvEqE6Aq2p4ex6vlE7/27g4WxC1knksp/VIiKNlIP4Fs cMhYbZsVc0EOpEVLSCagG4clQEZtDeBuQ+6heSf49u4LdMuOmGmdgbvc3xAikpnt5XHK qTFm7j25iAmivZl6q6/p1zZvGA4eO4+BBDAPV6AJxQEf+CJ2EV9j4ohFBOY5/W0Ejopm nau75MHfeochKCDOOY2xtbX/bnenyPek8Fw6phHcvmAy/K3bvXdm3FSTUjKPZJC+g4ms GcSA== X-Forwarded-Encrypted: i=1; AJvYcCXdrc3Z/F6J1vitzzWBud+BDZ4s3QrWaQqGtY4c6zJNWq59lEqzKeq0sKClnTXcwTaOaMspiYr8xE89uMY=@vger.kernel.org X-Gm-Message-State: AOJu0YwMVvho0lWhkppdkR4l9sbG6z9C0z36laxO5K1LO+LZIrHyhVSK Gi0179dHAFTWZx3Y3CDggsTjVXcvCaDR1jkk6OT5oOxfGhxkeuHwbsYY X-Gm-Gg: ASbGncs05xvOAuKsP/8eE331Hwvvlqdyjs7Q27YTFvlMlP87FG55hD9rh+t3GIfZbaY wjKxQpqbRBoo6/Dtoijzc5br62bAX+TVFTRXNWHqKnSER09hLQQia4D0RDO/XM+kpotSfenwuD7 nG6zBl1qXEqv6Mpkt2zKP2spKEehuM0ip/lZl7Amb5qW8R8cZkc98Af9AnGRQKlAQe+SsE5ljZr 611zv2kV/Op6179ub1hCy/1tvA5ifFjUkCjZDAGxxrpSzerZJBGjNxZln/Y7rJgPwqz8clTGdj2 ZJhMtLc2AC7SLTbXKx5VSZjFZCGLfV0BTCGXQDPQ3s16dpknyxeOjVRD92IqOtI6eiBOhqPCJPt pR9eiPMd9SsD2MNm3v2rEUF0= X-Google-Smtp-Source: AGHT+IEzrAYV3e2uFiTM5MXBqo/NTJ3IVSDFCMfGVNjCDejj0OtCyUQ+mWpQqJvCtIu4AA/OwNmzVw== X-Received: by 2002:a17:906:f58c:b0:b0b:f033:fe7 with SMTP id a640c23a62f3a-b0bf0334b15mr693100266b.31.1757933261176; Mon, 15 Sep 2025 03:47:41 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:7::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07de03d93csm533262866b.12.2025.09.15.03.47.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 03:47:40 -0700 (PDT) From: Breno Leitao Date: Mon, 15 Sep 2025 03:47:27 -0700 Subject: [PATCH net-next v3 2/8] net: ethtool: add support for ETHTOOL_GRXRINGS ioctl Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250915-gxrings-v3-2-bfd717dbcaad@debian.org> References: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> In-Reply-To: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , kuba@kernel.org, Simon Horman , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?utf-8?q?Eugenio_P=C3=A9rez?= , Andrew Lunn Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, Breno Leitao , Lei Yang , kernel-team@meta.com X-Mailer: b4 0.15-dev-dd21f X-Developer-Signature: v=1; a=openpgp-sha256; l=2335; i=leitao@debian.org; h=from:subject:message-id; bh=4qXNf5FPKeqB6oI1PmmIoli/4B/k2fYlPhoDMAj4Ltg=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBox+7H8fXaiNOKNgmrDeSxkckmSM6xgV62vaFWD rIzghWru9iJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaMfuxwAKCRA1o5Of/Hh3 bULdD/415VaKUOR/BPAoiHKr1rMaIykRwiHqaJ71/dorVDr7COSHjdx3ROsO6bXUlJOENIcbVT4 tsPHMoggNbogAspHh/sSEunFcrj9q7jqCvUZ71ez5bHLwXxRr0883cSTZINoefmTM6kL70+rLhL AdcTRF5Whqej4M+r1UuSOPMh5pzR5RQ9KiUgih9OdG3T4n5DMXrEBLEPhE+4DYvEPBO5GwPbQK6 lD5+vQWWGC6z8+FeNrXyP0BigbKnr95TdRiEwca3OT+YNLRT8Fq4qGmfyvjZQSx2Sn4x7usbQ2E Q110qhyeAkIyvoV5iCJn9KKCdDiidJuhBO+DWWMjpcLhOv4StvpLDwRKcR2PubvitJpLBhcyBTM q6dxqD5Lx4YRoQ3tigHCBPYpQJyu7ZXQzIG4j+OM2O9dp7c4MzPkrsHI1wsr9azn9Ls4HwHyz0t Kylcz3BAMV0X42WJyyfHSJHmjAz2HEy0yl5EwjYgp4tws2VHRr1ZZ7O8LyDZ4d1fb9Hsp2ysB2v iKGQsGoEU8byxoLh9tDF54f5zYYKb1ppyHePkX582v8yxn3P3nBVRbJrUhYpyMg7zSpsBpWaR++ a3YDBYh9zI/O+u9llkkmGZSSs76zBar8lHA8zcXoEnJpSFSc00WmQO2z4mnXH/WJdsD++ZbHNUH MBxU8fbUuOPs/Uw== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D This patch adds handling for the ETHTOOL_GRXRINGS ioctl command in the ethtool ioctl dispatcher. It introduces a new helper function ethtool_get_rxrings() that calls the driver's get_rxnfc() callback with appropriate parameters to retrieve the number of RX rings supported by the device. By explicitly handling ETHTOOL_GRXRINGS, userspace queries through ethtool can now obtain RX ring information in a structured manner. In this patch, ethtool_get_rxrings() is a simply copy of ethtool_get_rxnfc(). Signed-off-by: Breno Leitao Suggested-by: Jakub Kicinski Tested-by: Lei Yang --- net/ethtool/ioctl.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index 15627afa4424f..4214ab33c3c81 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c @@ -1208,6 +1208,44 @@ static noinline_for_stack int ethtool_set_rxnfc(stru= ct net_device *dev, return 0; } =20 +static noinline_for_stack int ethtool_get_rxrings(struct net_device *dev, + u32 cmd, + void __user *useraddr) +{ + struct ethtool_rxnfc info; + size_t info_size =3D sizeof(info); + const struct ethtool_ops *ops =3D dev->ethtool_ops; + int ret; + void *rule_buf =3D NULL; + + if (!ops->get_rxnfc) + return -EOPNOTSUPP; + + ret =3D ethtool_rxnfc_copy_struct(cmd, &info, &info_size, useraddr); + if (ret) + return ret; + + if (info.cmd =3D=3D ETHTOOL_GRXCLSRLALL) { + if (info.rule_cnt > 0) { + if (info.rule_cnt <=3D KMALLOC_MAX_SIZE / sizeof(u32)) + rule_buf =3D kcalloc(info.rule_cnt, sizeof(u32), + GFP_USER); + if (!rule_buf) + return -ENOMEM; + } + } + + ret =3D ops->get_rxnfc(dev, &info, rule_buf); + if (ret < 0) + goto err_out; + + ret =3D ethtool_rxnfc_copy_to_user(useraddr, &info, info_size, rule_buf); +err_out: + kfree(rule_buf); + + return ret; +} + static noinline_for_stack int ethtool_get_rxnfc(struct net_device *dev, u32 cmd, void __user *useraddr) { @@ -3377,6 +3415,8 @@ __dev_ethtool(struct net *net, struct ifreq *ifr, voi= d __user *useraddr, rc =3D ethtool_set_rxfh_fields(dev, ethcmd, useraddr); break; case ETHTOOL_GRXRINGS: + rc =3D ethtool_get_rxrings(dev, ethcmd, useraddr); + break; case ETHTOOL_GRXCLSRLCNT: case ETHTOOL_GRXCLSRULE: case ETHTOOL_GRXCLSRLALL: --=20 2.47.3 From nobody Thu Oct 2 15:32:59 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 757C12FFDF8 for ; Mon, 15 Sep 2025 10:47:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933266; cv=none; b=aiTLfHgqVpV+Xv6ide0DZhDhbKDOtqWpJuWJCVrlyBA1KvSw/Zo/EPMKqeerNz5DYXe86SltYjMGyk22esVf32lZ4orScQyj1L2wKQT/4McPaxeUJw4DgsCjmsxPivGx7i2t9FDPoQ/AnqOBM3ZmY28xRORTAytCoRE09M8auzg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933266; c=relaxed/simple; bh=g5R+KO0zDOkxIkWQNfeVkn9e14oSE0vPMCqx5KVoKUc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=G/fCpYqJ6jvFflmZSS69OP6kBj01JCHBaShIluanZ1YxOAeGUoyGa7ooTYV7ZJQikMIf1h8MFPKMEybntaee5x8SiUpo3oB9Otw8CKzbl+wSp759207zTmrlewlTM9xEQ4sP5hqHxG2KhgVYgiOx3rwr3aKKcxa6bwZxm2JhIFg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.218.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-b046fc9f359so611042266b.0 for ; Mon, 15 Sep 2025 03:47:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757933263; x=1758538063; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BNdbybFK0ieLurW9tGv2v5Ky8Nf9YctW4a1t2pmLOlc=; b=w740SK6oC/O4UO5sAHXaJ3ARDhDFAvvBDi5mI9JkOIU6kcXLxSBUae5kRGKaxmM0Gf lGRPrKGn42VGE9khaeeGB1pA6/FTpSjzOWds1K/QVwBdhwhOFK2nvrrXz8LyDOMBS9We AFXpc+kfiQSEQHUrVW+Z+SeKbe394KAgJE/M3bGv7yDC7VxVWGX6RsggJvoAf52vKVlW xoSkE/bxYIOmictDKsFGCjD0vEidOyA5OpS0mwNIo0LjR/y2rVqyZsa7Ips+Xld+0MrH UrDUMI/jCcOXeynCe23+mDXPXpFwBiQUAAcH0LSlF4JfkidmDBK71nLUqM+d4d/3xkHu tRow== X-Forwarded-Encrypted: i=1; AJvYcCWzzNvMYDSpyDzgTcB7OMtA7PmdBhHUv7mEmRzs5Ua5iu2PDj2R+14/xKMKgf4UVD0GFGby0Jhpal/ISWA=@vger.kernel.org X-Gm-Message-State: AOJu0YwovP0GdZ1tMO7CyODwLk2/XPWTmB3XtfzD3VpxKakDe7uvK//1 sqRzF82poJc4M+XaCs115+LQ465F4lkUtV8Ug0tt4iP1Q2cvBTpbHlaj X-Gm-Gg: ASbGncvEQIGsBSKv0palLiJjlWKpLU3EK3+SG08tkLDYWWEzChs/63Hau10v906Yadz e6t3xDCVG2XlEzDus2hxza4Y4MAJcnMMlgjM7TtxDDbhmJ3tu1Ms6pqOwU6Ui7nrIdGzPY+zBvu Di8EUHYYQ/4UQSOvBn416teHphinmEvDU16F+QKjl/slHPuMqHBqGRPvJtToACxktLmxmzlCKAr YonvM1Lt895WXjNV30GPJjb+Pt6m1wTCVk6XnWGVMtvIBotCVTYaHNI7wjSlL8xZVfjBjlLHarY ZeP4ZvhOtDlG8D+M2FODBghBGz56/3oBvP9cirOU8lrrdSMkD/6Um565x7aL7VasOVVSesS9yAh +mKdvKcQrTw1A6XL/RNLd0gOn X-Google-Smtp-Source: AGHT+IEv9M1+XeyH4YaGcgM5JD/js2B92gnuLogt/kc1W1a14tJODp4LRaazcfABYgiJxEm71MSNiw== X-Received: by 2002:a17:907:1df1:b0:b07:dacd:f981 with SMTP id a640c23a62f3a-b07dace06b9mr663196666b.28.1757933262660; Mon, 15 Sep 2025 03:47:42 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:71::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07b3347a4fsm898294366b.103.2025.09.15.03.47.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 03:47:42 -0700 (PDT) From: Breno Leitao Date: Mon, 15 Sep 2025 03:47:28 -0700 Subject: [PATCH net-next v3 3/8] net: ethtool: remove the duplicated handling from ethtool_get_rxrings Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250915-gxrings-v3-3-bfd717dbcaad@debian.org> References: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> In-Reply-To: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , kuba@kernel.org, Simon Horman , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?utf-8?q?Eugenio_P=C3=A9rez?= , Andrew Lunn Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, Breno Leitao , Lei Yang , kernel-team@meta.com X-Mailer: b4 0.15-dev-dd21f X-Developer-Signature: v=1; a=openpgp-sha256; l=2140; i=leitao@debian.org; h=from:subject:message-id; bh=g5R+KO0zDOkxIkWQNfeVkn9e14oSE0vPMCqx5KVoKUc=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBox+7HLk5bXOHgNvPiT5PsRW3BqaLieuawmdwFr ubyn3yCUy6JAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaMfuxwAKCRA1o5Of/Hh3 bYp0D/9KMm+eyNuQ0UcsobmG05pUWUug8aAkloEZ0u15EiwrwffFmvDg5SlDdWasTQMMs3pk1ar p8d4XJ+ZhuYz6GJor/r8TF1wppK1adTPbj+CbSzaN8GNtqKPr8EdW6N1J2VPPXxI4xl/wmX3KO+ oHlyYVtux3Sbd3baDeBzxT1+R4VUvEwkiqcWycmcUI0fCFvSQtDbzFnEEdtG7kdgUbiE2asgrCf gIk2bQrOCEKyD2BahG0xQnl4sM9/kpqvAgH24TYih0I0JcIKXR8zJ/TqvfC8H7mHYzZEVpTPh4d VNAQmGNh7zUB5HFNZYhIRf/TapTUQ098xOJ3kjxl/Jl9HhRVaM246X/XzzUHJGBrPDas0929twW 8xom2ZmCPKsV++PxGXGhcWZCga08zILBviYHnQ/prKzW8oxrPmDKEtoQPpJUycVmkO8ilPcmN1W yCygBfgcwWC9UTW7+9PAuihEcWga13V4COPOxN8as1GqleZN5LQ9ZrDUUHYiVfI7FJj4P0br2KU Sb5fLKqbxzZlKFZ6AOBSjrn7ETAdUyI8y2y5GZ3oQo09+tJhoeoxH/gSl9mC1HO3gwKWTjLgfgb Hh54mVP38tfx1exhUV67xI40wlP+11y/rPxO6kKnqqfYmAMzuyx0agOVuUv5Qor5IPS2msYllaq SZDDcphGmS0AqWw== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D ethtool_get_rxrings() was a copy of ethtool_get_rxnfc(). Clean the code that will never be executed for GRXRINGS specifically. Signed-off-by: Breno Leitao Suggested-by: Jakub Kicinski Tested-by: Lei Yang --- net/ethtool/ioctl.c | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index 4214ab33c3c81..a0f3de76cea03 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c @@ -1212,52 +1212,39 @@ static noinline_for_stack int ethtool_get_rxrings(s= truct net_device *dev, u32 cmd, void __user *useraddr) { - struct ethtool_rxnfc info; - size_t info_size =3D sizeof(info); const struct ethtool_ops *ops =3D dev->ethtool_ops; + struct ethtool_rxnfc info; + size_t info_size; int ret; - void *rule_buf =3D NULL; =20 if (!ops->get_rxnfc) return -EOPNOTSUPP; =20 + info_size =3D sizeof(info); ret =3D ethtool_rxnfc_copy_struct(cmd, &info, &info_size, useraddr); if (ret) return ret; =20 - if (info.cmd =3D=3D ETHTOOL_GRXCLSRLALL) { - if (info.rule_cnt > 0) { - if (info.rule_cnt <=3D KMALLOC_MAX_SIZE / sizeof(u32)) - rule_buf =3D kcalloc(info.rule_cnt, sizeof(u32), - GFP_USER); - if (!rule_buf) - return -ENOMEM; - } - } - - ret =3D ops->get_rxnfc(dev, &info, rule_buf); + ret =3D ops->get_rxnfc(dev, &info, NULL); if (ret < 0) - goto err_out; - - ret =3D ethtool_rxnfc_copy_to_user(useraddr, &info, info_size, rule_buf); -err_out: - kfree(rule_buf); + return ret; =20 - return ret; + return ethtool_rxnfc_copy_to_user(useraddr, &info, info_size, NULL); } =20 static noinline_for_stack int ethtool_get_rxnfc(struct net_device *dev, u32 cmd, void __user *useraddr) { - struct ethtool_rxnfc info; - size_t info_size =3D sizeof(info); const struct ethtool_ops *ops =3D dev->ethtool_ops; - int ret; + struct ethtool_rxnfc info; void *rule_buf =3D NULL; + size_t info_size; + int ret; =20 if (!ops->get_rxnfc) return -EOPNOTSUPP; =20 + info_size =3D sizeof(info); ret =3D ethtool_rxnfc_copy_struct(cmd, &info, &info_size, useraddr); if (ret) return ret; --=20 2.47.3 From nobody Thu Oct 2 15:32:59 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2379A30216B for ; Mon, 15 Sep 2025 10:47:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933270; cv=none; b=YOrwfxlMNI8oj90OE8FJZ2hbME2nDxxw/I/KmI1YEJ4QvEjgQXJIeakTggT0lItba6d8DwK1pGcpHNjQHJUX4Oe1UdsuN+Mou2+esPgf6O9pRtKMZJvHaDJxCzXMjo2l5liHqG5T0ZXMuI8QC4aJLxK+rN8MMHw/GAUNF07Fqbw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933270; c=relaxed/simple; bh=b8e8OaWNtnadVIxSNP9KePI7AvW3rS2UHvHFSh890lk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tS2nBV9/Dv60EmaCT3nVzQMJ/b5U1EbZeZl5mVQXdrCt7D6jsf1XP8qeaDgTQ8l7swdD3p62joSdfJHCKpqYOt2HiLDwjr/ObEvI6H+udhSJcQ+D+l5BiZthkNaP7F58l0KrjngTsxzwzVx5pOxLO8mfQmYcrmj7Qen+Caden6A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.218.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-b042cc3954fso727378866b.0 for ; Mon, 15 Sep 2025 03:47:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757933265; x=1758538065; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H7HyATeze4iHdtm3Jn5UcYkJ1c2GNNZC+W/TqjLRDmY=; b=aMLf6QxvToejt7VTgF/nByCZScJp7MiDBwhHsuP78psrIMMdhNOfFs+9PKK2nK5Vja oFGPQzQ3KXr9JHto6MLns0MPicALp5iya+fMw6WdjMFOUtW5A63qHI98IUGhIgIAayiv 09VCxoWEUPbsKawdk9N7k9XhLTsUaD7Q4Yx9KLxPJIeJ+0G/CYeKLuEC09OBeusQ7H8p SceHE+9TisoFXPy3wazjv+prCMFrE7VhveJ0LIRvAhTwYBjqSpgqI0iH2Ce/Cnih3LVF usSQKg0QM4J7SQqMURtdTCo3Bg7Z3JTQibyqkDq1h5ophlG31aQvOSRKLbjS2BmWY0/R Ir6g== X-Forwarded-Encrypted: i=1; AJvYcCUD54nuG7wrv20nJtT/zMzNv/RNtNtImwj7TYg5FqmCnqFxYUVJc4HsktXD22ge6UGrfCzDTsHQanp14Uc=@vger.kernel.org X-Gm-Message-State: AOJu0YxuyNU94DPC8LSkKhDPp+sCwgEJ8zcbzkOfqzhpEegBSKEJ41SC Halgx+tO6S+l7YjsgxPTrevcRQVep2yi/rGskIp+iZ1YbScm1TQbZ3Na X-Gm-Gg: ASbGncs8n2i0dpCI7jnYzNf/mYd3XKfkKLgzHB/1DFdb0ST5a1F08RpjBOOD+b11TkJ PqjM2bMOEzeqI9hNOSVeo+xl+5sYpjgTcNXXe6PA9GsQFFfllkHxE5L2HAAcWmVGYnLAc09trI/ BGVFDekS8JDKeGQbzBeIp9n8fVbRw2s9MnpZk/jmTekipu+gyOioYBvNc5688k5iH6sGf5XXUXr hLmQrgU5tt0UILCBaRobu+0LM5jnORL6CwyjMe0e1lcNoxjE8ibTByZkh1DgEuHnsgDyUqlBi/E tIs9VlHVD2fzekBo95MtGUojx+3cc74oDXUiJZ//mCrV6kzYH5H+WEbyteHawNnNKyKIeDQMgP+ BcKMAPqBF3yxs X-Google-Smtp-Source: AGHT+IGp/mJO2oohkJBO9wkXgeZW6c1+lSdmqvm9cI4B/RVB1WNWpeBKx1eZf48BYogf1YjTyHGKeA== X-Received: by 2002:a17:907:9617:b0:b04:c7c5:499d with SMTP id a640c23a62f3a-b07c3833a41mr1095994866b.47.1757933265119; Mon, 15 Sep 2025 03:47:45 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:9::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07b32dd6f3sm908527566b.67.2025.09.15.03.47.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 03:47:44 -0700 (PDT) From: Breno Leitao Date: Mon, 15 Sep 2025 03:47:29 -0700 Subject: [PATCH net-next v3 4/8] net: ethtool: add get_rx_ring_count callback to optimize RX ring queries Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250915-gxrings-v3-4-bfd717dbcaad@debian.org> References: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> In-Reply-To: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , kuba@kernel.org, Simon Horman , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?utf-8?q?Eugenio_P=C3=A9rez?= , Andrew Lunn Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, Breno Leitao , Lei Yang , kernel-team@meta.com X-Mailer: b4 0.15-dev-dd21f X-Developer-Signature: v=1; a=openpgp-sha256; l=3811; i=leitao@debian.org; h=from:subject:message-id; bh=b8e8OaWNtnadVIxSNP9KePI7AvW3rS2UHvHFSh890lk=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBox+7HwVVGDRCgyCtSdI1fF4Q6fbRHuHKhZJjhV IHl21NhkU2JAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaMfuxwAKCRA1o5Of/Hh3 bSp5D/4mvnlmyjVJSm/vLWnl0aLz3ZcZoum4iaB+BznlaOH0XVWCgGs4WSLKBBKjLB30Xlsg9WD NiIROe1uA/sPL2U2YRLnvW38W720g1vf+iFyDCiJ+/fYcc41l06bSIvtcxZdwezPs2JLpVuhwQf o86uQdBdPDsO5kg56YDD/j2W49t36X/KhVkDN23PJPPn+VFRvsLdNHSMDGO9fuc6gPFMRqyzNmC rJ7DOCarl05LOScu+uap5Xyw3kICe6fPMB8/zUQ07kXI96IY7+F5cTR0Ku7aHqgRiSKcXGewjhd bfYaK6RoTSLN1wxE708bBcfP6d+TVDV/Mx+DkG5E84b7RdVp0jssyqq+Pl9GDgW2Aqfkg5o8r41 ntyA9eDoq9OFssebdIvQh/ZZMKbwq///I3dutP5BjH0sIDTv3Fr4Vrl2D5Lp6Ug10IBaRK4iseY TKt2DHCl7dp/ysGGtWHp0T6Mvl43v5rDFTp7CJpuzpeLFxs7C3xhAFmqyEPYPeVY/Z9bb+riezd wd5nEyvCRT+5HvntJ3i5S+s1PLNCuRCRZyCJuisTiSXhJeFGoGOgDFEV/Qc+X7e4IAtFY1kD2tx FZ+hObN5WQIt6R/citTQ4/JvZKvjiDmdjIQx6VExcrHJv1Tpq21gvC4AxBtlGXyV7QT50/hsLfl Q4I2ZEakH9zxwtg== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D Add a new optional get_rx_ring_count callback in ethtool_ops to allow drivers to provide the number of RX rings directly without going through the full get_rxnfc flow classification interface. Create ethtool_get_rx_ring_count() to use .get_rx_ring_count if available, falling back to get_rxnfc() otherwise. It needs to be non-static, given it will be called by other ethtool functions laters, as those calling get_rxfh(). Signed-off-by: Breno Leitao Suggested-by: Jakub Kicinski Tested-by: Lei Yang --- include/linux/ethtool.h | 2 ++ net/ethtool/common.h | 2 ++ net/ethtool/ioctl.c | 26 ++++++++++++++++++++++++-- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index d7d757e72554e..c869b7f8bce8b 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h @@ -968,6 +968,7 @@ struct kernel_ethtool_ts_info { * @reset: Reset (part of) the device, as specified by a bitmask of * flags from &enum ethtool_reset_flags. Returns a negative * error code or zero. + * @get_rx_ring_count: Return the number of RX rings * @get_rxfh_key_size: Get the size of the RX flow hash key. * Returns zero if not supported for this specific device. * @get_rxfh_indir_size: Get the size of the RX flow hash indirection tabl= e. @@ -1162,6 +1163,7 @@ struct ethtool_ops { int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *); int (*flash_device)(struct net_device *, struct ethtool_flash *); int (*reset)(struct net_device *, u32 *); + u32 (*get_rx_ring_count)(struct net_device *dev); u32 (*get_rxfh_key_size)(struct net_device *); u32 (*get_rxfh_indir_size)(struct net_device *); int (*get_rxfh)(struct net_device *, struct ethtool_rxfh_param *); diff --git a/net/ethtool/common.h b/net/ethtool/common.h index c4d084dde5bf4..1609cf4e53ebb 100644 --- a/net/ethtool/common.h +++ b/net/ethtool/common.h @@ -54,6 +54,8 @@ void ethtool_ringparam_get_cfg(struct net_device *dev, struct kernel_ethtool_ringparam *kparam, struct netlink_ext_ack *extack); =20 +int ethtool_get_rx_ring_count(struct net_device *dev); + int __ethtool_get_ts_info(struct net_device *dev, struct kernel_ethtool_ts= _info *info); int ethtool_get_ts_info_by_phc(struct net_device *dev, struct kernel_ethtool_ts_info *info, diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index a0f3de76cea03..5b17e71cb3032 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c @@ -1208,6 +1208,26 @@ static noinline_for_stack int ethtool_set_rxnfc(stru= ct net_device *dev, return 0; } =20 +int ethtool_get_rx_ring_count(struct net_device *dev) +{ + const struct ethtool_ops *ops =3D dev->ethtool_ops; + struct ethtool_rxnfc rx_rings =3D {}; + int ret; + + if (ops->get_rx_ring_count) + return ops->get_rx_ring_count(dev); + + if (!ops->get_rxnfc) + return -EOPNOTSUPP; + + rx_rings.cmd =3D ETHTOOL_GRXRINGS; + ret =3D ops->get_rxnfc(dev, &rx_rings, NULL); + if (ret < 0) + return ret; + + return rx_rings.data; +} + static noinline_for_stack int ethtool_get_rxrings(struct net_device *dev, u32 cmd, void __user *useraddr) @@ -1217,7 +1237,7 @@ static noinline_for_stack int ethtool_get_rxrings(str= uct net_device *dev, size_t info_size; int ret; =20 - if (!ops->get_rxnfc) + if (!ops->get_rxnfc && !ops->get_rx_ring_count) return -EOPNOTSUPP; =20 info_size =3D sizeof(info); @@ -1225,10 +1245,12 @@ static noinline_for_stack int ethtool_get_rxrings(s= truct net_device *dev, if (ret) return ret; =20 - ret =3D ops->get_rxnfc(dev, &info, NULL); + ret =3D ethtool_get_rx_ring_count(dev); if (ret < 0) return ret; =20 + info.data =3D ret; + return ethtool_rxnfc_copy_to_user(useraddr, &info, info_size, NULL); } =20 --=20 2.47.3 From nobody Thu Oct 2 15:32:59 2025 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8BA0530217F for ; Mon, 15 Sep 2025 10:47:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933270; cv=none; b=rZ+4qiEPG88sH2UUqPwUzowRUvWg8xSbn3wwbJJwJ1qRiRY35R8UXy2vAmBdOOe6IJ+EPB3gLb8Uh4cVEjNLy+AdKE3mwXiHHfZFxp9LhQhkBnGV6xwekhsnF9ycP8UYbmAXCLXt2gTVW7Quw5yO0zbCTeTKgjc5IhIM+kg4SLs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933270; c=relaxed/simple; bh=cJNmCEop9g7hasbfK5nHQAjt4RcAnO6s+ONwXp7yYCk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lUoUqX/dCcB8lVzfcD82+dUcv73dM3OVkkCqVB8t6/fhUIgeK0xeJWdm1Q36g1DiC2Y2z9z8Bo2yIq/Lth1Y0Q0hbrsg5sL77r60otYggU5gKbvwOtCvBZpYSSPNDdfyxYJ3SOWVFTKL2CT4KJJWMjVY17Z+LAXjOSnUeuvDQKI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.208.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-62ec5f750f7so6752036a12.3 for ; Mon, 15 Sep 2025 03:47:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757933267; x=1758538067; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=thqZlVu6AwBX6pN9TwBbQDUepDpkuMkaK1MUaqSKnac=; b=ffck8h1I/ZlvtClrWcSYZiYS7URfvSrGeiVCDBR/dK53dLbaVEdLYgqxo6zU1fjAvE 5CllDELVSn0bPgatPZHj5Iz1LU2He+ohi7THzTfJioqJZe6hGugPayhMvawksNAeGtvm 7bm5rKuTJqhsZYAmXEf6DKuGtSum1NlYU4/XCXNNF9b84QfHnTBs/EaLOv1rL5Qxt1WU T0uI/7hnZZezs+WHIZnmS1ry+MfyW5t9zd+3h6iefSXzjn/fm932xIDduUG3F8VJ4Kg9 jjc6zR/JlZwx/AgiicUIYe3svk0z4zxdOmWOVF/6Pvqos/fwD9YckCsG/vkuE2ycc3W6 zo6w== X-Forwarded-Encrypted: i=1; AJvYcCWTHZLFVV50Hcc3Uz+VOf6ex6VqI24Vw6x3TekxmdDPaR/FaOfSGOKP/RINVkdE58Y4pZ0VPgiqA+OrLvQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxydVjhGBFsG5GLD7gx8L4Bmx/YRYxfeJSoChjM8PC/WaFSa9bh pexLimc1+FzsiBuZzozy3Y3SIhZXDYV4Sn/aQUhZSN4NatkouPM5QzDh X-Gm-Gg: ASbGncva50pPlhuxg6KFLKSWwUVf3zAtdt4gZ2YyEl7HY0aXg9sJYYehlliTskBYkpt 2sVSnvUXyqWDSbDiPTAxPXwqwQoyWzTxdIXE219SQs9zwblTsf+0FzLxzLlMWV+ND1tpwpJyJB/ uAl6eyVIAQIQU1MqxzFEmWmeCo3wWUBIJ8MCMhBGlu1dpPiCwm9h6itZUKlHdbHphhr+Sxihc/a ltHZISSosvz964ZjkjyW5yvTP1ZS7DKh5NK8nUQBieblRIqb6+rztWDOi3CwOiUudZeFLcLsr/E 5xRwMMyS7eninnnBlQXlNIFEb3GjRzQUVg4lrNhyHMOO5WXQoguEWiadxSTM6QiiE666qkaiDo5 XfkRLufHjZ/7a5Zum1KIJJ6A= X-Google-Smtp-Source: AGHT+IG2lHVG5X9TCybfnRv3fi1JR7IpXWMr4JJq5A/iavS4CtYbQ/LrA4ABQjGkQeP4oF4WcFcoGA== X-Received: by 2002:a05:6402:1ed6:b0:62f:af:60a0 with SMTP id 4fb4d7f45d1cf-62f00af631dmr8127144a12.28.1757933266562; Mon, 15 Sep 2025 03:47:46 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:6::]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-62f4b8ec394sm852604a12.1.2025.09.15.03.47.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 03:47:46 -0700 (PDT) From: Breno Leitao Date: Mon, 15 Sep 2025 03:47:30 -0700 Subject: [PATCH net-next v3 5/8] net: ethtool: update set_rxfh to use ethtool_get_rx_ring_count helper Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250915-gxrings-v3-5-bfd717dbcaad@debian.org> References: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> In-Reply-To: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , kuba@kernel.org, Simon Horman , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?utf-8?q?Eugenio_P=C3=A9rez?= , Andrew Lunn Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, Breno Leitao , Lei Yang , kernel-team@meta.com X-Mailer: b4 0.15-dev-dd21f X-Developer-Signature: v=1; a=openpgp-sha256; l=2187; i=leitao@debian.org; h=from:subject:message-id; bh=cJNmCEop9g7hasbfK5nHQAjt4RcAnO6s+ONwXp7yYCk=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBox+7HzRQyd97vtKnYcGncnR/KR0p9FyVINGynI 4V0yrt3f7+JAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaMfuxwAKCRA1o5Of/Hh3 bd+bD/kBGpbWXaTLKX4Up2S4d/W8V7UlXsppBPkr+WPNLXs2W0arKKE30TQyekECZEbWJ3BB30g g36/crQFSe6cwz4npE5sTfNNj1+/ObX2DuLe58203DG3B2G+MC7y8zHAFR5mhwWOPN3CYxWn3qP HhJVWaCCXSMKpfZYrJr8JiFZUI7SciiuDDxnZUMwmXYVWe3HJpKdMQdpZ8B+ej3hkWHNIFcMRYL QYcwWN/gY4kwxHDYAXhynwqHmZzqkPuYAEWJ9O+0Y5Sjdx4cLVV2YHW28xp02clh3NFCs6LWf5A 6rYaKOy+gw7SzcipOHPTkiXOzc1h478wOs7db7jVwvfbZ15oRjg0y/5wkQYFtApazssDB5rAWji twVsmHfbsC8Lm2041NLDVzT9Zg7UuQsmllDarxVsB2HS0zFsU+ms9xc0QCpTTk0LYrirBHOJVhu FT6vZ78cthuTBTsaFfcEyarWlBVVDUB8UoawhxF2C5dChildS5gRptFtgMhDSNyGlQvHaMdTQ9n 1tVr2UmMrg4u7obD4ycOYBI/jQg/+mV8J0bEQDxmbe/7TOjKooHjsHSwv2Qvz8sz5uZS2vDB3HC foEQVM+HsRzx06ERfFP9Y0I5NiCrUWu+deZboXIoPTkCUA6FsUe+M2Rechb4JCSRk1LlZrzsXGP Zmz9ZeNcZFYq4sw== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D Modify ethtool_set_rxfh() to use the new ethtool_get_rx_ring_count() helper function for retrieving the number of RX rings instead of directly calling get_rxnfc with ETHTOOL_GRXRINGS. This way, we can leverage the new helper if it is available in ethtool_ops. Signed-off-by: Breno Leitao Suggested-by: Jakub Kicinski Tested-by: Lei Yang --- net/ethtool/ioctl.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index 5b17e71cb3032..2fcb11e7505f4 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c @@ -1555,9 +1555,9 @@ static noinline_for_stack int ethtool_set_rxfh(struct= net_device *dev, struct ethtool_rxfh_param rxfh_dev =3D {}; struct ethtool_rxfh_context *ctx =3D NULL; struct netlink_ext_ack *extack =3D NULL; - struct ethtool_rxnfc rx_rings; struct ethtool_rxfh rxfh; bool create =3D false; + int num_rx_rings; u8 *rss_config; int ntf =3D 0; int ret; @@ -1618,10 +1618,11 @@ static noinline_for_stack int ethtool_set_rxfh(stru= ct net_device *dev, if (!rss_config) return -ENOMEM; =20 - rx_rings.cmd =3D ETHTOOL_GRXRINGS; - ret =3D ops->get_rxnfc(dev, &rx_rings, NULL); - if (ret) + num_rx_rings =3D ethtool_get_rx_ring_count(dev); + if (num_rx_rings < 0) { + ret =3D num_rx_rings; goto out_free; + } =20 /* rxfh.indir_size =3D=3D 0 means reset the indir table to default (master * context) or delete the context (other RSS contexts). @@ -1634,7 +1635,7 @@ static noinline_for_stack int ethtool_set_rxfh(struct= net_device *dev, rxfh_dev.indir_size =3D dev_indir_size; ret =3D ethtool_copy_validate_indir(rxfh_dev.indir, useraddr + rss_cfg_offset, - rx_rings.data, + num_rx_rings, rxfh.indir_size); if (ret) goto out_free; @@ -1646,7 +1647,8 @@ static noinline_for_stack int ethtool_set_rxfh(struct= net_device *dev, rxfh_dev.indir_size =3D dev_indir_size; indir =3D rxfh_dev.indir; for (i =3D 0; i < dev_indir_size; i++) - indir[i] =3D ethtool_rxfh_indir_default(i, rx_rings.data); + indir[i] =3D + ethtool_rxfh_indir_default(i, num_rx_rings); } else { rxfh_dev.rss_delete =3D true; } --=20 2.47.3 From nobody Thu Oct 2 15:32:59 2025 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C096030102B for ; Mon, 15 Sep 2025 10:47:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933271; cv=none; b=eHqPs9YSs35gi0lk+eUe0cu7cAvmHld3OmVH8V5udEzUQSE/1nVOBTJf7YNU7+VkZQtdJpVENC324GtuVC8rwfB+OYi1EutvNffogQviDjzwUfVGdqPBlBH/kZBXXGBEcc7cWQPCNNtyjpJBdGmLD3h8f7TsFo3/GVH8vUBPrxQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933271; c=relaxed/simple; bh=nh0Gd8fHJE8h5NCSVCO0qeGjEU/OiffbOrqPJ9TZRyc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RG4GtTi0lEGNfdX3PkAAO1qYwL/VbqHSgX3/Mpl6bDntk23eEmEAZJX7ehGeHi0Q0wdhk5hEwFneAikgtTG76AZjm60DnVKwFNx6nhrSNWF+G9UdIl2qfVFVHw3AoAHWZIAGL1A3kRf3hRTyFOnC8Z2Sjm5THugjh4tfy6Qzyjk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.218.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-b0415e03e25so508602866b.0 for ; Mon, 15 Sep 2025 03:47:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757933268; x=1758538068; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H3zJ2PhZUzoN48j7NGHKfzo8+L/UqnsBZHD1sGknc0E=; b=gR/SMFrVWcUQvd6O0mU9tQr4aiik7ZlhCkudIo0coCY9AQ0XwhZ6c9Lc0WHaJ7sBHT qc6DRwiHtkhb0BtwUhABaLb0PLVCBoe4eZPvRTQAnqFiV3AoFJxYSM02ztl2evJoQ69v WvSqV47yWk8ZKInSAGALjYmuuVWentMFGG7idS3BMzrWBxFubYvHjCthUcfp7d37tXSc Byoy8sZZWrcw+cF4tti2dx36jx9gtiHt/OOxSftue0Xo7n7zBKbeYrcmtWYlmiOAmRWH /P+skkmunL90bjECa+pGS0pFyUY2is7HNFh4UKGsmQnn0O0HXCwSNmeSPxVP0NEa+ETy na0w== X-Forwarded-Encrypted: i=1; AJvYcCWaiygmU0sG14wunttu76rffZNni6LQDR9VNbDFza9HZonNS2GEXKF+SbE0POW8gItH79EMU1mRoxazmNA=@vger.kernel.org X-Gm-Message-State: AOJu0YzzUOo1GRWstq2Oszb7YYwfOajjdMvRBwcZi+2r6DmqUAmUDHSt Ialgm/SglNXmMWfADtEORXB5plq+YekJZMmxt+1FtYr3bYv42p6+uFW3 X-Gm-Gg: ASbGncsNO4DjXqanJ+grFue68PR7MPH89Erf7LGuNB73kJ3NXArHouIveFZEK59QkLN V88d3RT99E7oRxQsfq87qEZ6Shzm4FiWR2xZDibNUlv4j2/Au+9PcERICyZSyu5scSzatnhGQ0S C0OBBsbnO44C/18gZyKs4PSjBjHJKKUy8Tv0dKV60ZVE0zlwrLXNyWRNNrdS+rqcOMOWwLa3tZW zz3dM9AC5td/89NgoU6506m5ZPRHES96mi8HFmoW9JXQUnIhD7rqptjRY190KXld1tBxt2ixgf4 f9VHt2mOZJJZYulWdNjjnb4I64WIPJYgSV0Zu1Yo/2F2KuiIsnWeybWITTIVo8xUiGMRA8dvW+4 qcKygm4lkFQ== X-Google-Smtp-Source: AGHT+IF3sEMqm1u3RjCkqLLEFAQiFfukDIezE5o+I5x0VhNAfnZxolVsCu9377E+qnP4u+NgzIbE4w== X-Received: by 2002:a17:907:7ea8:b0:b04:8358:26fe with SMTP id a640c23a62f3a-b07c381c60emr1183618266b.34.1757933267915; Mon, 15 Sep 2025 03:47:47 -0700 (PDT) Received: from localhost ([2a03:2880:30ff::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07b32dd3e4sm909084366b.54.2025.09.15.03.47.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 03:47:47 -0700 (PDT) From: Breno Leitao Date: Mon, 15 Sep 2025 03:47:31 -0700 Subject: [PATCH net-next v3 6/8] net: ethtool: update set_rxfh_indir to use ethtool_get_rx_ring_count helper Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250915-gxrings-v3-6-bfd717dbcaad@debian.org> References: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> In-Reply-To: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , kuba@kernel.org, Simon Horman , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?utf-8?q?Eugenio_P=C3=A9rez?= , Andrew Lunn Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, Breno Leitao , Lei Yang , kernel-team@meta.com X-Mailer: b4 0.15-dev-dd21f X-Developer-Signature: v=1; a=openpgp-sha256; l=1795; i=leitao@debian.org; h=from:subject:message-id; bh=nh0Gd8fHJE8h5NCSVCO0qeGjEU/OiffbOrqPJ9TZRyc=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBox+7H5t5pVfBWI/WsQktPWHj+w9TIY2cCP/xJ1 v9dDjk1sneJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaMfuxwAKCRA1o5Of/Hh3 bdEuD/4sdZ73DY7iMb3FA2D6mkUisOHLDfmqimfLeu9VagH7Y+FXlMDlCnJzrfNEPIN986+tlM2 RhMNMb42bteZPswQTT6GXKrEmWvDWwC+hPb+WVGzeamfM3b0ZtuDuQeza3Ib3cRUY9IT9Zgiy1e +hZbo2ykw9TAQrkVElljZfAoQCF86vm+TqQMPON1O12ZAWSdfDM05FJbloxs5toseGV62jN6yBr FfvTBbkRyUErpdSmXRZWTwq1Kn1lcIJMmm3QuGgJF3+F8szNCTCf+nW0Uh569C+GkchfnsS561Y Wk45Lns93prhdbcZBYLz4e2GuXJ2dj6CScVz33nfL33/4/btCk6eORwke6RfREAPI+fYRVzTpgE mvZ/r+D6UXGM7se+kb9K5vbUCibfbnrIfZV3t8Ir8MRduf7TwPjdTJit6PKaE7RelIs7dIm/YdJ uAg533xKSS6lvwGh7CPD31HQDEFZyY6CgPPZIhGE0l+dmx5ThdgpaQWJ/PbPegRPjuF/isQe/Ut mYNpehytpUZ96evHPN3ABuMs2SoZQv4C8038C3N6ih/cquSNjGaG207JxnsUmNHjAch81MA/Cu/ UFzAviIt2nYQQc81LKVPLm4lvFbmqHN0Ao4ZYXIYmZmQaxXIseJVNkx/o0xpxiATUOlP486+/a/ nGlhI6oxl6rtGrg== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D Modify ethtool_set_rxfh() to use the new ethtool_get_rx_ring_count() helper function for retrieving the number of RX rings instead of directly calling get_rxnfc with ETHTOOL_GRXRINGS. This way, we can leverage the new helper if it is available in ethtool_ops. Signed-off-by: Breno Leitao Suggested-by: Jakub Kicinski Tested-by: Lei Yang --- net/ethtool/ioctl.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index 2fcb11e7505f4..30932555618b0 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c @@ -1374,7 +1374,7 @@ static noinline_for_stack int ethtool_set_rxfh_indir(= struct net_device *dev, const struct ethtool_ops *ops =3D dev->ethtool_ops; struct ethtool_rxfh_param rxfh_dev =3D {}; struct netlink_ext_ack *extack =3D NULL; - struct ethtool_rxnfc rx_rings; + int num_rx_rings; u32 user_size, i; int ret; u32 ringidx_offset =3D offsetof(struct ethtool_rxfh_indir, ring_index[0]); @@ -1400,20 +1400,21 @@ static noinline_for_stack int ethtool_set_rxfh_indi= r(struct net_device *dev, if (!rxfh_dev.indir) return -ENOMEM; =20 - rx_rings.cmd =3D ETHTOOL_GRXRINGS; - ret =3D ops->get_rxnfc(dev, &rx_rings, NULL); - if (ret) + num_rx_rings =3D ethtool_get_rx_ring_count(dev); + if (num_rx_rings < 0) { + ret =3D num_rx_rings; goto out; + } =20 if (user_size =3D=3D 0) { u32 *indir =3D rxfh_dev.indir; =20 for (i =3D 0; i < rxfh_dev.indir_size; i++) - indir[i] =3D ethtool_rxfh_indir_default(i, rx_rings.data); + indir[i] =3D ethtool_rxfh_indir_default(i, num_rx_rings); } else { ret =3D ethtool_copy_validate_indir(rxfh_dev.indir, useraddr + ringidx_offset, - rx_rings.data, + num_rx_rings, rxfh_dev.indir_size); if (ret) goto out; --=20 2.47.3 From nobody Thu Oct 2 15:32:59 2025 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1803A303A06 for ; Mon, 15 Sep 2025 10:47:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933272; cv=none; b=I1nyLAXShliX4B2QLyJ1NsKuDFk02VM/y8FvvOx+NtlxvJIBk8+sS8XhZwJeRyjjW0tRoqfh0ORYUJdAEY96oS/8Hl+XWKX665wAyP6CmamPpQZ2yQkGGPUmO5DYMG46Vf6pTpuUkpaRF7/jCwGzYFWfOYtKfO5kQIOl8O2l83w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933272; c=relaxed/simple; bh=Eu//yE4c+uDioPyDYhhWP0u0k0aovyGvDUK14dk6hs8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NQBMWqsoVfQs86bOIJxU+NneW1MsRVOKAXbk77tdKe5RIXW7pHkz+N58pHNwGeEXQ/me5LKAhn22nbCnW6Gug+F2E9iNG7nxbbtFYE8TeFdZNMXJvBRVkD8RAfnFRFvYGYj82FR3fvdxaSUwIlaTV7GzvhJQvXBWwsrssgoGz/U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.208.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-62f28b8e12cso2400327a12.1 for ; Mon, 15 Sep 2025 03:47:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757933269; x=1758538069; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1/aC7Rw2Q/TRqJF9J43UBQHIqeXm4GXqxm40ob1/fn8=; b=bFMq63X/YWAUc+IPFu20wQ768fdwZcE88xB73xE40TT6sBgAtBBLkZc7kuYXh7Aybt dntNWQHbAqhEjIMjl6jlQJbaq3f4CDKLl+BIZfnR2egi7s09Rg1yJ1T4I8F5kXJ2zYmR LchJSGAv5/5b+bM1YK1OH+XN7i/jeebLetLTeGTMP4zsnuBw9lzwW1dQ7+xGTFosHXHS TX/NppnFevhr4NA1UfaXL/verUVLz02YdclX5qIzvcp9ZDNaRcmzONFuyuVC7wFKCJm5 w7i4kkHywgAyCq5oujRemvezNzwPMjLQY0+2XGGy/aq3FzwDESvD+nESlvUSWpyGPIFJ QjHg== X-Forwarded-Encrypted: i=1; AJvYcCUJS5JoFdoxAxnIvRhhNwxWpcz3Jc+a66gFsy8XG6jF8YRefvVs5i9fiw9a3VUnPJLYZJsOuGQ1etDVF/U=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+RTRTJXp6HmnQ291tOtmn3f1vqM/rlNwTUL9T4zVVII58Cb4p yAdj6VP+Kxd8zB2ZKtLudnE+AZlyneU+C/pmzO+vzLqNKO1vSKwK2Iyn X-Gm-Gg: ASbGncsop/EPYRPaERw7pxriF1jT6O1E1KKzcAYWSHJJLfJEfKPiL8uJFd5ATKN6MyD 1c9N2P/H2Mwia7hq1CgD3UfodIqE7yzMAD7CmuunYPABX+5dqsMDQyJuExwYVGFKKgvxjB7uEER D+k1PCA6i1rM5twHorxO1pSXclQO00ExMtqrLAMHmbp6HsmQ6yNcSHxrvswW3LHOS/UM1BcEaQI cm/kfFiOtGlRZAD/imLluKFy7eTbKisVuTNT1A/ulcwQ57Ptej91nTCah13FNf20uRhUacAi4va zD7T1mzHWIAvS9tEodoysjKmpFpHXORY/JIgA4gF7pms5UqIzrfOxzetFKG5l/77qwCrtuFLpv0 UnMAIXFlxVgiI X-Google-Smtp-Source: AGHT+IEwH+gY2LJbNRhErpOEfDFHnDCncEuToIY9IAIehR8mc/uxvCTxJ2xnSL6UynV4TNodSRjd4A== X-Received: by 2002:a17:907:2d9e:b0:b09:6ff1:e65d with SMTP id a640c23a62f3a-b0970012972mr751793266b.61.1757933269248; Mon, 15 Sep 2025 03:47:49 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:2::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07b334e602sm918832766b.105.2025.09.15.03.47.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 03:47:48 -0700 (PDT) From: Breno Leitao Date: Mon, 15 Sep 2025 03:47:32 -0700 Subject: [PATCH net-next v3 7/8] net: ethtool: use the new helper in rss_set_prep_indir() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250915-gxrings-v3-7-bfd717dbcaad@debian.org> References: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> In-Reply-To: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , kuba@kernel.org, Simon Horman , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?utf-8?q?Eugenio_P=C3=A9rez?= , Andrew Lunn Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, Breno Leitao , Lei Yang , kernel-team@meta.com X-Mailer: b4 0.15-dev-dd21f X-Developer-Signature: v=1; a=openpgp-sha256; l=2209; i=leitao@debian.org; h=from:subject:message-id; bh=Eu//yE4c+uDioPyDYhhWP0u0k0aovyGvDUK14dk6hs8=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBox+7HT3sixUggMAjXwTClt9JSZAR5d3rNmRsoX Lv7/Wpb2ViJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaMfuxwAKCRA1o5Of/Hh3 bUltD/9wAl+e9m4yn8qMCqpqsVl26+O+hsxAmnI+nM6SzM4bP7yDwIfFAYQZIHZQQe9etCynlF2 /yYnLX2JEVbpiXY1b+fnMv9GIMOwqPV9m5Cru3eHEND69o9z8I1Vtb1vw8WYOvhOMcvfaKWxmRB T4hlSuSCad86h1teec3jczxqw3C62yHiYk8nzK6+AiEnbR8jTJ/YVTlCNNz7srSSVq1iNwBV/P7 tMNMDJdybt38Y4nMc9zBGf68hCNCq1NjA2dcQW7q3y9OrAr2cUAf0x3TvZBuWUWF6XnY3bErpnO WH2g4DMPGHaUfk9cBvzrLgNRHqoCVVEljmpw73oWhbhu4YF5CZQkOSAEaOs8KBPKyj+NGPa+lVJ ibZJepaEx4VK6GKGqfHrLhw3hxACHZ2VHtO/epWL+cFtqDYYQcicPeqqIEk1MkuSAjm2Fw8GxJM YJl6LkL1x6m6t1KplTQTiAmpKweLCxenE0Vhx3rXTwma0EsJZlHIzsZ8pmi5BvA3kqHb73jVnG0 S6ziZRmZfV5oQOejX2Ngup5SWpKwy1sEVGCyRUDxAXsPRHR/NtUWgkigvio85M2gwdFqyJYRNlc Ml9+U49tHtCkSEUSZPPm0QZ0Ty52PZoAYZtJNz0rvxsTEgNyxeEwL3y2AfqCRO3wDMyIGZmsvc0 bS2+Cdbm5JHophg== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D Refactor rss_set_prep_indir() to utilize the new ethtool_get_rx_ring_count() helper for determining the number of RX rings, replacing the direct use of get_rxnfc with ETHTOOL_GRXRINGS. This ensures compatibility with both legacy and new ethtool_ops interfaces by transparently multiplexing between them. Signed-off-by: Breno Leitao Suggested-by: Jakub Kicinski Tested-by: Lei Yang --- net/ethtool/rss.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/net/ethtool/rss.c b/net/ethtool/rss.c index 202d95e8bf3e1..4dced53be4b3b 100644 --- a/net/ethtool/rss.c +++ b/net/ethtool/rss.c @@ -620,23 +620,22 @@ rss_set_prep_indir(struct net_device *dev, struct gen= l_info *info, struct rss_reply_data *data, struct ethtool_rxfh_param *rxfh, bool *reset, bool *mod) { - const struct ethtool_ops *ops =3D dev->ethtool_ops; struct netlink_ext_ack *extack =3D info->extack; struct nlattr **tb =3D info->attrs; - struct ethtool_rxnfc rx_rings; size_t alloc_size; + int num_rx_rings; u32 user_size; int i, err; =20 if (!tb[ETHTOOL_A_RSS_INDIR]) return 0; - if (!data->indir_size || !ops->get_rxnfc) + if (!data->indir_size) return -EOPNOTSUPP; =20 - rx_rings.cmd =3D ETHTOOL_GRXRINGS; - err =3D ops->get_rxnfc(dev, &rx_rings, NULL); - if (err) + err =3D ethtool_get_rx_ring_count(dev); + if (err < 0) return err; + num_rx_rings =3D err; =20 if (nla_len(tb[ETHTOOL_A_RSS_INDIR]) % 4) { NL_SET_BAD_ATTR(info->extack, tb[ETHTOOL_A_RSS_INDIR]); @@ -665,7 +664,7 @@ rss_set_prep_indir(struct net_device *dev, struct genl_= info *info, =20 nla_memcpy(rxfh->indir, tb[ETHTOOL_A_RSS_INDIR], alloc_size); for (i =3D 0; i < user_size; i++) { - if (rxfh->indir[i] < rx_rings.data) + if (rxfh->indir[i] < num_rx_rings) continue; =20 NL_SET_ERR_MSG_ATTR_FMT(extack, tb[ETHTOOL_A_RSS_INDIR], @@ -682,7 +681,7 @@ rss_set_prep_indir(struct net_device *dev, struct genl_= info *info, } else { for (i =3D 0; i < data->indir_size; i++) rxfh->indir[i] =3D - ethtool_rxfh_indir_default(i, rx_rings.data); + ethtool_rxfh_indir_default(i, num_rx_rings); } =20 *mod |=3D memcmp(rxfh->indir, data->indir_table, data->indir_size); --=20 2.47.3 From nobody Thu Oct 2 15:32:59 2025 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3E620303CAC for ; Mon, 15 Sep 2025 10:47:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933275; cv=none; b=V4zZhmNFB1HVhCqEg/7hKDU+8uv2K+B9tEEgRf7fppsjtcoux1reT9igkQvDDKk1b0jq5gYtmrPfbqnMuoFp9n+OfN0GVeUgflRaLJiGcegmK9ZrZw8tubXCE7UHrvLI/Q2js8/RD4QBQIwoyqhhPyRy4uwSxXfam1y+1mNWsh0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757933275; c=relaxed/simple; bh=XORibMK+HoTqfv4y9FVPPOq9ONbLbN3AR+BVl4Gb9Yg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eRUNwIJOtFZp+5Q9x4/XsxzcjCaPDnSXzGuPOqGFyzILfGjlMsbouMhAgiZCFkxEKvY11bp2OdmZ0OeVj/tpyORZn6fg3Nx7+7yGvt2eo1Jf9ypxeijRduiC42gL9txYd4vqzSpyGaCVO1qg8ne9JQUjHd8iwX1uQDjovfQqm6k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.218.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-afcb7ae31caso713975266b.3 for ; Mon, 15 Sep 2025 03:47:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757933271; x=1758538071; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DEFtILFHyV3cwaZ5irPCMUES0101pMsbpssc+ihdXEQ=; b=nr6Nd9rWve/MRSBuEVlhRaJF0oxRS2gNmmM2r2HsK+txR0PONfOZ+F51eFiEuhm6QQ OtvjfLmpIWmMM0o9Ihj+bYMwUzR0wpZl4sCdadMYv5DCiMxxArGArMpXxriKIqEhJZly kSi5oQcN6mAFl1SNRx9RL+39QVKFJwPHPzdxRBQi9OX470Gq5kqi05ExeP8EH7yXE4vS vTLf20cxkche6xdTV35HIdE+6Epz9mWKt7FU320FegXUooT+lCB9+/BN3N+GzShjSaDC GYwVhRCde0rZIdVKSqe9ewdtQ90gnE4CTzTFgNrWRj9Pxzw4DfTj4UVupV6ovvaFlvFn W5yA== X-Forwarded-Encrypted: i=1; AJvYcCXQf6Xz4IQYZ1zCVAzzDfphCbTqO9kdCJmfSUWMGsx2/vNqYIvJCHmvqbXfZO76EPMMpQh16x2+YhAXFs8=@vger.kernel.org X-Gm-Message-State: AOJu0Ywqr+ETu3PyWHl/Y/3iznrJUgJx99StKyRGn1Puae7tgd2CZflv sPBfp8t8tw4xiIhLnp5Ka/5zii/w79Qz+UAO04U7Eug2Z0ARlGV05T4W X-Gm-Gg: ASbGncumSjtCfJH4BNqwT3Cr8fkjc+G6pRMWjF8nQ7YcXU0OTi09WX5OZ2gXWgLqv0Z NsqIsTMZg9UX7zy8NgHZt7CCGtMZ7QBQyPvyCfz3ZxClDExBAPC/J6t8iB9mTkiol/OPAozve8f qPq86deH7XoypJ8gV7T0PPgp5/CccdFnS/PKi80FmiR7Z56TGAGLamjO5Da30zKXj9UwUQTFAuu msEJYu/Irgjgoa0gR5JvrVJZKa3GCY2dXBek9kNeaTJQd4S+fJpxEOc4xsMg1rqlAn8VbIZB/Rt KH+y0H/SMYdInQKrbAmWCqGmhgvnJH7oCXn56C1HsMaM8cMskMgtUVpqO+oNY6p0C1VyGwrr970 fsRgZOIXgg145J2BTGPentgg= X-Google-Smtp-Source: AGHT+IF5+uiN5sa5sYRSXuXbbs7oJKleowLHu5cpGTRmFx/VXRwFkx7z/RvBypC9//fYJkMmWRQHyw== X-Received: by 2002:a17:907:3c8b:b0:b0e:677c:d478 with SMTP id a640c23a62f3a-b0e679b61fbmr501433766b.19.1757933270605; Mon, 15 Sep 2025 03:47:50 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:5::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b07b32ef574sm930111766b.73.2025.09.15.03.47.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 03:47:50 -0700 (PDT) From: Breno Leitao Date: Mon, 15 Sep 2025 03:47:33 -0700 Subject: [PATCH net-next v3 8/8] net: virtio_net: add get_rxrings ethtool callback for RX ring queries Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250915-gxrings-v3-8-bfd717dbcaad@debian.org> References: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> In-Reply-To: <20250915-gxrings-v3-0-bfd717dbcaad@debian.org> To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , kuba@kernel.org, Simon Horman , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?utf-8?q?Eugenio_P=C3=A9rez?= , Andrew Lunn Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, Breno Leitao , Lei Yang , kernel-team@meta.com X-Mailer: b4 0.15-dev-dd21f X-Developer-Signature: v=1; a=openpgp-sha256; l=1617; i=leitao@debian.org; h=from:subject:message-id; bh=XORibMK+HoTqfv4y9FVPPOq9ONbLbN3AR+BVl4Gb9Yg=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBox+7Ha+vYd+sWCyL8VwwHbZu51WC2X9xdaW/wJ Jlp8e8BwJiJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaMfuxwAKCRA1o5Of/Hh3 bVefEACYQzpDuHMK20qeGjvp9xI3L0p/CK3fhZQXXd0c2kdIerKJ7wW0ynIb4MkeF/NbJVeUgtK i22XWn/sWXXXTAm6+QHRBuzWb5AMhnwhPh5Mm0LSzf7vDDnNkQvv52UaI1uJuSQL0z8r4p7+e6s MWz79OSuL5KBLydsizzRc7IHcCtyipRjHOqGUaTDvYeaGQCovdF3b374+JyQaRifsTSZwecODft 74HzX/lqOgp1PYvKWx251NQb2/HaXuMn8zJZuphVmikSeels7/+fDO1rm0jmIE2TptULnr8TfV2 5gev9QSzwNG328eoo/oGFDP7vArQXiOJGjO8je+72OxvS+sXGH0s0YbdJhWSJOGYzegGqdzSOhZ +IlTmVzEz/AVmXQB2U97x6KuO11tezqqo5cvesMUfsH0rITk/o/mqfG7S31HfslBqdXlMrnPrwm AUjJPy1qQvV0RaJNTTboG0MNmOLfixX9E80VMFLAzlaLjeo7/FhiW2GokTGHARWIf3O4gmJ0UKh liJ97wftD3EEHnVdyTISbTqMfblm2jQBHomHBOT1129cO98D/sQEoz/1+i3YiIGmG3BzkMAZzsn zljywNgv+N5AS1UqmhXTwGF/8nGte7fsz7wEIRkFs4bkwEJBzFlfGJyNFLdBdIs1kYY0Zw1/t9h IOVI/rg3jXoSZWw== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D Replace the existing virtnet_get_rxnfc callback with a dedicated virtnet_get_rxrings implementation to provide the number of RX rings directly via the new ethtool_ops get_rx_ring_count pointer. This simplifies the RX ring count retrieval and aligns virtio_net with the new ethtool API for querying RX ring parameters. Signed-off-by: Breno Leitao Suggested-by: Jakub Kicinski Tested-by: Lei Yang --- drivers/net/virtio_net.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 06708c9a979e6..7da5a37917e92 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -5609,20 +5609,11 @@ static int virtnet_set_rxfh(struct net_device *dev, return 0; } =20 -static int virtnet_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc = *info, u32 *rule_locs) +static u32 virtnet_get_rx_ring_count(struct net_device *dev) { struct virtnet_info *vi =3D netdev_priv(dev); - int rc =3D 0; =20 - switch (info->cmd) { - case ETHTOOL_GRXRINGS: - info->data =3D vi->curr_queue_pairs; - break; - default: - rc =3D -EOPNOTSUPP; - } - - return rc; + return vi->curr_queue_pairs; } =20 static const struct ethtool_ops virtnet_ethtool_ops =3D { @@ -5650,7 +5641,7 @@ static const struct ethtool_ops virtnet_ethtool_ops = =3D { .set_rxfh =3D virtnet_set_rxfh, .get_rxfh_fields =3D virtnet_get_hashflow, .set_rxfh_fields =3D virtnet_set_hashflow, - .get_rxnfc =3D virtnet_get_rxnfc, + .get_rx_ring_count =3D virtnet_get_rx_ring_count, }; =20 static void virtnet_get_queue_stats_rx(struct net_device *dev, int i, --=20 2.47.3