From nobody Tue Jun 16 19:32:39 2026 Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) (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 0D5C139C000 for ; Mon, 20 Apr 2026 17:18:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776705524; cv=none; b=tYT4jCAifJTSebB/3LwSjDuqBYOJlrBuXDlQlCgb26MRdQoUR7QREARXys893H7SiyCq24itVmnNlYopjeAoEHybh4ijPmfVNNDhcmDTRoUNXtMrxc0b2Kgr/trHESVPZhWH/mPpuO7qFeU5AJupWS/FoqzqCC0XWWeCjaRlgr4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776705524; c=relaxed/simple; bh=u0UVsOozKt4Tg7IC9nw6qxk0e3pyOwuHpeuJX0VNCQM=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=JgMo2ELMj81mMdnTsgKGXkrtqboZM7ZgiLkD4s6Cl8Wl96gaQRn9p/AhD6XqBdCSaLrtWeQkqbiIqMrTBbtQxG3cFN8MJt+UncziMDsi6yIuE8MSjDwwFbGWz6D1i2NvOXlokpQwmAbDPeeiNKxW0oy/Ftd86vUVMBNIr07McPo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--hramamurthy.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=g9yY9vVr; arc=none smtp.client-ip=209.85.216.74 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--hramamurthy.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="g9yY9vVr" Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-35d9e67f6dcso6671098a91.1 for ; Mon, 20 Apr 2026 10:18:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1776705522; x=1777310322; 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=+0Cj3kzc2z6biU160rJ3owwxifAK2ueeF94SXw4tnzM=; b=g9yY9vVrV0M1Wqmco3v5QErLyz7rFhkGkkhHRjh92Wv+qrmwK11DeEDZEhS2lYcTQo FQeS/EtL1F76QEGPYRhwQ1oXq/O5s85WBK+8fbeZyaV+5NOCF0nzY8vOsR0ModEvdKEW 9ePHghw/11Skrr+Dvn65b2cA5d9fEdnA2m6eZxant40htr9N8P7Urh2TJ2QjHvYeMKs0 H+jQIV1BvuGokCRLsz+dRBQfR6ZWbm3rVJqxub3LmbggsLn7UIDvJo8Tw1ah4ztRWv+I wxnPxUNyG8lApBUOR9zheV+ROP5ASwtM4/xByuyYAZgCy5ljB2XYBJznWa3+Pr1Fla6c KLWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776705522; x=1777310322; 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=+0Cj3kzc2z6biU160rJ3owwxifAK2ueeF94SXw4tnzM=; b=jz0reNfCC+cD/LyZwxhOBC2KsmFRCOVFtccoi9OCbb2NdqLBXBACxO8Qw5AzeNovM+ p5QLhVlJLf8ZdjpptxFxe1ukFFqH9FkfVz4YegHK2RxgyEGWK9B9dclFC1N2QeYUU9eO uq3qN1TfPVLQJ4hs8Yongz/nDTagiuwYzBanK8Ybo+mcab40KFiH8fcap4ZiQRgy0eAL XFgCcaFx5vhT2BUXm45jVe1OxtJ2JipaVOh4tgqTX8sMcF0jvkKnO8RIjkJKI0SQrGtr qufhZMW6o2HTzao42MrMV1Dmaa5/3nrOi2nTLAFyZk68EHVx5yIZmSxzdm2PKvHGH6P7 Gh8A== X-Forwarded-Encrypted: i=1; AFNElJ+wJGYgRJ/ZWJWQqCJNMycxxJmOrMTJnuSaCfI9d8wHGKazIAoDfc6C+tflNAJyGr7S8OpCnfCwp9olH1w=@vger.kernel.org X-Gm-Message-State: AOJu0YxDS9xUocPmClWGbI1TJ2pZ+xEJM+tXaltD1FPH6TYUyqvMcpJ2 qmu/s2aRK0NhAPTDN93IBlc2kJiuLRmMQXSTVYAnLz87FvC1W2mgDVapFqniUqdA5Ej80/RssNi 6K/ZtiKNXSY+hJ3hu1UiujHLVwA== X-Received: from pjtl11.prod.google.com ([2002:a17:90a:c58b:b0:35d:a8d7:ccda]) (user=hramamurthy job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:4e85:b0:35f:b5df:450 with SMTP id 98e67ed59e1d1-3614048a226mr15714612a91.19.1776705522232; Mon, 20 Apr 2026 10:18:42 -0700 (PDT) Date: Mon, 20 Apr 2026 17:18:34 +0000 In-Reply-To: <20260420171837.455487-1-hramamurthy@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260420171837.455487-1-hramamurthy@google.com> X-Mailer: git-send-email 2.54.0.rc1.555.g9c883467ad-goog Message-ID: <20260420171837.455487-2-hramamurthy@google.com> Subject: [PATCH net 1/4] gve: Add NULL pointer checks for per-queue statistics From: Harshitha Ramamurthy To: netdev@vger.kernel.org Cc: joshwash@google.com, hramamurthy@google.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, willemb@google.com, maolson@google.com, nktgrg@google.com, jfraker@google.com, ziweixiao@google.com, jacob.e.keller@intel.com, pkaligineedi@google.com, shailend@google.com, jordanrhee@google.com, stable@vger.kernel.org, linux-kernel@vger.kernel.org, Debarghya Kundu , Pin-yen Lin Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Debarghya Kundu gve_get_[tx/rx]_queue_stats references the [tx/rx] null rings when the link is down. Add NULL pointer checks to guard this. This was discovered by drivers/net/stats.py selftest. Cc: stable@vger.kernel.org Fixes: 2e5e0932dff5 ("gve: add support for basic queue stats") Signed-off-by: Debarghya Kundu Signed-off-by: Pin-yen Lin Signed-off-by: Harshitha Ramamurthy --- drivers/net/ethernet/google/gve/gve_main.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ether= net/google/gve/gve_main.c index 0ee864b0afe0..675382e9756c 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -2705,9 +2705,13 @@ static void gve_get_rx_queue_stats(struct net_device= *dev, int idx, struct netdev_queue_stats_rx *rx_stats) { struct gve_priv *priv =3D netdev_priv(dev); - struct gve_rx_ring *rx =3D &priv->rx[idx]; + struct gve_rx_ring *rx; unsigned int start; =20 + if (!priv->rx) + return; + rx =3D &priv->rx[idx]; + do { start =3D u64_stats_fetch_begin(&rx->statss); rx_stats->packets =3D rx->rpackets; @@ -2721,9 +2725,13 @@ static void gve_get_tx_queue_stats(struct net_device= *dev, int idx, struct netdev_queue_stats_tx *tx_stats) { struct gve_priv *priv =3D netdev_priv(dev); - struct gve_tx_ring *tx =3D &priv->tx[idx]; + struct gve_tx_ring *tx; unsigned int start; =20 + if (!priv->tx) + return; + tx =3D &priv->tx[idx]; + do { start =3D u64_stats_fetch_begin(&tx->statss); tx_stats->packets =3D tx->pkt_done; --=20 2.54.0.rc0.605.g598a273b03-goog From nobody Tue Jun 16 19:32:39 2026 Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) (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 9BF9B39EF39 for ; Mon, 20 Apr 2026 17:18:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776705526; cv=none; b=M982vgm0yyJKvqCC7TmyTZ5q7BqAoXve8KmiqSgqBzhVaQhRRGTSfsJds/G27RpRLJP1OkxcYggykE3FUv7PxLlqcbq1ssHfBjQilwIiwjRVfmh3PbmfMrMiudnwOnti46nphZGwFHWhyvtmL2HHr73Ad0xHPHoPnwFGeFAmaug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776705526; c=relaxed/simple; bh=mfLC8LTZIuyG6ptc24aCGPopepV3WDejBpAV0kIlZRA=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=OntpuKQ8giNIItKxMiiDIeneRcqru3Nt6qOPrWqGdhWBxJaIuuFwbE8OYblZBPqQQjmqret7SQ+lz4GC+umkzOOPvLRo9LQNTraZaZg3TsWnwOdH4JFfBdLec+GZdyhlzes7ATOY8tA47DJBJsQYF83WvssY3B98ZL1sBhO6jqw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--hramamurthy.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=BTiSw9by; arc=none smtp.client-ip=209.85.216.74 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--hramamurthy.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="BTiSw9by" Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-35d9e67f6dcso6671190a91.1 for ; Mon, 20 Apr 2026 10:18:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1776705524; x=1777310324; 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=tLuGN9kj4clZ/u36KICID9IjU9wR4CZ3+lgYAeaav/4=; b=BTiSw9by33WiI5fqw6Uwc3cxEzhm4xNDya3CFASYBWg87tj56fmixTvCh67kM0Y4Lf kPUt/uxxnmj2yE6oLaPXWQO9xVvOrYX5Gabq3ywOcktzVNzN/VsHIMgMQ6hUK/q9Et0x LHe2BZQLNKPeOPBIAbzqsw2ZYP3ihoP4PDkGdxH1R5f06UgnFouL06d63DRvgsAh8rr+ UoHxuxdiO6rO3cgWf+2KvbX8agSq15OyvtOrl4ih0+w/kI8l8BFnPJOUSud/yT5FMWaY QbqWZOW0Ej/rhVnecjKBsnSV/40cE3xYsceJ3otIfYyi6EzZ52tgjLvlL5eZg1NPmRiF PCBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776705524; x=1777310324; 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=tLuGN9kj4clZ/u36KICID9IjU9wR4CZ3+lgYAeaav/4=; b=hd8HwHWvw+/OmBa546nJYyM4QqCqZArW11076Hgpe52I2BRM9Ymo3i7XcUCaJ/ae48 7ii81A8s3XtXvt/tb5f/lF7CqPt69TfyulsjyOETDKR1I6QKVBEkm/GzAIbmhnrDrP3f qY0qpIIyCoaResj7784EUrUtaY6UVjox2qGmgfJT4KTQuKjofchhzfmaXg6IO6HKwnhe vBaK7RebdTb30rf1Bg7tGAdk1aTmNtjxp1TXb9CNSquEEFDXSdCzzn+6pMj6lhZQNeCz znBVAhrhs27T+5YNpVpDV/HByGWoT2ijpKL1lVwDOOQ0bC42qyoJ6xsABCZULdxBTkGS M4dA== X-Forwarded-Encrypted: i=1; AFNElJ/ekyRQ/1CrII44Sg6HNiICE578K/+41Spyrj+Yeif0GLFbAwtIqd3tEM3D3D0G++hCB4n0INkTkhG2oFs=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+JFo4ttfNE89WVDbhuosDEWPuk98Yr6euyiHQzuYe1aYtApvj 5AyfskX2+tRN6xLfRB/xFcxlHqRu+F0jDjPpLjBYHtGMyYk+bMYC17tz00F5D0VgFmz1l5GrlPC HyB+ZHVOkrsD2vbYOZgckrbicHA== X-Received: from pjl8.prod.google.com ([2002:a17:90b:2f88:b0:35d:d5e0:fc1d]) (user=hramamurthy job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:4e85:b0:35f:b5df:450 with SMTP id 98e67ed59e1d1-3614048a226mr15714705a91.19.1776705523871; Mon, 20 Apr 2026 10:18:43 -0700 (PDT) Date: Mon, 20 Apr 2026 17:18:35 +0000 In-Reply-To: <20260420171837.455487-1-hramamurthy@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260420171837.455487-1-hramamurthy@google.com> X-Mailer: git-send-email 2.54.0.rc1.555.g9c883467ad-goog Message-ID: <20260420171837.455487-3-hramamurthy@google.com> Subject: [PATCH net 2/4] gve: Fix backward stats when interface goes down or configuration is adjusted From: Harshitha Ramamurthy To: netdev@vger.kernel.org Cc: joshwash@google.com, hramamurthy@google.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, willemb@google.com, maolson@google.com, nktgrg@google.com, jfraker@google.com, ziweixiao@google.com, jacob.e.keller@intel.com, pkaligineedi@google.com, shailend@google.com, jordanrhee@google.com, stable@vger.kernel.org, linux-kernel@vger.kernel.org, Debarghya Kundu , Pin-yen Lin Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Debarghya Kundu gve_get_base_stats() sets all the stats to 0, so the stats go backwards when interface goes down or configuration is adjusted. Fix this by persisting baseline stats across interface down. This was discovered by drivers/net/stats.py selftest. Cc: stable@vger.kernel.org Fixes: 2e5e0932dff5 ("gve: add support for basic queue stats") Signed-off-by: Debarghya Kundu Signed-off-by: Pin-yen Lin Signed-off-by: Harshitha Ramamurthy --- drivers/net/ethernet/google/gve/gve.h | 6 ++ drivers/net/ethernet/google/gve/gve_main.c | 64 +++++++++++++++++++--- 2 files changed, 63 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/google/gve/gve.h b/drivers/net/ethernet/g= oogle/gve/gve.h index cbdf3a842cfe..ff7797043908 100644 --- a/drivers/net/ethernet/google/gve/gve.h +++ b/drivers/net/ethernet/google/gve/gve.h @@ -794,6 +794,10 @@ struct gve_ptp { struct gve_priv *priv; }; =20 +struct gve_ring_err_stats { + u64 rx_alloc_fails; +}; + struct gve_priv { struct net_device *dev; struct gve_tx_ring *tx; /* array of tx_cfg.num_queues */ @@ -882,6 +886,8 @@ struct gve_priv { unsigned long service_task_flags; unsigned long state_flags; =20 + struct gve_ring_err_stats base_ring_err_stats; + struct rtnl_link_stats64 base_net_stats; struct gve_stats_report *stats_report; u64 stats_report_len; dma_addr_t stats_report_bus; /* dma address for the stats report */ diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ether= net/google/gve/gve_main.c index 675382e9756c..8617782791e0 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -105,9 +105,22 @@ static netdev_tx_t gve_start_xmit(struct sk_buff *skb,= struct net_device *dev) return gve_tx_dqo(skb, dev); } =20 -static void gve_get_stats(struct net_device *dev, struct rtnl_link_stats64= *s) +static void gve_add_base_stats(struct gve_priv *priv, + struct rtnl_link_stats64 *s) +{ + struct rtnl_link_stats64 *base_stats =3D &priv->base_net_stats; + + s->rx_packets +=3D base_stats->rx_packets; + s->rx_bytes +=3D base_stats->rx_bytes; + s->rx_dropped +=3D base_stats->rx_dropped; + s->tx_packets +=3D base_stats->tx_packets; + s->tx_bytes +=3D base_stats->tx_bytes; + s->tx_dropped +=3D base_stats->tx_dropped; +} + +static void gve_get_ring_stats(struct gve_priv *priv, + struct rtnl_link_stats64 *s) { - struct gve_priv *priv =3D netdev_priv(dev); unsigned int start; u64 packets, bytes; int num_tx_queues; @@ -142,6 +155,14 @@ static void gve_get_stats(struct net_device *dev, stru= ct rtnl_link_stats64 *s) } } =20 +static void gve_get_stats(struct net_device *dev, struct rtnl_link_stats64= *s) +{ + struct gve_priv *priv =3D netdev_priv(dev); + + gve_get_ring_stats(priv, s); + gve_add_base_stats(priv, s); +} + static int gve_alloc_flow_rule_caches(struct gve_priv *priv) { struct gve_flow_rules_cache *flow_rules_cache =3D &priv->flow_rules_cache; @@ -1493,6 +1514,23 @@ static int gve_queues_stop(struct gve_priv *priv) return gve_reset_recovery(priv, false); } =20 +static void gve_get_ring_err_stats(struct gve_priv *priv, + struct gve_ring_err_stats *err_stats) +{ + int ring; + + for (ring =3D 0; ring < priv->rx_cfg.num_queues; ring++) { + unsigned int start; + struct gve_rx_ring *rx =3D &priv->rx[ring]; + + do { + start =3D u64_stats_fetch_begin(&rx->statss); + err_stats->rx_alloc_fails +=3D + rx->rx_skb_alloc_fail + rx->rx_buf_alloc_fail; + } while (u64_stats_fetch_retry(&rx->statss, start)); + } +} + static int gve_close(struct net_device *dev) { struct gve_priv *priv =3D netdev_priv(dev); @@ -1502,6 +1540,10 @@ static int gve_close(struct net_device *dev) if (err) return err; =20 + /* Save ring queue and err stats before closing the interface */ + gve_get_ring_stats(priv, &priv->base_net_stats); + gve_get_ring_err_stats(priv, &priv->base_ring_err_stats); + gve_queues_mem_remove(priv); return 0; } @@ -2743,12 +2785,20 @@ static void gve_get_base_stats(struct net_device *d= ev, struct netdev_queue_stats_rx *rx, struct netdev_queue_stats_tx *tx) { - rx->packets =3D 0; - rx->bytes =3D 0; - rx->alloc_fail =3D 0; + const struct gve_ring_err_stats *base_err_stats; + const struct rtnl_link_stats64 *base_stats; + struct gve_priv *priv; + + priv =3D netdev_priv(dev); + base_stats =3D &priv->base_net_stats; + base_err_stats =3D &priv->base_ring_err_stats; + + rx->packets =3D base_stats->rx_packets; + rx->bytes =3D base_stats->rx_bytes; + rx->alloc_fail =3D base_err_stats->rx_alloc_fails; =20 - tx->packets =3D 0; - tx->bytes =3D 0; + tx->packets =3D base_stats->tx_packets; + tx->bytes =3D base_stats->tx_bytes; } =20 static const struct netdev_stat_ops gve_stat_ops =3D { --=20 2.54.0.rc0.605.g598a273b03-goog From nobody Tue Jun 16 19:32:39 2026 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 74F6739D6D7 for ; Mon, 20 Apr 2026 17:18:46 +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=1776705527; cv=none; b=TRv7/CbcK/gEkWtevYfq+1FlHMN8XI3eTi57A/Wvzh24E/CJPd5/fOp8WBefrs+aRnjEvJliGosgwYZArPXFuIzMVJekVO9p8fWhhMn0Vs48OeDffiIuRXYpzxukniMPojFfiNsBVXR6Kt3jquTZBX04K58y2ayw8xEHfbn2NFs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776705527; c=relaxed/simple; bh=8O3b3Qe7OMgCHoNg+DiP0hK3ss+m+yydWKT5V3D/PVg=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=kB7B6nDMWxeq6E/xLjk8ppgwsL51Rmf7Buy+ppcr+u16levoWCt1VdeuBHLAKLDmJhVfViSuYhC4gWSy7mBKWJo45FkFjgMdfnyao6kZpBr6lRagk31U3oYvugx7OCmAz47cfZfxGC23O+zviw2Zj87xZwwvVyjRcj9XkEuS70Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--hramamurthy.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=s+/d1ek0; 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--hramamurthy.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="s+/d1ek0" Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-358f058973fso3859320a91.1 for ; Mon, 20 Apr 2026 10:18:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1776705526; x=1777310326; 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=W2Wff/1M87WllLQ253qBp/0GFiYpAWG5OoBPum9csgI=; b=s+/d1ek0eYWKyo9FlOJl6eodJwXQY176qnv47efPy9x8rtd0/whgzHB0FRj8nATz9J CHbokX4bCrDScuJSQxO/WS6XEga6DuoVVqT1qIGdnhuytXsyhYyL5mOvxyidrgY47KvY axyG3P4d9aCdFDaRi8iHLirIssUoewM3IRQBzQITiMVP/tBWKuZrFzNzXZvQ9QvhKahO Q5UU8YLvE2c1q4CedpiaPk86Zhizn/vmGxe2g751E45OVaY2iO/AS20lwEBgbhW1SbNa prOcZaRow0kWLvSFGiLk1dPKG1yq9f1omZI3QK8owZu5HzZqkwSZlfNL+Tk7T0UQOFAJ TMYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776705526; x=1777310326; 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=W2Wff/1M87WllLQ253qBp/0GFiYpAWG5OoBPum9csgI=; b=igDxgApeAy7UxU7nnLK25393Li1pja3yWFdJnt/ftqZ/m6W9LMs9iq5ud63aa2RgOW 7S8nP7Kwe1f06XvTeQsoSNKV/0NsBzBLvvC+SjGYliGDw6W1d6EH6AFMeJHtPVxDRALl XEVjGjZjLvU1hPC6D2RlOLiIZ0DIIhsjVOOBYmYVtVvVlTbFQh14FUeFWFSYTBN++5wj gGOQeFm5rIaZ2Ta2n+0reOcKUHyRt6KVpj67YXizCdSsJXkOfz39QSYK2Tx23UYBMgf6 bz0b6LsJ1GE41ItMxY4dCyZwjG+DRir+ayS7ycTD8MY5hRdpRnlLA9qqMdZwdBfntTxC tE3Q== X-Forwarded-Encrypted: i=1; AFNElJ8CJ9FpuRXQ0WZZGQKeknOMa/EsBhnja5n0fhTtoB9ODjxS9jGzzOamkTG/XTHl49jIYNYrLHC356SGJIQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwUHshWvXWgpvtLHvFQDHtssmYrI+6j7ztEoFVf7IKiLZbLZVtZ xr1YKwE3DS2vANOE+LaGS5VErPbNu5C9ogqXOugAjSr57im83hntwB0TgnYUgGbxa6DCJUO75+J ULPpNx3FHE8piTKTfVrU9EtIwow== X-Received: from pjbge22.prod.google.com ([2002:a17:90b:e16:b0:35e:4617:916b]) (user=hramamurthy job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90a:e704:b0:35b:9896:cbcd with SMTP id 98e67ed59e1d1-361404b9b70mr13958806a91.27.1776705525487; Mon, 20 Apr 2026 10:18:45 -0700 (PDT) Date: Mon, 20 Apr 2026 17:18:36 +0000 In-Reply-To: <20260420171837.455487-1-hramamurthy@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260420171837.455487-1-hramamurthy@google.com> X-Mailer: git-send-email 2.54.0.rc1.555.g9c883467ad-goog Message-ID: <20260420171837.455487-4-hramamurthy@google.com> Subject: [PATCH net 3/4] gve: Use default min ring size when device option values are 0 From: Harshitha Ramamurthy To: netdev@vger.kernel.org Cc: joshwash@google.com, hramamurthy@google.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, willemb@google.com, maolson@google.com, nktgrg@google.com, jfraker@google.com, ziweixiao@google.com, jacob.e.keller@intel.com, pkaligineedi@google.com, shailend@google.com, jordanrhee@google.com, stable@vger.kernel.org, linux-kernel@vger.kernel.org, Pin-yen Lin Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Pin-yen Lin On gvnic devices that support reporting minimum ring sizes, the device option always includes the min_(rx|tx)_ring_size fields, and the values will be 0 if they are not configured to be exposed. This makes the driver allow unexpected small ring size configurations from the userspace. Use the default ring size in the driver if the min ring sizes from the device option are 0. This was discovered by drivers/net/ring_reconfig.py selftest. Cc: stable@vger.kernel.org Fixes: ed4fb326947d ("gve: add support to read ring size ranges from the de= vice") Reviewed-by: Joshua Washington Reviewed-by: Jordan Rhee Signed-off-by: Pin-yen Lin Signed-off-by: Harshitha Ramamurthy --- drivers/net/ethernet/google/gve/gve_adminq.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/google/gve/gve_adminq.c b/drivers/net/eth= ernet/google/gve/gve_adminq.c index b72cc0fa2ba2..57d898f6fa82 100644 --- a/drivers/net/ethernet/google/gve/gve_adminq.c +++ b/drivers/net/ethernet/google/gve/gve_adminq.c @@ -189,7 +189,9 @@ void gve_parse_device_option(struct gve_priv *priv, *dev_op_modify_ring =3D (void *)(option + 1); =20 /* device has not provided min ring size */ - if (option_length =3D=3D GVE_DEVICE_OPTION_NO_MIN_RING_SIZE) + if (option_length =3D=3D GVE_DEVICE_OPTION_NO_MIN_RING_SIZE || + be16_to_cpu((*dev_op_modify_ring)->min_rx_ring_size) =3D=3D 0 || + be16_to_cpu((*dev_op_modify_ring)->min_tx_ring_size) =3D=3D 0) priv->default_min_ring_size =3D true; break; case GVE_DEV_OPT_ID_FLOW_STEERING: --=20 2.54.0.rc0.605.g598a273b03-goog From nobody Tue Jun 16 19:32:39 2026 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 AC2383A0B2B for ; Mon, 20 Apr 2026 17:18:47 +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=1776705529; cv=none; b=MgnekE110eoToIyidH6aKrKDcJGyqGftA4kRPqQDgcVgx75wecT6LETgtekP2d1o3d/zZgD6dN5Z4fZpxIQlFwwJ1bw8giFc5GJRReDkEW+qxE5z0mxpw4oY+Dmn6qm3ZKXClIn5JpuBi2YDXadvIOqseqg4WthPLYgBdy1Q8VY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776705529; c=relaxed/simple; bh=7HuwCMtFhgkI3i3Cm8hedgvjuhF+HqVN4oV9qkEM0Sw=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=W8obYSaZP44lnXUGNAaZQ/csaHBC0gOfcFrUrWzNNoxlV1vB8kuo7FBKEVE+q6myhKXzx8/w5qv8R7gCuWA9DFJRyAPfDdqSQRgh4M4BiyZev5+lr800hCbJ/UNhIGmdvqg5GzSfxreUzi5F8+Vuo7FfgDEFNfifpM5C4auUuUM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--hramamurthy.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=LRuWm8v1; 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--hramamurthy.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="LRuWm8v1" Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-354bc535546so3075034a91.3 for ; Mon, 20 Apr 2026 10:18:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1776705527; x=1777310327; 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=HKhjtZffpudnSoigZVFDRJbxGYPsECcpyVW6J8Asv1A=; b=LRuWm8v1jk//MkqP3MDX0GqHo6YebJUMYDm8egJFq6FIz7dm8lOSSwSQ4s+EBOuNRt 1tzaX58w3Lz+FYAxF50gJ14irrhlheWq6ez+sI5SCOB4dHkqGRjLwxLMbYjlvgWAQcS+ Vj3eWgif11QzlNTWGIz82At2iO1v/ulKwmBUllQ1st+HIj/XbvU+9Z4sQD8FkhuuzTsV RqyAdlYJiWNHmUSwbuvWiQVUUtLYk0Nb6yVhscyUBsbr4FEiS9QeIprfeT+mu0se4AzZ SE/AdoczyBwAoFgNS7UE+oz2LsP0EUbooFmrh+4AgbyYwC6oQt1xUWWNc+icgE46Yvrl LuxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776705527; x=1777310327; 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=HKhjtZffpudnSoigZVFDRJbxGYPsECcpyVW6J8Asv1A=; b=WKiny6IQwkVR02hMbEcSoFxS31BFVtAGl499kA9V/A/KGi1ZVZnX3K1r7TIzIMtPC/ P0wxGXLGKFjERGQt6vVTLkkk6VJH4bdHygxtk25NZ9Gxu+n7R3qOBcAYQB+q6zVHFeH3 bS3Ov/l9nK0JiYRMvVCENvGDlR4a0Gy9/IuXMThRXElJ8wDXf1cJcbZVMpC3Lu0ipOtR 6n5lB26LLwNYGPYvg9idXiSKhSerkuAqejw7STKpaE9sFp/54Ygm+xVDW05YDWAp3rEs j9M3ggdBT8dR+qzT590Q3cXzId3V8NoULEL9xtuiemxhQlBqyeLhMPVA5sDbYdWR7yv9 wOAg== X-Forwarded-Encrypted: i=1; AFNElJ/cpHhfJgb855Adi4sZ5xxNjhTRVAm6EJq7xiFgWEKi2u5DFby31GKYBtQ4wZ40mjg3HQtABw97sbD1ih8=@vger.kernel.org X-Gm-Message-State: AOJu0Yyo/vm32uI403RkCZ5yEkVxgF8Ho+wK/IBc1ddVscp0Dt9qcucl UxMJeaMFjmxDJJsra04zPq2ciPxfKk1atCWupFNPYUpeet6R9XuYJaxEfqsbror0tihMKfCDDWr tR/Jsw1itYCZOGY5jCbmh0fXqIQ== X-Received: from pjbev4.prod.google.com ([2002:a17:90a:eac4:b0:35f:b87d:dbd]) (user=hramamurthy job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90a:e7d0:b0:35c:1695:24a3 with SMTP id 98e67ed59e1d1-361404945e0mr15500805a91.23.1776705526822; Mon, 20 Apr 2026 10:18:46 -0700 (PDT) Date: Mon, 20 Apr 2026 17:18:37 +0000 In-Reply-To: <20260420171837.455487-1-hramamurthy@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260420171837.455487-1-hramamurthy@google.com> X-Mailer: git-send-email 2.54.0.rc1.555.g9c883467ad-goog Message-ID: <20260420171837.455487-5-hramamurthy@google.com> Subject: [PATCH net 4/4] gve: Make ethtool config changes synchronous From: Harshitha Ramamurthy To: netdev@vger.kernel.org Cc: joshwash@google.com, hramamurthy@google.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, willemb@google.com, maolson@google.com, nktgrg@google.com, jfraker@google.com, ziweixiao@google.com, jacob.e.keller@intel.com, pkaligineedi@google.com, shailend@google.com, jordanrhee@google.com, stable@vger.kernel.org, linux-kernel@vger.kernel.org, Pin-yen Lin Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Pin-yen Lin When modifying device features via ethtool, the driver queues the carrier status update to its workqueue (gve_wq). This leads to a short link-down state after running the ethtool command. Use `gve_turnup_and_check_status()` instead of `gve_turnup()` in `gve_queues_start()` to update the carrier status before returning to the userspace. This was discovered by drivers/net/ping.py selftest. The test calls ping command right after an ethtool configuration, but the interface could be down without this fix. Cc: stable@vger.kernel.org Fixes: 5f08cd3d6423 ("gve: Alloc before freeing when adjusting queues") Reviewed-by: Joshua Washington Signed-off-by: Pin-yen Lin Signed-off-by: Harshitha Ramamurthy --- drivers/net/ethernet/google/gve/gve_main.c | 56 +++++++++++----------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ether= net/google/gve/gve_main.c index 8617782791e0..d3b4bec38de5 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -1374,6 +1374,33 @@ static void gve_queues_mem_remove(struct gve_priv *p= riv) priv->rx =3D NULL; } =20 +static void gve_handle_link_status(struct gve_priv *priv, bool link_status) +{ + if (!gve_get_napi_enabled(priv)) + return; + + if (link_status =3D=3D netif_carrier_ok(priv->dev)) + return; + + if (link_status) { + netdev_info(priv->dev, "Device link is up.\n"); + netif_carrier_on(priv->dev); + } else { + netdev_info(priv->dev, "Device link is down.\n"); + netif_carrier_off(priv->dev); + } +} + +static void gve_turnup_and_check_status(struct gve_priv *priv) +{ + u32 status; + + gve_turnup(priv); + status =3D ioread32be(&priv->reg_bar0->device_status); + gve_handle_link_status(priv, + GVE_DEVICE_STATUS_LINK_STATUS_MASK & status); +} + /* The passed-in queue memory is stored into priv and the queues are made = live. * No memory is allocated. Passed-in memory is freed on errors. */ @@ -1434,8 +1461,7 @@ static int gve_queues_start(struct gve_priv *priv, round_jiffies(jiffies + msecs_to_jiffies(priv->stats_report_timer_period))); =20 - gve_turnup(priv); - queue_work(priv->gve_wq, &priv->service_task); + gve_turnup_and_check_status(priv); priv->interface_up_cnt++; return 0; =20 @@ -1548,23 +1574,6 @@ static int gve_close(struct net_device *dev) return 0; } =20 -static void gve_handle_link_status(struct gve_priv *priv, bool link_status) -{ - if (!gve_get_napi_enabled(priv)) - return; - - if (link_status =3D=3D netif_carrier_ok(priv->dev)) - return; - - if (link_status) { - netdev_info(priv->dev, "Device link is up.\n"); - netif_carrier_on(priv->dev); - } else { - netdev_info(priv->dev, "Device link is down.\n"); - netif_carrier_off(priv->dev); - } -} - static int gve_configure_rings_xdp(struct gve_priv *priv, u16 num_xdp_rings) { @@ -2039,15 +2048,6 @@ static void gve_turnup(struct gve_priv *priv) gve_set_napi_enabled(priv); } =20 -static void gve_turnup_and_check_status(struct gve_priv *priv) -{ - u32 status; - - gve_turnup(priv); - status =3D ioread32be(&priv->reg_bar0->device_status); - gve_handle_link_status(priv, GVE_DEVICE_STATUS_LINK_STATUS_MASK & status); -} - static struct gve_notify_block *gve_get_tx_notify_block(struct gve_priv *p= riv, unsigned int txqueue) { --=20 2.54.0.rc0.605.g598a273b03-goog