From nobody Fri Dec 19 14:24:50 2025 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) (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 6FCD827E056 for ; Wed, 5 Nov 2025 18:26:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762367180; cv=none; b=tudQotB8ky8zdVo26iDft0SpVBo65UF/8/WGpdpI9x1Srog685eo+RvqtTIaYBDRthfexWP/ex4Q64XMb5AACypXRYgOTFs70Ey+tzQ0cdlmdkjUXk4M08wPJoHaTAJN1/M3mTWCUfGFnRUBuwUpXPDiHuxSEV1uODL0gmPMyU0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762367180; c=relaxed/simple; bh=iDX+Xjk6YPshtFGXJ/bFso821Raymie9r/DGYwcIVUY=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=mj2imdysmKpxLAaZi8rk5q1Wd3c1E8WQCa+q/E4FfBXrXFVm6ObIOy5yRR1chTO4Gbn26T3xOs7+w4rbfzzvS/bQ4yeOUx/vPt+i+vQPV5aoGFvB1VQgXxFyPr9WVVgqrE/YPvCdvHywD+XEUBqwNrylqLpGlBeXfb1a1VgGK5g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--joshwash.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=MjC+yF3f; arc=none smtp.client-ip=209.85.214.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--joshwash.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="MjC+yF3f" Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-295595cd102so3278525ad.3 for ; Wed, 05 Nov 2025 10:26:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1762367179; x=1762971979; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=eIN6Z9i91+duDdYVW8qK20gY3PDqSGvt0BSLKjqFHuw=; b=MjC+yF3fkM0BZHffxp8dm3mJMdzY5zWOyusiEzcj1Daxxz+B9dh3iem+EZ752i5/kJ htaUI723YQb394Nwm1Jp46tmuLfOIMgTCMtaoaTiKVbz1pn1J7mpJ7rBOFleQ/kRDnLY 6i/oabbBpmZrzvobioBhyDhfgSNmI9irev9K7TwduIDHRLOOW3H1qxbpdSDjNauVgA+w MGkdsKy7sE7/sBF8QukkwqNg1ttDf0yFiw6FPp3GDajUuBm/bCIHdzBlL4X5RHqk+Sww afxerupKZf9Q4YSYNqfsv67dwjHpc//TA7JcdWKRJdYHfxcOfWvl8Ampyhe/XzyTgi4B NmKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762367179; x=1762971979; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=eIN6Z9i91+duDdYVW8qK20gY3PDqSGvt0BSLKjqFHuw=; b=khZrQAt24Evz1D5EuZXBFyMxR1z5KlPJIKxLJlMPI31FxUVch/0qI/6Wqy+3/Y/cRN 3NRv3jlLE8wnJ99Rtgy7wZ1ZafiRwaEUfWoHEgUiJISvXDDK8zBKBV/Y+8AjWApUYor0 rssG81jeTXM2kfHcfWaX7sSAViEJwequvYCNGpHxPK3+nNfJ0mgjDNJaOKkTJVWe2czl R/K1oENpICIN12j6ZwSpqDFSmhEprbV05AOtQ2HTQEibxn38ZvJMiRpyzFat6DntUEb5 Q6f7Th757WCTokV/CluEtA0nfKsIxK7yFop+PVyI8Gji6dRvheZ6CIAmQ/8Yxp60/Qcz +NdQ== X-Forwarded-Encrypted: i=1; AJvYcCX56Uzaak7cgXxaJ0NGRL1GgHci0v1SNMxUbJccycFQ4p8yQiy+VJPRCPYEEkWNdqDuw1GECExhbAl4YqA=@vger.kernel.org X-Gm-Message-State: AOJu0YzBYN41dRGfgcorXyS601pKghPnTN/qiBJYDRZ2EE+UoivIkkfK Eep2y1nYPg1KtoeStVKVLXFI1vWM1cvuxfaDhKYFjGxaqfNFDdyKM1F8drWOTlRiPQWCQehp6vm XexZg97QscZAOgw== X-Google-Smtp-Source: AGHT+IF8S7FRqRyPimC+uMd0ihT2KBqA3Lw6kdlscKBI6BMgzGjItjrQbv0tFluSpf84LLLZuCAjVCC9OWj5oQ== X-Received: from plcs13.prod.google.com ([2002:a17:903:30cd:b0:295:1e7a:83a7]) (user=joshwash job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:f64b:b0:295:7bbd:52fa with SMTP id d9443c01a7336-2962add9508mr64726255ad.56.1762367178513; Wed, 05 Nov 2025 10:26:18 -0800 (PST) Date: Wed, 5 Nov 2025 10:26:00 -0800 In-Reply-To: <20251105182603.1223474-1-joshwash@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251105182603.1223474-1-joshwash@google.com> X-Mailer: git-send-email 2.51.2.1041.gc1ab5b90ca-goog Message-ID: <20251105182603.1223474-2-joshwash@google.com> Subject: [PATCH net-next v2 1/4] gve: Decouple header split from RX buffer length From: joshwash@google.com To: netdev@vger.kernel.org Cc: Joshua Washington , Harshitha Ramamurthy , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Willem de Bruijn , Praveen Kaligineedi , Ziwei Xiao , John Fraker , "Dr. David Alan Gilbert" , Ankit Garg , linux-kernel@vger.kernel.org, Jordan Rhee Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ankit Garg Previously, enabling header split via `gve_set_hsplit_config` also implicitly changed the RX buffer length to 4K (if supported by the device). This coupled two settings that should be orthogonal; this patch removes that side effect. After this change, `gve_set_hsplit_config` only toggles the header split configuration. The RX buffer length is no longer affected and must be configured independently. Signed-off-by: Ankit Garg Reviewed-by: Harshitha Ramamurthy Reviewed-by: Jordan Rhee Reviewed-by: Willem de Bruijn Signed-off-by: Joshua Washington --- drivers/net/ethernet/google/gve/gve.h | 3 --- drivers/net/ethernet/google/gve/gve_ethtool.c | 2 -- drivers/net/ethernet/google/gve/gve_main.c | 10 ---------- 3 files changed, 15 deletions(-) diff --git a/drivers/net/ethernet/google/gve/gve.h b/drivers/net/ethernet/g= oogle/gve/gve.h index ac325ab..872dae6 100644 --- a/drivers/net/ethernet/google/gve/gve.h +++ b/drivers/net/ethernet/google/gve/gve.h @@ -59,8 +59,6 @@ =20 #define GVE_DEFAULT_RX_BUFFER_SIZE 2048 =20 -#define GVE_MAX_RX_BUFFER_SIZE 4096 - #define GVE_XDP_RX_BUFFER_SIZE_DQO 4096 =20 #define GVE_DEFAULT_RX_BUFFER_OFFSET 2048 @@ -1247,7 +1245,6 @@ void gve_rx_free_rings_gqi(struct gve_priv *priv, struct gve_rx_alloc_rings_cfg *cfg); void gve_rx_start_ring_gqi(struct gve_priv *priv, int idx); void gve_rx_stop_ring_gqi(struct gve_priv *priv, int idx); -u16 gve_get_pkt_buf_size(const struct gve_priv *priv, bool enable_hplit); bool gve_header_split_supported(const struct gve_priv *priv); int gve_set_hsplit_config(struct gve_priv *priv, u8 tcp_data_split, struct gve_rx_alloc_rings_cfg *rx_alloc_cfg); diff --git a/drivers/net/ethernet/google/gve/gve_ethtool.c b/drivers/net/et= hernet/google/gve/gve_ethtool.c index b030a84..db6fc85 100644 --- a/drivers/net/ethernet/google/gve/gve_ethtool.c +++ b/drivers/net/ethernet/google/gve/gve_ethtool.c @@ -606,8 +606,6 @@ static int gve_set_ringparam(struct net_device *netdev, } else { /* Set ring params for the next up */ priv->header_split_enabled =3D rx_alloc_cfg.enable_header_split; - priv->rx_cfg.packet_buffer_size =3D - rx_alloc_cfg.packet_buffer_size; priv->tx_desc_cnt =3D tx_alloc_cfg.ring_size; priv->rx_desc_cnt =3D rx_alloc_cfg.ring_size; } diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ether= net/google/gve/gve_main.c index 347391a..453e40a 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -2041,14 +2041,6 @@ static void gve_tx_timeout(struct net_device *dev, u= nsigned int txqueue) priv->tx_timeo_cnt++; } =20 -u16 gve_get_pkt_buf_size(const struct gve_priv *priv, bool enable_hsplit) -{ - if (enable_hsplit && priv->max_rx_buffer_size >=3D GVE_MAX_RX_BUFFER_SIZE) - return GVE_MAX_RX_BUFFER_SIZE; - else - return GVE_DEFAULT_RX_BUFFER_SIZE; -} - /* Header split is only supported on DQ RDA queue format. If XDP is enable= d, * header split is not allowed. */ @@ -2080,8 +2072,6 @@ int gve_set_hsplit_config(struct gve_priv *priv, u8 t= cp_data_split, return 0; =20 rx_alloc_cfg->enable_header_split =3D enable_hdr_split; - rx_alloc_cfg->packet_buffer_size =3D - gve_get_pkt_buf_size(priv, enable_hdr_split); =20 return 0; } --=20 2.51.2.997.g839fc31de9-goog From nobody Fri Dec 19 14:24:50 2025 Received: from mail-pf1-f201.google.com (mail-pf1-f201.google.com [209.85.210.201]) (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 235192857F1 for ; Wed, 5 Nov 2025 18:26:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762367183; cv=none; b=doVAbfA4WaNW4/nAHO1f0Y2PoLWwRA8W/9q6UyzHdXXXTKh9XlMtslMIeSMuRI8RxtXrlDnlhpIa3UCg0fEkyO/sBPKlIa++5nte9zsQY00D7Zxk6xUG0B+9K6/FM0Aid8BwtaF+eynyDMEbfhxm+BiINBJWiCPMsZu41YHgtc8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762367183; c=relaxed/simple; bh=rJGRHWAw0edvIBlzvTnGcUWjgsNkrWVvco4sn4GFUuM=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=giIMzWIYuUqT/clA75dbHym8EAjaNFPkgHCS6awt/D586oPn5AwHGHKy1F0NUIRTc3oYUVD3fpjex0GsMjyA+r4hbUKptLbew8RS9BUbVmiGGyZDuXfy+MoHV95x8tAIfZVLdHtJwk2dYX5hqNHo5vMWbA8m879majnWFzxBh2E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--joshwash.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=MysywdKE; arc=none smtp.client-ip=209.85.210.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--joshwash.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="MysywdKE" Received: by mail-pf1-f201.google.com with SMTP id d2e1a72fcca58-7ae70693579so152065b3a.3 for ; Wed, 05 Nov 2025 10:26:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1762367180; x=1762971980; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=PHiMaZBRjUMMIyxTQ9TaBFQC4zXrsr5pfK2PGieJdE0=; b=MysywdKE+zD+D5ah9nRHBWwbFrSgodhyeX3q23Z8RiGT/T56LR61za7Xk8Ylr8hQEC BsvRaqmUXroA0wBzG4Mg8crCu8AYWfa9iT3c4bHKJ4IsTy/dczL5CfZp2FM9qjAqo+i7 u9KpRzAZ6nB9R1rpKDHHxidYNL7qNMs9yFfiyu3u2Jkl/Zb0MXfsAgHeAgavKXE+XgY8 UdlTx1q/vuggHin62bQXGMRYJZPzTZuNzC3kNHiClTIOEAhV8jCCv5lklch8XP1kQMJ0 V1Jc+sWPVyuXhQ1TdTU7edDNbOs9fR0mN0273J/nLed3pqnKYWacI9x3bS+O0b0RpK2p bcwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762367180; x=1762971980; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PHiMaZBRjUMMIyxTQ9TaBFQC4zXrsr5pfK2PGieJdE0=; b=teqG9PfmlPsXsnaF8jTsgfiHrBrl3Y1en4giigN/udbI0oIjY2KhvhHpVKjIURKarv RUXLHQXTcZlJCU6qJFsKVRqOW2nW1BCjRSg7PbeXMBQt4GNr6f2pe7fpRZmh+wGjtZCO nuT4R05SRV4WfCfUZI/j1fdjABS239nOhGEPEiWEDq98+1/BO+izqSo75yHisN+XAbeS 27wrcUAlL/+ET4JKCEuMBkC5bvsSWI3SP2AVyslezib9FyXWWgmVohP0saZd2ceAZlIQ oghwCwqZi9oCGb/ybu1wA4KJpt20urhaKlLQ1h2d0X/BGDsv6giayyrBuu6cfKkiEgYv 3vtw== X-Forwarded-Encrypted: i=1; AJvYcCUZkFv/nLc7GOaOsv6eiKmZEi38UGHew6kPZqNZ0HlKV6BDg0r/bNxUwiJw3Pi3TfI2Egk7gbW0NkhpO+Q=@vger.kernel.org X-Gm-Message-State: AOJu0YxpVHgr8ON6pEt+d8PtUT4GoHy3Qmep4H9OU6MG4FFpsxT8mOWq xEtvl9LlONm0/8EKCbr7TkYNLykfJTo8e3W9Je6s10oa2GC7Pwn8yprHHtLl/L3O2HR83S7UyhS BO2LGQU3pzgXlHw== X-Google-Smtp-Source: AGHT+IGNYglFYgW+bVTIh5WVRFflW9Jw5wpKJDLjpiHSo42rh4qRDkZuA4zTmY17JUG9ucBfb4FoyAQma9UFWQ== X-Received: from pfef14.prod.google.com ([2002:a05:6a00:228e:b0:7ae:55f2:2f4a]) (user=joshwash job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:2d10:b0:781:16de:cc1a with SMTP id d2e1a72fcca58-7ae1fc7d8b0mr5726508b3a.32.1762367180312; Wed, 05 Nov 2025 10:26:20 -0800 (PST) Date: Wed, 5 Nov 2025 10:26:01 -0800 In-Reply-To: <20251105182603.1223474-1-joshwash@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251105182603.1223474-1-joshwash@google.com> X-Mailer: git-send-email 2.51.2.1041.gc1ab5b90ca-goog Message-ID: <20251105182603.1223474-3-joshwash@google.com> Subject: [PATCH net-next v2 2/4] gve: Use extack to log xdp config verification errors From: joshwash@google.com To: netdev@vger.kernel.org Cc: Joshua Washington , Harshitha Ramamurthy , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Willem de Bruijn , Praveen Kaligineedi , Ziwei Xiao , John Fraker , "Dr. David Alan Gilbert" , Ankit Garg , linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ankit Garg Plumb extack as it allows us to send more detailed error messages back and append 'gve' suffix to method name per convention. NL_SET_ERR_MSG_FMT_MOD doesn't support format string longer than 80 chars so keeping netdev warning with actual queue count details. Signed-off-by: Ankit Garg Reviewed-by: Harshitha Ramamurthy Reviewed-by: Willem de Bruijn Signed-off-by: Joshua Washington --- Changes in v2: * Add this patch to the series for RX buffer length management (Jakub Kicinski) --- drivers/net/ethernet/google/gve/gve_main.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ether= net/google/gve/gve_main.c index 453e40a..c1d9916 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -1707,18 +1707,21 @@ static int gve_xsk_wakeup(struct net_device *dev, u= 32 queue_id, u32 flags) return 0; } =20 -static int verify_xdp_configuration(struct net_device *dev) +static int gve_verify_xdp_configuration(struct net_device *dev, + struct netlink_ext_ack *extack) { struct gve_priv *priv =3D netdev_priv(dev); u16 max_xdp_mtu; =20 if (dev->features & NETIF_F_LRO) { - netdev_warn(dev, "XDP is not supported when LRO is on.\n"); + NL_SET_ERR_MSG_MOD(extack, + "XDP is not supported when LRO is on.\n"); return -EOPNOTSUPP; } =20 if (priv->header_split_enabled) { - netdev_warn(dev, "XDP is not supported when header-data split is enabled= .\n"); + NL_SET_ERR_MSG_MOD(extack, + "XDP is not supported when header-data split is enabled.\n"); return -EOPNOTSUPP; } =20 @@ -1727,17 +1730,20 @@ static int verify_xdp_configuration(struct net_devi= ce *dev) max_xdp_mtu -=3D GVE_RX_PAD; =20 if (dev->mtu > max_xdp_mtu) { - netdev_warn(dev, "XDP is not supported for mtu %d.\n", - dev->mtu); + NL_SET_ERR_MSG_FMT_MOD(extack, + "XDP is not supported for mtu %d.\n", + dev->mtu); return -EOPNOTSUPP; } =20 if (priv->rx_cfg.num_queues !=3D priv->tx_cfg.num_queues || (2 * priv->tx_cfg.num_queues > priv->tx_cfg.max_queues)) { - netdev_warn(dev, "XDP load failed: The number of configured RX queues %d= should be equal to the number of configured TX queues %d and the number of= configured RX/TX queues should be less than or equal to half the maximum n= umber of RX/TX queues %d", - priv->rx_cfg.num_queues, - priv->tx_cfg.num_queues, + netdev_warn(dev, + "XDP load failed: The number of configured RX queues %d should be e= qual to the number of configured TX queues %d and the number of configured = RX/TX queues should be less than or equal to half the maximum number of RX/= TX queues %d", + priv->rx_cfg.num_queues, priv->tx_cfg.num_queues, priv->tx_cfg.max_queues); + NL_SET_ERR_MSG_MOD(extack, + "XDP load failed: The number of configured RX queues should be equa= l to the number of configured TX queues and the number of configured RX/TX = queues should be less than or equal to half the maximum number of RX/TX que= ues"); return -EINVAL; } return 0; @@ -1748,7 +1754,7 @@ static int gve_xdp(struct net_device *dev, struct net= dev_bpf *xdp) struct gve_priv *priv =3D netdev_priv(dev); int err; =20 - err =3D verify_xdp_configuration(dev); + err =3D gve_verify_xdp_configuration(dev, xdp->extack); if (err) return err; switch (xdp->command) { --=20 2.51.2.997.g839fc31de9-goog From nobody Fri Dec 19 14:24:50 2025 Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) (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 AB278299A87 for ; Wed, 5 Nov 2025 18:26:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762367186; cv=none; b=SfMmiDKAqWp+PiqhiImBaOm62DyqKXRoq8MMTJsDFs+Yr2lHqyKaDj6XjINZCIwjtr+be0IczGew+ozkO3qz311xFWowVN0jxm3HlQyFLKtrK/7Swd2q8UXcGlRJ5uCihuA/ZYYEMJuxuRf28KuWRaf18lFX/461Hp6JQh4o8e0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762367186; c=relaxed/simple; bh=+AIABo2PkfWKFZR1x0fGZjz0ONmonDPl4r98ftHTv3M=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=nSAoy0Ny7U9VM0wMQQIrsu4xBcBgd4/+ZBrOhHe6kzleuRnnLAyr9utghPqhyTuyzXeMdoaHdi/Ncepca+h5LZgAuNOI7wqRHtAL88PvfeTGzwNchU/taYC4WZLGCqwGPP+tUpbIPsMoVD6w0R2/0A6VBLEKoYMEj4ovMMmexOc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--joshwash.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=p2J3bPEJ; arc=none smtp.client-ip=209.85.216.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--joshwash.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="p2J3bPEJ" Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-3407734d98bso186541a91.3 for ; Wed, 05 Nov 2025 10:26:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1762367184; x=1762971984; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=Mo7vE6RiW6/08n7eSV8+kI339/dOO29zkRCIpRjmsrU=; b=p2J3bPEJWLZ6NUOy2beKDQ13VJm5LQ2kYjeX1d+vNXV57bHx5aPDdiwDdxxWHOTcef ncUnDrXWCYSRsktFZvnosZW2OK6x/G7/upq79S6IzmWbnApsBA+Wvuq7KnXTTk0q47ON 4Vvnxf1Lf9++0TAs4YaIJj4snqFG6wXTSlIYljMzgGC4BM/cOIYuiUzBq/0yyZ+QQ3yo eBhb9JT8URzMUcMN6Chy5yqpVUBwlEFUtMdFnoS7DDfrpuLSl5eGZ064anqNNG+uFT+h Xi03U8FjoD5/x/bIPMqNtAZXcBYcvWnfMxciUcDYVxrCOoBEWwcapB0T8qZR2ynZTST2 Qp2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762367184; x=1762971984; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Mo7vE6RiW6/08n7eSV8+kI339/dOO29zkRCIpRjmsrU=; b=AX41P/U6eh8Ey6F1vh6R3lYQsT2DPUZg3JyBZ56KcyEDjojjkS5QW5SpdhrrRu/KSP ha/wZfYt8xQ+SrY+C2LsUbTwbzMsSMBdsTM3rAjxEZtNWob4EKYUTWWL6vf5eJOnv/k1 nhlwwngpPdH/sB0tzCs+K1sKJT4qd4wsvXuhXnZ9Gw9opllmTR1lgfXsP1kd3bAQ+8KI k9d/YvpH5UBy7jTiTxgxPavOggvVJHpRaLwAnfW7VXBMbYW8VxqdIGvqlsCeZc8zgFvR cbVUDRzN5JfkXsLw7rlAo3xwCD/V8i888QM8WAM+edSs2FR2q8QJvs6p5wkT2P3VZVou 0xJA== X-Forwarded-Encrypted: i=1; AJvYcCVj5rKChSknyt97Oou38jbReJIMXYWZBE56F/36kxIzhtq5EP4EJd2aGazjXH422pwbnmhAW/+wYMQfzxA=@vger.kernel.org X-Gm-Message-State: AOJu0Yz5eVcm3400j5uStLDiSr0ZYx5ucSG9y9QWYBHcwQRYjL6KMZVL +exZVDTuAGLJw/UeJ/qmMkksBCzhvboMoB+L6M+4+XsnmEBPrdtfgeHECAAG5BzVRHAMZjwsET1 hBuFnBeog7OD/Sw== X-Google-Smtp-Source: AGHT+IGEIz0cx3bEItvXyAT1JAvBIFiUAM6WpNdyYKcNZr5SJsgq1W3uSlW55d+rZlVRcw7kx+odRogiec5A4w== X-Received: from pjdr5.prod.google.com ([2002:a17:90a:2e85:b0:340:bc7b:2b2f]) (user=joshwash job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:4acf:b0:32e:3552:8c79 with SMTP id 98e67ed59e1d1-341a6defc72mr4777964a91.29.1762367181865; Wed, 05 Nov 2025 10:26:21 -0800 (PST) Date: Wed, 5 Nov 2025 10:26:02 -0800 In-Reply-To: <20251105182603.1223474-1-joshwash@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251105182603.1223474-1-joshwash@google.com> X-Mailer: git-send-email 2.51.2.1041.gc1ab5b90ca-goog Message-ID: <20251105182603.1223474-4-joshwash@google.com> Subject: [PATCH net-next v2 3/4] gve: Allow ethtool to configure rx_buf_len From: joshwash@google.com To: netdev@vger.kernel.org Cc: Joshua Washington , Harshitha Ramamurthy , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Willem de Bruijn , Praveen Kaligineedi , Ziwei Xiao , John Fraker , "Dr. David Alan Gilbert" , Ankit Garg , linux-kernel@vger.kernel.org, Jordan Rhee Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ankit Garg Add support for getting and setting the RX buffer length via the ethtool ring parameters (`ethtool -g`/`-G`). The driver restricts the allowed buffer length to 2048 (SZ_2K) by default and allows 4096 (SZ_4K) based on device options. As XDP is only supported when the `rx_buf_len` is 2048, the driver now enforces this in two places: 1. In `gve_xdp_set`, rejecting XDP programs if the current buffer length is not 2048. 2. In `gve_set_rx_buf_len_config`, rejecting buffer length changes if XDP is loaded and the new length is not 2048. Signed-off-by: Ankit Garg Reviewed-by: Harshitha Ramamurthy Reviewed-by: Jordan Rhee Reviewed-by: Willem de Bruijn Signed-off-by: Joshua Washington --- Changes in v2: * Refactored RX buffer length validation to clarify that it handles scenario when device doesn't advertise 4K support (Jakub Kicinski) --- drivers/net/ethernet/google/gve/gve.h | 9 +++++++++ drivers/net/ethernet/google/gve/gve_ethtool.c | 13 ++++++++++++- drivers/net/ethernet/google/gve/gve_main.c | 39 +++++++++++++++++++++++= ++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/google/gve/gve.h b/drivers/net/ethernet/g= oogle/gve/gve.h index 872dae6..bebd1ac 100644 --- a/drivers/net/ethernet/google/gve/gve.h +++ b/drivers/net/ethernet/google/gve/gve.h @@ -1165,6 +1165,12 @@ static inline bool gve_is_gqi(struct gve_priv *priv) priv->queue_format =3D=3D GVE_GQI_QPL_FORMAT; } +static inline bool gve_is_dqo(struct gve_priv *priv) +{ + return priv->queue_format =3D=3D GVE_DQO_RDA_FORMAT || + priv->queue_format =3D=3D GVE_DQO_QPL_FORMAT; +} + static inline u32 gve_num_tx_queues(struct gve_priv *priv) { return priv->tx_cfg.num_queues + priv->tx_cfg.num_xdp_queues; @@ -1246,6 +1252,9 @@ void gve_rx_free_rings_gqi(struct gve_priv *priv, void gve_rx_start_ring_gqi(struct gve_priv *priv, int idx); void gve_rx_stop_ring_gqi(struct gve_priv *priv, int idx); bool gve_header_split_supported(const struct gve_priv *priv); +int gve_set_rx_buf_len_config(struct gve_priv *priv, u32 rx_buf_len, + struct netlink_ext_ack *extack, + struct gve_rx_alloc_rings_cfg *rx_alloc_cfg); int gve_set_hsplit_config(struct gve_priv *priv, u8 tcp_data_split, struct gve_rx_alloc_rings_cfg *rx_alloc_cfg); /* rx buffer handling */ diff --git a/drivers/net/ethernet/google/gve/gve_ethtool.c b/drivers/net/et= hernet/google/gve/gve_ethtool.c index db6fc85..52500ae 100644 --- a/drivers/net/ethernet/google/gve/gve_ethtool.c +++ b/drivers/net/ethernet/google/gve/gve_ethtool.c @@ -529,6 +529,8 @@ static void gve_get_ringparam(struct net_device *netdev, cmd->rx_pending =3D priv->rx_desc_cnt; cmd->tx_pending =3D priv->tx_desc_cnt; + kernel_cmd->rx_buf_len =3D priv->rx_cfg.packet_buffer_size; + if (!gve_header_split_supported(priv)) kernel_cmd->tcp_data_split =3D ETHTOOL_TCP_DATA_SPLIT_UNKNOWN; else if (priv->header_split_enabled) @@ -589,6 +591,12 @@ static int gve_set_ringparam(struct net_device *netdev, int err; gve_get_curr_alloc_cfgs(priv, &tx_alloc_cfg, &rx_alloc_cfg); + + err =3D gve_set_rx_buf_len_config(priv, kernel_cmd->rx_buf_len, extack, + &rx_alloc_cfg); + if (err) + return err; + err =3D gve_set_hsplit_config(priv, kernel_cmd->tcp_data_split, &rx_alloc_cfg); if (err) @@ -605,6 +613,8 @@ static int gve_set_ringparam(struct net_device *netdev, return err; } else { /* Set ring params for the next up */ + priv->rx_cfg.packet_buffer_size =3D + rx_alloc_cfg.packet_buffer_size; priv->header_split_enabled =3D rx_alloc_cfg.enable_header_split; priv->tx_desc_cnt =3D tx_alloc_cfg.ring_size; priv->rx_desc_cnt =3D rx_alloc_cfg.ring_size; @@ -944,7 +954,8 @@ static int gve_get_ts_info(struct net_device *netdev, const struct ethtool_ops gve_ethtool_ops =3D { .supported_coalesce_params =3D ETHTOOL_COALESCE_USECS, - .supported_ring_params =3D ETHTOOL_RING_USE_TCP_DATA_SPLIT, + .supported_ring_params =3D ETHTOOL_RING_USE_TCP_DATA_SPLIT | + ETHTOOL_RING_USE_RX_BUF_LEN, .get_drvinfo =3D gve_get_drvinfo, .get_strings =3D gve_get_strings, .get_sset_count =3D gve_get_sset_count, diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ether= net/google/gve/gve_main.c index c1d9916..2a24b3a 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -1725,6 +1725,13 @@ static int gve_verify_xdp_configuration(struct net_d= evice *dev, return -EOPNOTSUPP; } + if (priv->rx_cfg.packet_buffer_size !=3D SZ_2K) { + NL_SET_ERR_MSG_FMT_MOD(extack, + "XDP is not supported for Rx buf len %d, only %d supported.\n", + priv->rx_cfg.packet_buffer_size, SZ_2K); + return -EOPNOTSUPP; + } + max_xdp_mtu =3D priv->rx_cfg.packet_buffer_size - sizeof(struct ethhdr); if (priv->queue_format =3D=3D GVE_GQI_QPL_FORMAT) max_xdp_mtu -=3D GVE_RX_PAD; @@ -2056,6 +2063,38 @@ bool gve_header_split_supported(const struct gve_pri= v *priv) priv->queue_format =3D=3D GVE_DQO_RDA_FORMAT && !priv->xdp_prog; } +int gve_set_rx_buf_len_config(struct gve_priv *priv, u32 rx_buf_len, + struct netlink_ext_ack *extack, + struct gve_rx_alloc_rings_cfg *rx_alloc_cfg) +{ + u32 old_rx_buf_len =3D rx_alloc_cfg->packet_buffer_size; + + if (rx_buf_len =3D=3D old_rx_buf_len) + return 0; + + /* device options may not always contain support for 4K buffers */ + if (!gve_is_dqo(priv) || priv->max_rx_buffer_size < SZ_4K) { + NL_SET_ERR_MSG_MOD(extack, + "Modifying Rx buf len is not supported"); + return -EOPNOTSUPP; + } + + if (priv->xdp_prog && rx_buf_len !=3D SZ_2K) { + NL_SET_ERR_MSG_MOD(extack, + "Rx buf len can only be 2048 when XDP is on"); + return -EINVAL; + } + + if (rx_buf_len !=3D SZ_2K && rx_buf_len !=3D SZ_4K) { + NL_SET_ERR_MSG_MOD(extack, + "Rx buf len can only be 2048 or 4096"); + return -EINVAL; + } + rx_alloc_cfg->packet_buffer_size =3D rx_buf_len; + + return 0; +} + int gve_set_hsplit_config(struct gve_priv *priv, u8 tcp_data_split, struct gve_rx_alloc_rings_cfg *rx_alloc_cfg) { -- 2.51.2.997.g839fc31de9-goog From nobody Fri Dec 19 14:24:50 2025 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) (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 5A5CA2989BC for ; Wed, 5 Nov 2025 18:26:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762367185; cv=none; b=Ud8539oWyNypi4CH7wInlBs7j7LT4hYRQ3lJN36VqEWvMk5hQn5HEwtsM5IjcqEcePgasw+siLxFifbDt+0J2Oa8gkLXEe4FhLISjmy5IdNlq6sQiXKtNoMO4V6TQbfzu+2Ckoz39zh8v9E0/APEXJQu4DKjcoAJGUZfu51iuI8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762367185; c=relaxed/simple; bh=1Y+YpubDp1qb7oc7hg3w1PWoz9inIa15b2wdhzuZk9M=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=WjwqZTRWOsfLU3ixnXtasmenmSiGardbnG3paH2jPbl0vxskO43UFAdoEUJaNmDJuoqyi266w/VYYhZ554/jzJvA8uxhHFLkhyk/z6XaLEfVFGFL/y1Z5QEsjpIVzqi0q4c77NwumPDB+9/t4yquepBST5ppIWCmLv/lwxLSQxA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--joshwash.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=dkkHmQ1n; arc=none smtp.client-ip=209.85.214.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--joshwash.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="dkkHmQ1n" Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-295fbc7d4abso1384405ad.1 for ; Wed, 05 Nov 2025 10:26:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1762367183; x=1762971983; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=V3U2BLp1AgEXNIvYOhrj08jJ81pfESpJT+bWqtR6/KU=; b=dkkHmQ1nD5ZsNxlVSzNpy0wE/bOroBYIVCeM+vOSx3biPu4UDYc2EJRKLtfJrp+78+ g4uHuQAhPA9OBfjnMEYi+l5oESfLmS1NVevE57x+U7Bo+JxLMaKcL6i/Yad/QznGvIL9 nCxQdTRUj3L0aZN0DIFvFfzCK6LbsnwXBRHhqzxgKVKMdUpo/n+H6aoSxX2Pxz15kLDO LumHleiDyQHUzWHJ0yM6LnAE63pRfPWBvpDQLR3SL8djsgwdGSgx0pd3ue4c5xzvXNNj HTv+GtS7EKNZJ/h+ZX0HP61uevPBHKZ1cblsPe0EOUe7jGlwxazlB1vMPwRA4UeAg114 sukw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762367183; x=1762971983; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=V3U2BLp1AgEXNIvYOhrj08jJ81pfESpJT+bWqtR6/KU=; b=sfW1hDn9jmZSAQcqNifheYlriBoCZYFuGVBAn0a9NamOE7Kp1CSNMCAhcYVDhEpPr2 WHgqnvuh6UUeXwzy2KZZYorghTDofAbUEjFEhg3VwSXCv71W59kiineAHBGdGAa4D3Zd YhJNQQowORaV5qPuuMR/UeQ6ivskb1NA2NKySPdMPCWFLTn3ItEkoU7DK6ZqApXlRmfG xwIfPMniRL8xQyWl/HmkMCcTJbCKiyE1C0RNPrUXdm0FLeYPSrqL6B3Z90OmkFX/kg63 tbkVTscVwUuPlWgRFLkO4uz8ujq4FtJgH4FL8K5VL8VPdFAXEuVp1k7UjiPqqeaBdzov f2+g== X-Forwarded-Encrypted: i=1; AJvYcCWwQdnfTrvJYez0cbQM2qd+6t3DrJ7fn2p7WGrAbNiatc924KxE9cBmPhh+QC9k+e65eM4K+D4JRTxRd5g=@vger.kernel.org X-Gm-Message-State: AOJu0YzuQUe2AXBE9/pGNNGwpbmy1L3mOTEJ9OQFBF6Vg+2qCigZ6Y9z 0t+syfAijzKVrdEVzFc4ks7UTfT4RIKNeryz52qbGULt3PzyCgejdkTnKpNmyN6sWc7i3t4tj1P UsrZs4c/gdemc/A== X-Google-Smtp-Source: AGHT+IEdUAxa3HWekMEatlxH9Kt/FB0hCWCz5vzdSLG5I0UzRSXnc0Ih9uf0QxQgeyniEKJEai53BK+w8nYlGA== X-Received: from plgm15.prod.google.com ([2002:a17:902:f64f:b0:296:18d:ea1a]) (user=joshwash job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:da82:b0:295:8da5:c631 with SMTP id d9443c01a7336-2962ada612dmr64665275ad.42.1762367183511; Wed, 05 Nov 2025 10:26:23 -0800 (PST) Date: Wed, 5 Nov 2025 10:26:03 -0800 In-Reply-To: <20251105182603.1223474-1-joshwash@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251105182603.1223474-1-joshwash@google.com> X-Mailer: git-send-email 2.51.2.1041.gc1ab5b90ca-goog Message-ID: <20251105182603.1223474-5-joshwash@google.com> Subject: [PATCH net-next v2 4/4] gve: Default to max_rx_buffer_size for DQO if device supported From: joshwash@google.com To: netdev@vger.kernel.org Cc: Joshua Washington , Harshitha Ramamurthy , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Willem de Bruijn , Praveen Kaligineedi , Ziwei Xiao , John Fraker , "Dr. David Alan Gilbert" , Ankit Garg , linux-kernel@vger.kernel.org, Jordan Rhee Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ankit Garg Change the driver's default behavior to prefer the largest available RX buffer length supported by the device for DQO format, rather than always using the hardcoded 2K default. Previously, the driver would initialize with `GVE_DEFAULT_RX_BUFFER_SIZE` (2K), even if the device advertised support for a larger length (e.g., 4K). Performance observations: - With LRO disabled, we observed >10% improvement in RX single stream throughput when MTU >=3D2048. - With LRO enabled, we observed >10% improvement in RX single stream throughput when MTU >=3D1460. - No regressions were observed. Signed-off-by: Ankit Garg Reviewed-by: Harshitha Ramamurthy Reviewed-by: Jordan Rhee Reviewed-by: Willem de Bruijn Signed-off-by: Joshua Washington --- drivers/net/ethernet/google/gve/gve_adminq.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/ethernet/google/gve/gve_adminq.c b/drivers/net/eth= ernet/google/gve/gve_adminq.c index 4f33d09..b72cc0f 100644 --- a/drivers/net/ethernet/google/gve/gve_adminq.c +++ b/drivers/net/ethernet/google/gve/gve_adminq.c @@ -987,6 +987,10 @@ static void gve_enable_supported_features(struct gve_p= riv *priv, dev_info(&priv->pdev->dev, "BUFFER SIZES device option enabled with max_rx_buffer_size of %u, hea= der_buf_size of %u.\n", priv->max_rx_buffer_size, priv->header_buf_size); + if (gve_is_dqo(priv) && + priv->max_rx_buffer_size > GVE_DEFAULT_RX_BUFFER_SIZE) + priv->rx_cfg.packet_buffer_size =3D + priv->max_rx_buffer_size; } =20 /* Read and store ring size ranges given by device */ --=20 2.51.2.997.g839fc31de9-goog