diff mbox series

[net] gve: Cache link_speed value from device

Message ID 20230315174016.4193015-1-joshwash@google.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series [net] gve: Cache link_speed value from device | expand

Checks

Context Check Description
netdev/tree_selection success Clearly marked for net
netdev/apply fail Patch does not apply to net

Commit Message

Joshua Washington March 15, 2023, 5:40 p.m. UTC
From: Joshua Washington <joshwash@google.com>

The link speed is never changed for the uptime of a VM. Caching the
value will allow for better performance.

Fixes: 7e074d5a76ca ("gve: Enable Link Speed Reporting in the driver.")
Signed-off-by: Joshua Washington <joshwash@google.com>
---
 google/gve/gve_ethtool.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Jakub Kicinski March 17, 2023, 12:42 a.m. UTC | #1
On Wed, 15 Mar 2023 10:40:16 -0700 joshwash@google.com wrote:
> From: Joshua Washington <joshwash@google.com>
> 
> The link speed is never changed for the uptime of a VM. Caching the
> value will allow for better performance.
> 
> Fixes: 7e074d5a76ca ("gve: Enable Link Speed Reporting in the driver.")

If it needs to go in as a fix / to stable we need a bit more info about
the nature of the problem. What user-visible (or hypervisor-visible)
impact will be?  What entity needs link info so often that it becomes
a problem?

The code looks fine as an optimization, i.e. for net-next, but you say
"PATCH net" and there's a Fixes tag...
Jakub Kicinski March 17, 2023, 12:43 a.m. UTC | #2
On Thu, 16 Mar 2023 17:42:27 -0700 Jakub Kicinski wrote:
> If it needs to go in as a fix / to stable we need a bit more info about
> the nature of the problem. What user-visible (or hypervisor-visible)
> impact will be?  What entity needs link info so often that it becomes
> a problem?
> 
> The code looks fine as an optimization, i.e. for net-next, but you say
> "PATCH net" and there's a Fixes tag...

Hm, actually it doesn't apply to either tree..
diff mbox series

Patch

diff --git a/google/gve/gve_ethtool.c b/google/gve/gve_ethtool.c
index b18804e..cfd4b8d 100644
--- a/google/gve/gve_ethtool.c
+++ b/google/gve/gve_ethtool.c
@@ -584,7 +584,10 @@  static int gve_get_link_ksettings(struct net_device *netdev,
 				  struct ethtool_link_ksettings *cmd)
 {
 	struct gve_priv *priv = netdev_priv(netdev);
-	int err = gve_adminq_report_link_speed(priv);
+	int err = 0;
+
+	if (priv->link_speed == 0)
+		err = gve_adminq_report_link_speed(priv);
 
 	cmd->base.speed = priv->link_speed;
 	return err;