Linux-HyperV List
 help / color / mirror / Atom feed
From: Shradha Gupta <shradhagupta@linux.microsoft.com>
To: linux-kernel@vger.kernel.org, linux-hyperv@vger.kernel.org,
	netdev@vger.kernel.org
Cc: Shradha Gupta <shradhagupta@linux.microsoft.com>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
	Long Li <longli@microsoft.com>,
	Michael Kelley <mikelley@microsoft.com>,
	"David S. Miller" <davem@davemloft.net>
Subject: [PATCH] hv_netvsc: support a new host capability AllowRscDisabledStatus
Date: Thu, 29 Jun 2023 02:58:39 -0700	[thread overview]
Message-ID: <1688032719-22847-1-git-send-email-shradhagupta@linux.microsoft.com> (raw)

A future Azure host update has the potential to change RSC behavior
in the VMs. To avoid this invisble change, Vswitch will check the
netvsc version of a VM before sending its RSC capabilities, and will
always indicate that the host performs RSC if the VM doesn't have an
updated netvsc driver regardless of the actual host RSC capabilities.
Netvsc now advertises a new capability: AllowRscDisabledStatus
The host will check for this capability before sending RSC status,
and if a VM does not have this capability it will send RSC enabled
status regardless of host RSC settings

Signed-off-by: Shradha Gupta <shradhagupta@linux.microsoft.com>
---
 drivers/net/hyperv/hyperv_net.h | 3 +++
 drivers/net/hyperv/netvsc.c     | 8 ++++++++
 2 files changed, 11 insertions(+)

diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
index dd5919ec408b..218e0f31dd66 100644
--- a/drivers/net/hyperv/hyperv_net.h
+++ b/drivers/net/hyperv/hyperv_net.h
@@ -572,6 +572,9 @@ struct nvsp_2_vsc_capability {
 			u64 teaming:1;
 			u64 vsubnetid:1;
 			u64 rsc:1;
+			u64 timestamp:1;
+			u64 reliablecorrelationid:1;
+			u64 allowrscdisabledstatus:1;
 		};
 	};
 } __packed;
diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
index da737d959e81..2eb1e85ba940 100644
--- a/drivers/net/hyperv/netvsc.c
+++ b/drivers/net/hyperv/netvsc.c
@@ -619,6 +619,14 @@ static int negotiate_nvsp_ver(struct hv_device *device,
 	init_packet->msg.v2_msg.send_ndis_config.mtu = ndev->mtu + ETH_HLEN;
 	init_packet->msg.v2_msg.send_ndis_config.capability.ieee8021q = 1;
 
+	/* Don't need a version check while setting this bit because if we
+	 * have a New VM on an old host, the VM will set the bit but the host
+	 * won't check it. If we have an old VM on a new host, the host will
+	 * check the bit, see its zero, and it'll know the VM has an
+	 * older NetVsc
+	 */
+	init_packet->msg.v2_msg.send_ndis_config.capability.allowrscdisabledstatus = 1;
+
 	if (nvsp_ver >= NVSP_PROTOCOL_VERSION_5) {
 		if (hv_is_isolation_supported())
 			netdev_info(ndev, "SR-IOV not advertised by guests on the host supporting isolation\n");
-- 
2.34.1


             reply	other threads:[~2023-06-29 10:01 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-29  9:58 Shradha Gupta [this message]
2023-06-29 12:44 ` [PATCH] hv_netvsc: support a new host capability AllowRscDisabledStatus Haiyang Zhang
2023-07-03  4:37   ` Shradha Gupta
2023-07-18 10:18     ` Shradha Gupta
2023-07-18 13:52       ` Haiyang Zhang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1688032719-22847-1-git-send-email-shradhagupta@linux.microsoft.com \
    --to=shradhagupta@linux.microsoft.com \
    --cc=davem@davemloft.net \
    --cc=decui@microsoft.com \
    --cc=edumazet@google.com \
    --cc=haiyangz@microsoft.com \
    --cc=kuba@kernel.org \
    --cc=kys@microsoft.com \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=longli@microsoft.com \
    --cc=mikelley@microsoft.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=wei.liu@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox