From win-pv-devel-bounces@lists.xenproject.org Fri Oct 08 13:38:03 2021
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Oct 2021 13:38:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.204738.359902 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mYq4W-00072g-Cq; Fri, 08 Oct 2021 13:38:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 204738.359902; Fri, 08 Oct 2021 13:38:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mYq4W-00072Z-9n; Fri, 08 Oct 2021 13:38:00 +0000
Received: by outflank-mailman (input) for mailman id 204738;
 Fri, 08 Oct 2021 13:23:02 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rXzR=O4=gmail.com=rneilturner@srs-us1.protection.inumbo.net>)
 id 1mYpq2-00061E-0w
 for win-pv-devel@lists.xenproject.org; Fri, 08 Oct 2021 13:23:02 +0000
Received: from mail-qk1-x72e.google.com (unknown [2607:f8b0:4864:20::72e])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d6e8ba98-8306-41bf-b32d-310db2c5e81c;
 Fri, 08 Oct 2021 13:23:01 +0000 (UTC)
Received: by mail-qk1-x72e.google.com with SMTP id p4so9356471qki.3
 for <win-pv-devel@lists.xenproject.org>; Fri, 08 Oct 2021 06:23:01 -0700 (PDT)
Received: from fed-rturner-l0.crux.rad.ainfosec.com.crux.rad.ainfosec.com
 (cpe-67-241-47-238.twcny.res.rr.com. [67.241.47.238])
 by smtp.gmail.com with ESMTPSA id d5sm2046395qtr.61.2021.10.08.06.22.59
 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256);
 Fri, 08 Oct 2021 06:23:00 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d6e8ba98-8306-41bf-b32d-310db2c5e81c
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=from:to:cc:subject:date:message-id:mime-version
         :content-transfer-encoding;
        bh=HmVNFLNtmkPMf6CzU6myCTr68gLjnVw1ryQVZcjvjMM=;
        b=aMe+qQqQSa2P77rwgLmQ+gSuytFZfC9RKtkWv/UZGViKVpcOPhAp5XO2gQf61s1rZg
         z8svD2tgwV0fIYQm0a1JfPi614lCauiEmZbd7ZxF2AlyDGZghPoz0r94U6GV6YaqSoOw
         b1uccBz+6OKYtzJbDVR37nKTBzguS0z8oVMy+86X0RKZxVhlUSx03sb8Fz6m7fdMXD9N
         fbLNpyhXxOoHkhdKUwQmL3/XHLL18qFWvNa8/gNTp+t8Gw7GTV2SkDATjPveyITMjcmk
         qE0KbRL1QT3Vf5Z5dLw55khTcBuxrCROcvjwWN/k95EhFgQIhAoC7CnYLzGVR+CLk1XT
         s5Cg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version
         :content-transfer-encoding;
        bh=HmVNFLNtmkPMf6CzU6myCTr68gLjnVw1ryQVZcjvjMM=;
        b=XAotoSQSVOIMuAOpOhhoo/GR1dw3WLSfnj9Q9eHWvGXg1YelMY1lYq+amVsyL7lZ1y
         8bLzrGEnJ9APwpnrzTkiXPYx6/aumjSLisIFBJ9boubmBSNA/dN2FKz0ADrYH+TZWN6o
         O6ek8vcRINbfctt2LgmSXYPYUqGwM/c/72JiAo7+FFa99QKas0LQXMI69X/CDT7w8K+Q
         eOyF1CxMwR/wX3CEtuHqkhc74K2gw/42WnmgAEhaXkDQGJWyQKgig6uUn7xsClpwjM8p
         chNB5NTCWdfFtj4St/TLhnPXhvZHhCdAXPsuu+CJ8s2cCrsStfvWOGq54I7U2PqqynwF
         zRFg==
X-Gm-Message-State: AOAM5339D4SePKqW2SJIc5PGGChLfbgfitRYMZY48r2ADMCtJ66mMJqA
	iWCF3FqhwK1VqgxkS5jvsDopTChpGaneIjlo
X-Google-Smtp-Source: ABdhPJy5BsXtKIix6vPJ7E2Qogk8CjNlRUBmzEKwt1FZONPm7fg355idrxsitP3mqhPkS9VCwGLVWA==
X-Received: by 2002:ae9:ed02:: with SMTP id c2mr2566090qkg.117.1633699380822;
        Fri, 08 Oct 2021 06:23:00 -0700 (PDT)
From: Richard Turner <rneilturner@gmail.com>
X-Google-Original-From: Richard Turner <turnerr@ainfosec.com>
To: win-pv-devel@lists.xenproject.org
Cc: Richard Turner <turnerr@ainfosec.com>
Subject: [PATCH] xenfilt: Move list pointer to next entry when pdo is missing
Date: Fri,  8 Oct 2021 09:22:44 -0400
Message-Id: <9761ee7b4178c75d4a33d7473521da4300462a1d.1633697003.git.turnerr@ainfosec.com>
X-Mailer: git-send-email 2.31.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The pointer to the list of fdo entries is never advanced
when the pdo is missing, causing a BSOD. When a device
is missing, advance the list pointer to the next entry.

Signed-off-by: Richard Turner <turnerr@ainfosec.com>
---
 src/xenfilt/fdo.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/xenfilt/fdo.c b/src/xenfilt/fdo.c
index b8cf424..6a45b0f 100644
--- a/src/xenfilt/fdo.c
+++ b/src/xenfilt/fdo.c
@@ -1107,7 +1107,7 @@ FdoQueryDeviceRelations(
                 if (PdoGetDevicePnpState(Pdo) == Deleted)
                     PdoDestroy(Pdo);
 
-                continue;
+                goto next;
             }
 
             if (PdoGetDevicePnpState(Pdo) == Present)
@@ -1116,6 +1116,7 @@ FdoQueryDeviceRelations(
             ObReferenceObject(PdoGetPhysicalDeviceObject(Pdo));
             Relations->Objects[Relations->Count++] = PdoGetPhysicalDeviceObject(Pdo);
 
+next:
             ListEntry = Next;
         }
 
-- 
2.31.1



From win-pv-devel-bounces@lists.xenproject.org Sat Oct 09 15:26:02 2021
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 09 Oct 2021 15:26:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.205128.360383 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mZEEY-0007lN-E6; Sat, 09 Oct 2021 15:25:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 205128.360383; Sat, 09 Oct 2021 15:25:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mZEEY-0007lE-AO; Sat, 09 Oct 2021 15:25:58 +0000
Received: by outflank-mailman (input) for mailman id 205128;
 Sat, 09 Oct 2021 15:25:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nDgU=O5=gmail.com=xadimgnik@srs-us1.protection.inumbo.net>)
 id 1mZEEX-0007l6-HY
 for win-pv-devel@lists.xenproject.org; Sat, 09 Oct 2021 15:25:57 +0000
Received: from mail-wr1-x429.google.com (unknown [2a00:1450:4864:20::429])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c5f7dbc2-fb69-4c7b-aa11-68de6fab3f77;
 Sat, 09 Oct 2021 15:25:55 +0000 (UTC)
Received: by mail-wr1-x429.google.com with SMTP id t2so39353655wrb.8
 for <win-pv-devel@lists.xenproject.org>; Sat, 09 Oct 2021 08:25:55 -0700 (PDT)
Received: from [192.168.1.186]
 (host86-143-223-59.range86-143.btcentralplus.com. [86.143.223.59])
 by smtp.gmail.com with ESMTPSA id p8sm2524255wmg.15.2021.10.09.08.25.53
 for <win-pv-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 09 Oct 2021 08:25:54 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c5f7dbc2-fb69-4c7b-aa11-68de6fab3f77
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=message-id:date:mime-version:user-agent:reply-to:subject
         :content-language:to:references:from:in-reply-to
         :content-transfer-encoding;
        bh=ajVoC6AkkL6MJChYtW5jkTiFNCLyVzuSD+k4e8zmknA=;
        b=jJSYIh4N4DMJZJcp2Z0tgvvarIS8no/krdFFAJrsLMU3RsdEUvplGUZfp5RRFl/hNa
         vU3xg6mhqVF8ZpTdv2A5hEgCKCsxIa4WnyvMixEz14vHvlgqBK56btAnWD4dlHUoXXbw
         C+tHpZE6TuIDl3bStGGj1XtgcEJaYPBUbL7yBG9r59o/305hwjtUh4vwJmuAXmpAyC9a
         liiuWlY5UQDguqZg+tC3cFFeZqo6XrzK4dcjifwQykpeHAUQQ8hdbr5gRT0YRmnb9lDD
         GxL0P6gVyn0XX5Tdn08M7zdj96k6EpsyenKoyoSgoTq7cwTm9/Jij2nfdxZxUeOLbLEt
         DCfg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=x-gm-message-state:message-id:date:mime-version:user-agent:reply-to
         :subject:content-language:to:references:from:in-reply-to
         :content-transfer-encoding;
        bh=ajVoC6AkkL6MJChYtW5jkTiFNCLyVzuSD+k4e8zmknA=;
        b=6T0D0tu2RBlRbf5V7Baw0vjK8yF4vxOi6i71WjXSlqjoPHdQVyf72zw0kSW18NVsV/
         TAxMWddnbLw4sZX9EqFniprDpfTvD3usAS1lobQDJxigkavnKf7f16OlSEgv3nzJelHc
         F0L63e3vDMoAI1eG+EYdlQ6OKxsJ2N2Hs3QE+xYTQ9pOZHLzO8j0I5zL16lCt9evRq8t
         /NUPbcJz/wBI+ao356Ay/ipMR1W0cRRVV2epJtylDb7yk+yFmuFRoAGU5DOJ6KaFGkQa
         UFsJVGrh8Gy2g8B9IjB17HxfSy+cNxMq6gjpFWJiCSZtHk0QWDTR5U87Jv3Zxlo8Zrlh
         Z0oA==
X-Gm-Message-State: AOAM531eWiKIk27kux+oGbTO2yLfPEWuGQhi3elMgJLvE5ipi5CNXNq+
	hYEkf2Hdg4i76BCHBiKogtA7pT4Xx1w=
X-Google-Smtp-Source: ABdhPJxlf5uLhIxfHz7seOxN8PPKSDiPHaY4IquZXPiUUYpp5JGL+MNhOeUem3CTUzDlENKn5z9iSg==
X-Received: by 2002:a05:6000:154b:: with SMTP id 11mr11638937wry.161.1633793154587;
        Sat, 09 Oct 2021 08:25:54 -0700 (PDT)
Message-ID: <c23ca1b4-120f-1361-9591-01ddfc8e062f@gmail.com>
Date: Sat, 9 Oct 2021 16:25:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
 Thunderbird/91.1.2
Reply-To: paul@xen.org
Subject: Re: [PATCH] xenfilt: Move list pointer to next entry when pdo is
 missing
Content-Language: en-US
To: win-pv-devel@lists.xenproject.org
References: <9761ee7b4178c75d4a33d7473521da4300462a1d.1633697003.git.turnerr@ainfosec.com>
From: "Durrant, Paul" <xadimgnik@gmail.com>
In-Reply-To: <9761ee7b4178c75d4a33d7473521da4300462a1d.1633697003.git.turnerr@ainfosec.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/10/2021 14:22, Richard Turner wrote:
> The pointer to the list of fdo entries is never advanced
> when the pdo is missing, causing a BSOD. When a device
> is missing, advance the list pointer to the next entry.
> 
> Signed-off-by: Richard Turner <turnerr@ainfosec.com>

Acked-by: Paul Durrant <paul@xen.org>

> ---
>   src/xenfilt/fdo.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/src/xenfilt/fdo.c b/src/xenfilt/fdo.c
> index b8cf424..6a45b0f 100644
> --- a/src/xenfilt/fdo.c
> +++ b/src/xenfilt/fdo.c
> @@ -1107,7 +1107,7 @@ FdoQueryDeviceRelations(
>                   if (PdoGetDevicePnpState(Pdo) == Deleted)
>                       PdoDestroy(Pdo);
>   
> -                continue;
> +                goto next;
>               }
>   
>               if (PdoGetDevicePnpState(Pdo) == Present)
> @@ -1116,6 +1116,7 @@ FdoQueryDeviceRelations(
>               ObReferenceObject(PdoGetPhysicalDeviceObject(Pdo));
>               Relations->Objects[Relations->Count++] = PdoGetPhysicalDeviceObject(Pdo);
>   
> +next:
>               ListEntry = Next;
>           }
>   
> 



From win-pv-devel-bounces@lists.xenproject.org Sat Oct 09 16:19:21 2021
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 09 Oct 2021 16:19:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.205188.360441 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mZF4B-0007GW-IF; Sat, 09 Oct 2021 16:19:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 205188.360441; Sat, 09 Oct 2021 16:19:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mZF4B-0007GP-FP; Sat, 09 Oct 2021 16:19:19 +0000
Received: by outflank-mailman (input) for mailman id 205188;
 Sat, 09 Oct 2021 16:19:18 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul.durrant@xenproject.org>) id 1mZF4A-0007GJ-LE
 for win-pv-devel@lists.xenproject.org; Sat, 09 Oct 2021 16:19:18 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
Date: Sat, 9 Oct 2021 16:19:23 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <23309693.23.1633796363726.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
Subject: XENBUS-master - Build #226 - Successful
MIME-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_22_26506564.1633796363460"
X-Jenkins-Job: XENBUS-master
X-Jenkins-Result: SUCCESS


------=_Part_22_26506564.1633796363460
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #226.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENBUS-master/226/console to view the results.
------=_Part_22_26506564.1633796363460--


From win-pv-devel-bounces@lists.xenproject.org Tue Oct 26 07:12:25 2021
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Oct 2021 07:12:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.216218.375754 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mfGdE-0002bv-IK; Tue, 26 Oct 2021 07:12:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 216218.375754; Tue, 26 Oct 2021 07:12:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mfGdE-0002bo-FU; Tue, 26 Oct 2021 07:12:24 +0000
Received: by outflank-mailman (input) for mailman id 216218;
 Tue, 26 Oct 2021 07:12:23 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=dtJc=PO=citrix.com=owen.smith@srs-us1.protection.inumbo.net>)
 id 1mfGdD-0002bi-R9
 for win-pv-devel@lists.xenproject.org; Tue, 26 Oct 2021 07:12:23 +0000
Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 10316702-362c-11ec-8428-12813bfff9fa;
 Tue, 26 Oct 2021 07:12:22 +0000 (UTC)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 10316702-362c-11ec-8428-12813bfff9fa
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1635232342;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=A1BlTyC1raE2wztqtsl6x9Sh1TV4FQJAL9yDfrWwZO4=;
  b=dEXOJCgBp1Z2MDzK7hv8D3EOqGeMW9mPzDgRBibwcOImzRkkpUWwYRpE
   JyPxqH/hyOy8piVOWt0p8CxL0v1KCPYT072TUoZG1bvjSWbrafV7g8nM5
   tVYXrRP7UWdIPWSTivoM5W2l6g8YQIR7k77aVrldmsc0mj6s3fAKt4vPA
   U=;
Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
IronPort-SDR: 5rAnoFraQAm8Ic/wKifeCKiRkQyfgHZKAbkz/dcGxkfgp2gNsueU00bAV4ul6h3HHYDP5T31Vh
 FsxUxCx1g3VEAjZWALh5f9PHy2tAaaimyes20BWHQ3GyyOXzY44EYZtfTCXL8wU/N7od6DLoUT
 Rej/ijTl8IQ1Z+JIqGKDLiResci0FeOzohkbGrzIya+SO1dpDRAM4f6oAy9fvu1ZrLtLqSHOmX
 eDTa0PnaPYu3dM5nxWWqFPBB0uPy9fmrecHimldI8UoQoQdY1s8kkaxFgHai5t6y6qDfAkhl8W
 jonWs75EZlxU/6H8gPhZ+LJK
X-SBRS: 5.1
X-MesageID: 56076260
X-Ironport-Server: esa3.hc3370-68.iphmx.com
X-Remote-IP: 162.221.156.83
X-Policy: $RELAYED
IronPort-Data: A9a23:XmjIyqo0hR9XBYoLnB7dwslFxJ9eBmI8YhIvgKrLsJaIsI4StFCzt
 garIBnSOfqLMGukedx1a4W28BgGup/dyIc3SFRvqCFjEX9B+JuZCYyVIHmrMnLJJKUvbq7GA
 +byyDXkBJppJpMJjk71atANlZT4vE2xbuKU5NTsY0idfic5Dnd+4f5fs7Rh2Ncx2YLnW1nlV
 e7a+KUzBnf0g1aYDUpMg06zgEsHUCPa4W5wUvQWPJinjXeG/5UnJMt3yZKZdhMUdrJ8DO+iL
 9sv+Znilo/vE7XBPfv++lrzWhVirrc/pmFigFIOM0SpqkAqSiDfTs/XnRfTAKtao2zhojx/9
 DlCna2PSjYLJ5zQo8ReDhxBNC5XZosB14aSdBBTseTLp6HHW37lwvEoB0AqJ4wIvO1wBAmi9
 9RBdmpLNErawbvrnvTrEYGAhex6RCXvFIQAt3cm1jTYEfYOSpHfWaTao9Rf2V/cg+gTQ66BO
 ZBHMVKDajzFfzlCOFA7GKg/v73v2lDWURZWrlCs8P9fD2/7k1UqjemF3MDuUsOLQ4BNgAOUq
 3zL+0z9AwoGL5qPxDyd6HWui+TT2yThV+ov+KaQr6AwxgfJnypKVUNQBQDTTeSFZlCWau1cG
 m4NyzYVjetv8VWMQfCmeVqXmSvR1vIDYOZ4H+o/4QCL76Pb5QeFG2QJJgJ8hMwaWNweHmNyi
 AfY9z/9LXk26ufNECPCnluBhWrqYXB9EIMUWcMToeLpCfHYq4YvkgmHcN9nFKOk5jEeMWCtm
 27UxMTSarN6sCLq60lZ1QyY695PjsKQJuLQ2ukwdjn9hj6VnKb/O+SVBaHztJ6s1rqxQFibp
 2QjkMOD9u0IBpzlvHXTG7hUTOHwtqfVYWy0bbtT834JrGzFxpJeVdoIvGEWyLlBa55slcDVj
 L/75loKuc470IqCZq5reYOhY/nGPoC7fekJosv8N4IUCrAoLVfv1Hg3OSa4gjC8+GBxwPpXE
 crKLq6R4YMyVP0PIMyeHLxGj9fGB0kWmAvueHwM5073jebHPyXFF+xt3ZnnRrlR0Z5oaT79q
 753X/ZmAT0GOAEnSiWIo4MVM34QKn03WcL/p8BNL7bRKQt6AmAxTfTWxOp5KYBimq1UkMbO/
 228BRAEmAau2yWfJFXYcG1nZZPuQY178SAxMxszMAv6wHMke4uusvsSLsNlYbk9+eV/5vdoV
 P1ZKd6YC/FCR22fqTQQZJXwtqJ4cxGviV7cNiapemFnLZVhWxbI6pnveQ62rHsCCS++tM0fp
 by811yEHcpfFlo6VMuPMaCh1VK8u3QZidleZUqQL4kBYljo/ahrNzf10q09LfYTJEiR3TCdz
 QuXX0sV/LGfv48v/dDVrqmYtIP1QfBmF09XEmSHv7a7MS7WojiqzYNaCbvaeDncUCX/+bm4Z
 PUTxPb5aaVVkFFPuot6MrBq0aNhuIe/++4EllxpTCfRclCmKrJ8OX3Xj8BAu5pEyqJdpQbrC
 FmE/cNXOOnRNc7oeLLLyNHJsghXOSkopwTv
IronPort-HdrOrdr: A9a23:FwujrKDFWDiygF3lHemg55DYdb4zR+YMi2TC1yhKJyC9Ffbo8/
 xG/c5rsyMc5wxwZJhNo7y90cq7MBbhHPxOkOos1N6ZNWGM0gaVxelZnOzfKlbbehEWmNQz6U
 4ZSdkdNOHN
X-IronPort-AV: E=Sophos;i="5.87,182,1631592000"; 
   d="scan'208";a="56076260"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
CC: Owen Smith <owen.smith@citrix.com>
Subject: [PATCH 1/4] Add /CETCOMPAT to linker options
Date: Tue, 26 Oct 2021 08:12:08 +0100
Message-ID: <20211026071211.1875-1-owen.smith@citrix.com>
X-Mailer: git-send-email 2.33.0.windows.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain

The "Hardware Enforced Stack Protection Compatability" test introduced with the
Server 2022 HLK requires drivers to be linked with /CETCOMPAT

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 vs2019/xennet/xennet.vcxproj | 1 +
 1 file changed, 1 insertion(+)

diff --git a/vs2019/xennet/xennet.vcxproj b/vs2019/xennet/xennet.vcxproj
index ca89610..d79a691 100644
--- a/vs2019/xennet/xennet.vcxproj
+++ b/vs2019/xennet/xennet.vcxproj
@@ -35,6 +35,7 @@
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
       <AdditionalDependencies>$(DDK_LIB_PATH)\ndis.lib;$(DDK_LIB_PATH)/libcntpr.lib;$(DDK_LIB_PATH)/aux_klib.lib;$(DDK_LIB_PATH)/procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <CETCompat>true</CETCompat>
     </Link>
     <DriverSign>
       <FileDigestAlgorithm>sha256</FileDigestAlgorithm>
-- 
2.33.0.windows.2



From win-pv-devel-bounces@lists.xenproject.org Tue Oct 26 07:12:26 2021
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Oct 2021 07:12:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.216219.375758 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mfGdG-0002dk-Jl; Tue, 26 Oct 2021 07:12:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 216219.375758; Tue, 26 Oct 2021 07:12:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mfGdG-0002dd-Gy; Tue, 26 Oct 2021 07:12:26 +0000
Received: by outflank-mailman (input) for mailman id 216219;
 Tue, 26 Oct 2021 07:12:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=dtJc=PO=citrix.com=owen.smith@srs-us1.protection.inumbo.net>)
 id 1mfGdF-0002dN-E4
 for win-pv-devel@lists.xenproject.org; Tue, 26 Oct 2021 07:12:25 +0000
Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b751ea85-059f-4908-82ec-287edf822d56;
 Tue, 26 Oct 2021 07:12:22 +0000 (UTC)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b751ea85-059f-4908-82ec-287edf822d56
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1635232342;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=69tC36YVeWXuzERNHLQ/bflwRuHiwHvqM8bjeCEDhjA=;
  b=C5vHoY53BGkl+D8ep+dukLabnwawF0E/3hDZ5qPoYKC1yy/Jg9I2BT/I
   rOGKR+hqoX9+XABBgia8p+lc+OwwBDMgvUc5cYrY3Gr77WBWSSwIV6ciA
   cyz3KhUN//UzCyq/Uq/aKprouZ6UqeIpWhvYw2tIMQOkPUbTQ8sb/0iTX
   I=;
Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
IronPort-SDR: NYIE1J0dP3AelnB5JAhCi7j7dDUK74nRSWM3QMz0Hc+p7AwqF4x3o44iyd2ta9+aLWrc+9cqgc
 ECJVqFkqzwdsXq5o+Suj+sGf+wrbi53XiZuxmjMwKugnOKjvR6V6EYnxXF1iYK0K637E/Nqd+Q
 xulU+CaXIeHQNhnVfGlmZbEsk5h80yjHIMDWQ9WbLadXp1TSbVvzsDnv0jnysA/8xrzFyFlURp
 9dXAzpa1LpUiMUT9ePLEN4dJzQ7NxvwiRUjNpGQaO63dKL2IC8SQ1IT2YJdXXw0PzSma3utC4D
 vRk1Vyj2d2L04PJdbEzjKSkX
X-SBRS: 5.1
X-MesageID: 56041630
X-Ironport-Server: esa6.hc3370-68.iphmx.com
X-Remote-IP: 162.221.156.83
X-Policy: $RELAYED
IronPort-Data: A9a23:7JgrTq8LC5sI8TEaEpjvDrUDpHmTJUtcMsCJ2f8bNWPcYEJGY0x3z
 DYeUGqEa/uIMDGhL9l1bISzp0wHsZXWztI2QQY//i48E34SpcT7XtnIdU2Y0wF+jyHgoOCLy
 +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhGmeIdA970Ug6wrZj3NYy6TSEK1jlV
 e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH
 I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhU5
 O5Gm47rFz51L6LpmtUZQhxeOR5xaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us
 6ZCcXZUM07F17neLLGTE4GAguwkM8Ttepgau21g5TrYEewnUdbIRKCiCdpwgWlo2pkQRq62i
 8wxQwQ/VS/NYEJ0YXALWYwawL6BoWeifGgNwL6SjfVuuDWCpOBr65DyMdyQYsLPSchLk0Kwo
 mPd43+/EhwcLMaYyzeO7jSrnOCnoM/gcNtMTvvirKcs2QDNgDxIYPELabelidyVsUWQSYkBE
 hAF9Q8snKwj8UqBcdaoCnVUv0W4lhIbXtNRFcgz5weM1rfY7m6lO4QUctJSQId57JFuFFTGw
 nfMxomzXWU+79V5XFrEru/MxQ5eLxT5OoPricUsdgAC/8X46L86ihbCX76P+4bk04WrR1kcL
 92MxRXSZon/b+ZXiM1XHnid2lpAQ6QlqSZuvm3qspqNtF8RWWJcT9XABaLnxfhBNp2FaVKKo
 WIJncOThMhXU8rQzXzdGbRcTOD4jxpgDNE7qQU3d6TNChz3oyLzFWyuyGgmTKuWDir0UWCwO
 xKC0e+gzJRSIGGrfcdKj3GZUKwXIVzbPY29DJj8N4MWCrAoLVPv1Hw+NCa4gjG2+GBxwP5XB
 HtuWZv1ZZrsIf88l2TeqiZ0+eJD+x3SMkuJFcynlk/8geTFDJNXIJ9cWGazgikCxPvsiG3oH
 xx3bqNmEj1TD7/zZDf564kWIQxYJHQ3H8mu+cdWavSCMkxtH2R4U63dxrYoeopEmaVJl7iXo
 iHhCxEAkFev12faLQiqa2x4bO+9V5hIsn9mbzcnOkyl2iZ/bN/3vrsfbZY+YZIu6PdnkaxvV
 /AAdsjZWqZPRz3L9i4zd574qIA+Jh2niRjXZ3iuYSQlfo4mTAvMo4e2cgzq/SgILyy2qcph/
 OHwilKFGcIOHl0wAtzXZfSjy0KKkUIcwO8iDVHVJtRzeVn39NQ4ISLGkfJqcdoHLg/Ox2XG2
 l/OUwsYv+TEv6Q87MLN2fKft46sHuZzQhhaEm3c4erkPCXW5DP+k4pJUeLOdjHBTmLkvq6lY
 LwNnf37NfQGmndMspZ9TOk3nf5vuYO3qu8I1BlgEVXKc0+vW+FpLXSx1MVSsrFAm+1CsgysV
 0PTotRXNN1l4i8+/IL98Ob9Utm+6A==
IronPort-HdrOrdr: A9a23:n/V0ZKAxE5aBd+rlHemq55DYdb4zR+YMi2TC1yhKJiC9Ffbo8P
 xG/c5rrCMc5wxxZJhNo7290ey7MBHhHP1OkO0s1NWZPDUO0VHAROoJ0WKh+UyEJ8SXzJ866U
 4KScZD4bPLYWSS9fyKgzWFLw==
X-IronPort-AV: E=Sophos;i="5.87,182,1631592000"; 
   d="scan'208";a="56041630"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
CC: Owen Smith <owen.smith@citrix.com>
Subject: [PATCH 2/4] Update to NDIS 6.30
Date: Tue, 26 Oct 2021 08:12:09 +0100
Message-ID: <20211026071211.1875-2-owen.smith@citrix.com>
X-Mailer: git-send-email 2.33.0.windows.2
In-Reply-To: <20211026071211.1875-1-owen.smith@citrix.com>
References: <20211026071211.1875-1-owen.smith@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain

NDIS 6.30 was introduced in Server 2012. Update XenNet to use the NDIS 6.30
interfaces. No additional features of NDIS 6.30 are used.
Also fixes "NDIS 6.5 GlitchFreeDevice" test by correctly reporting XenNet uses
a WDM lower edge.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 src/xennet.inf               |  7 +++
 src/xennet/adapter.c         | 89 +++++++++++++++++++-----------------
 vs2015/xennet/xennet.vcxproj |  2 +-
 vs2017/xennet/xennet.vcxproj |  2 +-
 vs2019/xennet/xennet.vcxproj |  2 +-
 5 files changed, 56 insertions(+), 46 deletions(-)

diff --git a/src/xennet.inf b/src/xennet.inf
index b36b1e3..f93acba 100644
--- a/src/xennet.inf
+++ b/src/xennet.inf
@@ -166,6 +166,12 @@ HKR, Ndi\params\*RSS,                             Optional,   0, "0"
 HKR, Ndi\params\*RSS\enum,                        "0",        0, %Disabled%
 HKR, Ndi\params\*RSS\enum,                        "1",        0, %Enabled%
 
+HKR, Ndi\params\*NumRSSQueues,                    ParamDesc,  0, %NumRSSQueues%
+HKR, Ndi\params\*NumRSSQueues,                    Type,       0, "int"
+HKR, Ndi\params\*NumRSSQueues,                    Default,    0, "8"
+HKR, Ndi\params\*NumRSSQueues,                    Min,        0, "1"
+HKR, Ndi\params\*NumRSSQueues,                    Max,        0, "8"
+
 [XenNet_Inst.Services] 
 AddService=xennet,0x02,XenNet_Service,XenNet_EventLog
 
@@ -211,6 +217,7 @@ LSOV2IPv6="Large Send Offload V2 (IPv6)"
 LROIPv4="Large Receive Offload (IPv4)"
 LROIPv6="Large Receive Offload (IPv6)"
 RSS="Receive Side Scaling"
+NumRSSQueues="Maximum Number of RSS Queues"
 HeaderDataSplit="Header Data Split"
 Disabled="Disabled"
 Enabled="Enabled"
diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index eaa2c1b..7bfdc4a 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -61,17 +61,18 @@ typedef struct _PROPERTIES {
     int lrov4;
     int lrov6;
     int rss;
+    int numrssqueues;
 } PROPERTIES, *PPROPERTIES;
 
 typedef struct _XENNET_RSS {
-    BOOLEAN Supported;
-    BOOLEAN HashEnabled;
-    BOOLEAN ScaleEnabled;
-    ULONG   Types;
-    UCHAR   Key[NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_1];
-    ULONG   KeySize;
-    CCHAR   Table[NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_1];
-    ULONG   TableSize;
+    BOOLEAN             Supported;
+    BOOLEAN             HashEnabled;
+    BOOLEAN             ScaleEnabled;
+    ULONG               Types;
+    UCHAR               Key[NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_2];
+    ULONG               KeySize;
+    PROCESSOR_NUMBER    Table[NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_2 / sizeof(PROCESSOR_NUMBER)];
+    ULONG               TableCount;
 } XENNET_RSS, *PXENNET_RSS;
 
 struct _XENNET_ADAPTER {
@@ -88,7 +89,7 @@ struct _XENNET_ADAPTER {
 
     NDIS_HANDLE                 NdisAdapterHandle;
     NDIS_HANDLE                 NdisDmaHandle;
-    NDIS_PNP_CAPABILITIES       Capabilities;
+    NDIS_PM_CAPABILITIES        Capabilities;
     NDIS_OFFLOAD                Offload;
     PROPERTIES                  Properties;
     XENNET_RSS                  Rss;
@@ -108,6 +109,7 @@ static NDIS_OID XennetSupportedOids[] =
     OID_GEN_MEDIA_SUPPORTED,
     OID_GEN_MEDIA_IN_USE,
     OID_GEN_PHYSICAL_MEDIUM,
+    OID_GEN_PHYSICAL_MEDIUM_EX,
     OID_GEN_CURRENT_LOOKAHEAD,
     OID_GEN_MAXIMUM_LOOKAHEAD,
     OID_GEN_MAXIMUM_FRAME_SIZE,
@@ -150,7 +152,7 @@ static NDIS_OID XennetSupportedOids[] =
     OID_802_3_XMIT_MORE_COLLISIONS,
     OID_OFFLOAD_ENCAPSULATION,
     OID_TCP_OFFLOAD_PARAMETERS,
-    OID_PNP_CAPABILITIES,
+    OID_PM_CURRENT_CAPABILITIES,
     OID_PNP_QUERY_POWER,
     OID_PNP_SET_POWER,
     OID_GEN_RECEIVE_SCALE_PARAMETERS,
@@ -721,14 +723,12 @@ AdapterDisableRSSHash(
 
 static NDIS_STATUS
 AdapterUpdateRSSTable(
-    IN  PXENNET_ADAPTER Adapter,
-    IN  PCCHAR          Table,
-    IN  ULONG           TableSize
+    IN  PXENNET_ADAPTER     Adapter,
+    IN  PPROCESSOR_NUMBER   Table,
+    IN  ULONG               TableSize
     )
 {
-    PROCESSOR_NUMBER    Mapping[NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_1];
-    ULONG               Index;
-    NTSTATUS            status;
+    NTSTATUS                status;
 
     if (TableSize == 0) {
         AdapterDisableRSSHash(Adapter);
@@ -740,18 +740,12 @@ AdapterUpdateRSSTable(
 
     RtlZeroMemory(Adapter->Rss.Table, sizeof (Adapter->Rss.Table)) ;
     RtlCopyMemory(Adapter->Rss.Table, Table, TableSize);
-    Adapter->Rss.TableSize = TableSize;
-
-    RtlZeroMemory(Mapping, sizeof (Mapping));
-    for (Index = 0; Index < TableSize; Index++) {
-        Mapping[Index].Group = 0;
-        Mapping[Index].Number = Table[Index];
-    }
+    Adapter->Rss.TableCount = TableSize / sizeof(PROCESSOR_NUMBER);
 
     status = XENVIF_VIF(UpdateHashMapping,
                         &Adapter->VifInterface,
-                        Mapping,
-                        TableSize);
+                        Table,
+                        Adapter->Rss.TableCount);
 
     return (NT_SUCCESS(status)) ? NDIS_STATUS_SUCCESS : NDIS_STATUS_INVALID_DATA;
 }
@@ -900,12 +894,12 @@ DisplayRss(
         }
     }
 
-    if (Rss->TableSize != 0) {
+    if (Rss->TableCount != 0) {
         ULONG   Index;
 
         Trace("Table:\n");
 
-        for (Index = 0; Index < Rss->TableSize; ) {
+        for (Index = 0; Index < Rss->TableCount; ) {
             CHAR    Buffer[80];
             STRING  String;
             ULONG   Count;
@@ -916,8 +910,8 @@ DisplayRss(
             String.Length = 0;
 
             Count = 8;
-            if (Index + Count >= Rss->TableSize)
-                Count = Rss->TableSize - Index;
+            if (Index + Count >= Rss->TableCount)
+                Count = Rss->TableCount - Index;
 
             (VOID) StringPrintf(&String, "[%2u - %2u]: ",
                                 Index,
@@ -928,8 +922,9 @@ DisplayRss(
             String.Length = 0;
 
             for (Column = 0; Column < Count; Column++, Index++) {
-                (VOID) StringPrintf(&String, "%02x ",
-                                    Rss->Table[Index]);
+                (VOID) StringPrintf(&String, "%02x:%02x ",
+                                    Rss->Table[Index].Group,
+                                    Rss->Table[Index].Number);
 
                 String.Buffer += String.Length;
                 String.MaximumLength -= String.Length;
@@ -950,8 +945,8 @@ AdapterGetReceiveScaleParameters(
     NDIS_STATUS                         ndisStatus;
 
     ASSERT3U(Parameters->Header.Type, ==, NDIS_OBJECT_TYPE_RSS_PARAMETERS);
-    ASSERT3U(Parameters->Header.Revision, ==, NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1);
-    ASSERT3U(Parameters->Header.Size, >=, NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1);
+    ASSERT3U(Parameters->Header.Revision, ==, NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2);
+    ASSERT3U(Parameters->Header.Size, >=, NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2);
 
     if (!Adapter->Rss.Supported)
         return NDIS_STATUS_NOT_SUPPORTED;
@@ -985,7 +980,7 @@ AdapterGetReceiveScaleParameters(
 
     if (!(Parameters->Flags & NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED)) {
         ndisStatus = AdapterUpdateRSSTable(Adapter,
-                                           (PCCHAR)Parameters + Parameters->IndirectionTableOffset,
+                                           (PPROCESSOR_NUMBER)((PCCHAR)Parameters + Parameters->IndirectionTableOffset),
                                            Parameters->IndirectionTableSize);
         if (ndisStatus != NDIS_STATUS_SUCCESS)
             goto fail;
@@ -2277,7 +2272,7 @@ AdapterQueryInformation(
     ndisStatus = NDIS_STATUS_SUCCESS;
 
     switch (Request->DATA.QUERY_INFORMATION.Oid) {
-    case OID_PNP_CAPABILITIES:
+    case OID_PM_CURRENT_CAPABILITIES:
         BytesNeeded = sizeof(Adapter->Capabilities);
         ndisStatus = __CopyBuffer(Buffer,
                                   BufferLength,
@@ -2926,6 +2921,7 @@ AdapterGetAdvancedSettings(
     READ_PROPERTY(Adapter->Properties.lrov6, L"LROIPv6", 1, Handle);
     READ_PROPERTY(Adapter->Properties.need_csum_value, L"NeedChecksumValue", 1, Handle);
     READ_PROPERTY(Adapter->Properties.rss, L"*RSS", 1, Handle);
+    READ_PROPERTY(Adapter->Properties.numrssqueues, L"*NumRSSQueues", 8, Handle);
 
     NdisCloseConfiguration(Handle);
 
@@ -2949,11 +2945,12 @@ AdapterSetRegistrationAttributes(
 
     RtlZeroMemory(&Attribs, sizeof(Attribs));
     Attribs.Header.Type = NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES;
-    Attribs.Header.Revision = NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES_REVISION_1;
-    Attribs.Header.Size = NDIS_SIZEOF_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES_REVISION_1;
+    Attribs.Header.Revision = NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES_REVISION_2;
+    Attribs.Header.Size = NDIS_SIZEOF_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES_REVISION_2;
     Attribs.MiniportAdapterContext = (NDIS_HANDLE)Adapter;
     Attribs.AttributeFlags = NDIS_MINIPORT_ATTRIBUTES_BUS_MASTER |
-                             NDIS_MINIPORT_ATTRIBUTES_NO_HALT_ON_SUSPEND;
+                             NDIS_MINIPORT_ATTRIBUTES_NO_HALT_ON_SUSPEND |
+                             NDIS_MINIPORT_ATTRIBUTES_NDIS_WDM;
     Attribs.CheckForHangTimeInSeconds = 0;
     Attribs.InterfaceType = XENNET_INTERFACE_TYPE;
 
@@ -2976,8 +2973,8 @@ AdapterSetGeneralAttributes(
 
     RtlZeroMemory(&Attribs, sizeof(Attribs));
     Attribs.Header.Type = NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES;
-    Attribs.Header.Revision = NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES_REVISION_1;
-    Attribs.Header.Size = NDIS_SIZEOF_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES_REVISION_1;
+    Attribs.Header.Revision = NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES_REVISION_2;
+    Attribs.Header.Size = NDIS_SIZEOF_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES_REVISION_2;
     Attribs.MediaType = XENNET_MEDIA_TYPE;
 
     XENVIF_VIF(MacQueryMaximumFrameSize,
@@ -2992,7 +2989,7 @@ AdapterSetGeneralAttributes(
     Attribs.MediaConnectState = MediaConnectStateConnected;
     Attribs.MediaDuplexState = MediaDuplexStateFull;
     Attribs.LookaheadSize = Adapter->MaximumFrameSize;
-    Attribs.PowerManagementCapabilities = &Adapter->Capabilities;
+    Attribs.PowerManagementCapabilitiesEx = &Adapter->Capabilities;
     Attribs.MacOptions = XENNET_MAC_OPTIONS;
     Attribs.SupportedPacketFilters = XENNET_SUPPORTED_PACKET_FILTERS;
     Attribs.MaxMulticastListSize = 32;
@@ -3054,8 +3051,8 @@ AdapterSetGeneralAttributes(
 
     RtlZeroMemory(&Rss, sizeof(Rss));
     Rss.Header.Type = NDIS_OBJECT_TYPE_RSS_CAPABILITIES;
-    Rss.Header.Revision = NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_1;
-    Rss.Header.Size = NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_1;
+    Rss.Header.Revision = NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2;
+    Rss.Header.Size = NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_2;
 
     Rss.CapabilitiesFlags = NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS |
                             NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR |
@@ -3073,6 +3070,12 @@ AdapterSetGeneralAttributes(
                &Rss.NumberOfReceiveQueues);
     Rss.NumberOfInterruptMessages = Rss.NumberOfReceiveQueues;
 
+    if ((ULONG)Adapter->Properties.numrssqueues < Rss.NumberOfReceiveQueues)
+        Rss.NumberOfReceiveQueues = Adapter->Properties.numrssqueues;
+
+    Rss.NumberOfInterruptMessages = Rss.NumberOfReceiveQueues;
+    Rss.NumberOfIndirectionTableEntries = 128; // WHQL requirement for NDIS 6.30
+
     Info("%ws: RSS ENABLED (%u QUEUES)\n",
          Adapter->Location,
          Rss.NumberOfReceiveQueues);
diff --git a/vs2015/xennet/xennet.vcxproj b/vs2015/xennet/xennet.vcxproj
index 2d04c4e..b68d734 100644
--- a/vs2015/xennet/xennet.vcxproj
+++ b/vs2015/xennet/xennet.vcxproj
@@ -22,7 +22,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS61_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS630_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;</AdditionalIncludeDirectories>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4464;4711;4548;4820;4668;4255;6001;6054;28160;28196;30030;30029;%(DisableSpecificWarnings)</DisableSpecificWarnings>
diff --git a/vs2017/xennet/xennet.vcxproj b/vs2017/xennet/xennet.vcxproj
index 0c27304..130b0e6 100644
--- a/vs2017/xennet/xennet.vcxproj
+++ b/vs2017/xennet/xennet.vcxproj
@@ -22,7 +22,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS61_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS630_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;</AdditionalIncludeDirectories>
       <WarningLevel>EnableAllWarnings</WarningLevel>
diff --git a/vs2019/xennet/xennet.vcxproj b/vs2019/xennet/xennet.vcxproj
index d79a691..1ad5601 100644
--- a/vs2019/xennet/xennet.vcxproj
+++ b/vs2019/xennet/xennet.vcxproj
@@ -21,7 +21,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS61_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS630_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;</AdditionalIncludeDirectories>
       <WarningLevel>EnableAllWarnings</WarningLevel>
-- 
2.33.0.windows.2



From win-pv-devel-bounces@lists.xenproject.org Tue Oct 26 07:12:31 2021
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Oct 2021 07:12:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.216220.375762 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mfGdL-0002fu-LR; Tue, 26 Oct 2021 07:12:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 216220.375762; Tue, 26 Oct 2021 07:12:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mfGdL-0002fn-Ic; Tue, 26 Oct 2021 07:12:31 +0000
Received: by outflank-mailman (input) for mailman id 216220;
 Tue, 26 Oct 2021 07:12:30 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=dtJc=PO=citrix.com=owen.smith@srs-us1.protection.inumbo.net>)
 id 1mfGdK-0002dN-9Z
 for win-pv-devel@lists.xenproject.org; Tue, 26 Oct 2021 07:12:30 +0000
Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e9144141-f17e-4702-9a1c-a5ae0e855984;
 Tue, 26 Oct 2021 07:12:25 +0000 (UTC)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e9144141-f17e-4702-9a1c-a5ae0e855984
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1635232345;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=9R//7ulPdL00dTm6XRFG4znxwvt5c925rlkJyjtVKNA=;
  b=H7tTW75s4hxJkZdO3RPranT8PGVnxAWVlU47xKJR9G3OgFhmyp6DmCw3
   Ci+2epneBFV0BGfEx0aZMjm92BmEaqSgHjrKIgJrumYuoRRr+baH9UTMM
   KoFEiAwbFnXb8LEo5ZmHQ3+QyU43NtDAduHsFektbOgncisVClvCVZpet
   U=;
Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
IronPort-SDR: mL0RLQbIqCOd+oPAWU8fO1POWFOupSl5FLPIoma6lLcQ81PrCUfPed9WEp49aR1O01P1+G48hD
 qA5fJNUUqGaH99jB2K45sttqOb2MlcnIxA2EdfeuFn/qEH/eQCaHLM6vjP92FiL/L1tzuduJFO
 LbJe+vzrSYL51+hQC/HibFcwstahxqEbefDZ3AYevbg7K0GDXwg95tlLmfZg6S6PvmHHxX2CKH
 fs/ogBivpARQChoXMxHBtWNd7wtNyQYZZgGxHe0JYg3mFk0e2T+roD8s9oRU9g9RReNVov7p71
 EnQ2ojtKPFBHOra7I1pfOaLn
X-SBRS: 5.1
X-MesageID: 56041636
X-Ironport-Server: esa6.hc3370-68.iphmx.com
X-Remote-IP: 162.221.156.83
X-Policy: $RELAYED
IronPort-Data: A9a23:VR35yK4lvIvFY8fdtafPMgxRtBzAchMFZxGqfqrLsTDasY5as4F+v
 jMWDzuDP/7cZTPxftkjaYTioxhXscLTyoBmQVFq/Cs3Hi5G8cbLO4+Ufxz6V8+wwmwvb67FA
 +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FVAMpBsJ00o5wrdh2NAw27BVPivW0
 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb
 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Z5
 cpxisa0Vz4VJ5LthvQAekFRUA9HIvgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr
 7pCcmlLN03dwbLtqF64YrAEasALK9bmOsUEv3B8zRnSDOo8QICFSKLPjTNd9Gpu3pwXQ62AD
 yYfQRNvMxrfbRJUAFUWVpUStfqTrWjVfBQN/Tp5ooJoujOOnWSdyoPFL9vTP8SUAMlYgEucj
 mbH5HjiRAEXMsSFzjiI+W7qgfXA9R4XQ6pLSuf+rKQzxgTOmCpDU3X6SGdXv9GUlXKBAdZBE
 nANxQswvbUbrEXoYODiCkjQTGG/gjYQXN9ZEusf4Q6Ly7bJ7wvxOlXoXgKte/R965doHW1CO
 kuh2oqzX2Q24eL9pWe1r+/M9VuP1T4pwXjujMPuZTAO5MX/u8kNhxbLQ8cL/EWd34CtR2+YL
 9xnqkEDa1QvYSwji/rTEbPv2WvESn31oukdvV2/Y45dxlklDLNJnqTxgbQh0d5OLZyCUn6Kt
 2Uels6V4YgmVM/WyXXdELxcTeH4tp5p1QEwZnY0R/EcG8mFoSb/Lei8HhknfC+FzfroiRe2O
 RSO6Gu9FbdYPWewbL8fXm5CI59C8EQULvy8Dqq8RoMXOvBZLVbblAkzNR/49z28yyAEzPBgU
 ap3hO7xVB72/4w8l2HoLwrcuJd2rh0DKZT7H8Cnk038iurAPxZ4i94taTOzUwzw14vcyC29z
 jqVH5HiJ8x3XLKsby/J35QUKFxWf3E3CYqv855cd/KZIxogE2YkUqeDzbQkco1jvqJUiuaXo
 S3tBh4GkALy1S/dNAGHSnF/c7ezD5xxmm02YH43NlGy1nl9PYv2tPUDd4E6dKUM/fB4yaImV
 OEMfsiNW6wdSjnO9zkHQ4P6qYhuKEaiiQ6UZnL3azkjZZ9wAQfO/4a8LAfo8SAPCAuxtNc//
 OL8hl+KH8JbSl07XsjMaf+pw1eghlQnmbp/DxnSP91eWETw64w2eSb/ueA6fpMXIhLZyzrEi
 wvPWUUEpfPAqpMe+cXSgfzWtJ+gFuZzExYIH2Tf6rrqZyDW8nD6nN1FWeeMOzvcSHn16OOpY
 uAMl6PwN/gOnVBrtYtgEuk0kfJitoW3/7IKnB55GHjrbkiwDuIyK3aL6sBDq6lRy+ILogCxQ
 E+OpoFXNLjh1BkJy7LNyN7Jtti+6Mw=
IronPort-HdrOrdr: A9a23:/aDhpaEkOekFvZrWpLqE5seALOsnbusQ8zAXPiFKJSC9F/byqy
 nAppsmPHPP5gr5OktBpTnwAsi9qBrnnPYejLX5Vo3SPzUO1lHYSb1K3M/PxCDhBj271sM179
 YFT0GmMqyTMWRH
X-IronPort-AV: E=Sophos;i="5.87,182,1631592000"; 
   d="scan'208";a="56041636"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
CC: Owen Smith <owen.smith@citrix.com>
Subject: [PATCH 4/4] Use NDIS 6.85 interfaces, if available
Date: Tue, 26 Oct 2021 08:12:11 +0100
Message-ID: <20211026071211.1875-4-owen.smith@citrix.com>
X-Mailer: git-send-email 2.33.0.windows.2
In-Reply-To: <20211026071211.1875-1-owen.smith@citrix.com>
References: <20211026071211.1875-1-owen.smith@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain

NDIS 6.85 was introduced in Server 2022, and the "NICStrictPropertyValidation"
test requires that drivers for Server 2022 declare support for NDIS 6.85.
Conditionally include the minimum NDIS 6.85 support, if available in the WDK,
in order to pass this test. No additional features of NDIS 6.85 have been
included.
NDIS_RUNTIME_VERSION_685 is only defined if the ndis.h header is from WDK 20384
or later, and NDIS685_MINIPORT is defined by the project.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 src/xennet/adapter.c         | 46 ++++++++++++++++++++++++++----------
 src/xennet/miniport.c        | 13 ++++++++--
 vs2019/xennet/xennet.vcxproj |  2 +-
 3 files changed, 45 insertions(+), 16 deletions(-)

diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index b47e5e7..c075f5e 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -360,6 +360,12 @@ AdapterIndicateOffloadChanged(
     RtlZeroMemory(&Current, sizeof(Current));
     Current.Header.Type = NDIS_OBJECT_TYPE_OFFLOAD;
 
+#ifdef NDIS_RUNTIME_VERSION_685
+    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_685) {
+        Current.Header.Revision = NDIS_OFFLOAD_REVISION_6;
+        Current.Header.Size = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_6;
+    } else
+#endif
     if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660) {
         Current.Header.Revision = NDIS_OFFLOAD_REVISION_4;
         Current.Header.Size = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_4;
@@ -453,6 +459,11 @@ AdapterIndicateOffloadChanged(
     Status.StatusCode = NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG;
     Status.StatusBuffer = &Current;
 
+#ifdef NDIS_RUNTIME_VERSION_685
+    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_685)
+        Status.StatusBufferSize = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_6;
+    else
+#endif
     if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660)
         Status.StatusBufferSize = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_4;
     else
@@ -2411,19 +2422,22 @@ AdapterQueryInformation(
 
     case OID_GEN_DRIVER_VERSION:
         BytesNeeded = sizeof(ULONG);
-        if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660) {
-            ndisStatus = __SetUlong(Buffer,
-                                    BufferLength,
-                                    (NDIS_MINIPORT_MAJOR_VERSION << 8) |
-                                    NDIS_MINIPORT_MINOR_VERSION,
-                                    &BytesWritten);
-        } else {
-            ndisStatus = __SetUlong(Buffer,
-                                    BufferLength,
-                                    (NDIS_MINIPORT_MINIMUM_MAJOR_VERSION << 8) |
-                                    NDIS_MINIPORT_MINIMUM_MINOR_VERSION,
-                                    &BytesWritten);
-        }
+#ifdef NDIS_RUNTIME_VERSION_685
+        if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_685)
+            Value32 = (NDIS_MINIPORT_MAJOR_VERSION << 8) |
+                       NDIS_MINIPORT_MINOR_VERSION;
+        else
+#endif
+        if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660)
+            Value32 = (6 << 8) | 60; // NDIS 6.60
+        else
+            Value32 = (NDIS_MINIPORT_MINIMUM_MAJOR_VERSION << 8) |
+                       NDIS_MINIPORT_MINIMUM_MINOR_VERSION;
+
+        ndisStatus = __SetUlong(Buffer,
+                                BufferLength,
+                                Value32,
+                                &BytesWritten);
         break;
 
     case OID_GEN_MAC_OPTIONS:
@@ -3182,6 +3196,12 @@ AdapterSetOffloadAttributes(
     RtlZeroMemory(&Supported, sizeof(Supported));
     Supported.Header.Type = NDIS_OBJECT_TYPE_OFFLOAD;
 
+#ifdef NDIS_RUNTIME_VERSION_685
+    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_685) {
+        Supported.Header.Revision = NDIS_OFFLOAD_REVISION_6;
+        Supported.Header.Size = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_6;
+    } else
+#endif
     if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660) {
         Supported.Header.Revision = NDIS_OFFLOAD_REVISION_4;
         Supported.Header.Size = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_4;
diff --git a/src/xennet/miniport.c b/src/xennet/miniport.c
index e24e1ad..f714909 100644
--- a/src/xennet/miniport.c
+++ b/src/xennet/miniport.c
@@ -342,9 +342,18 @@ MiniportRegister(
     MiniportDriverCharacteristics.Header.Size = NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2;
     MiniportDriverCharacteristics.Header.Revision = NDIS_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2;
 
-    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660) {
+#ifdef NDIS_RUNTIME_VERSION_685
+    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_685) {
+        MiniportDriverCharacteristics.Header.Size = NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_3;
+        MiniportDriverCharacteristics.Header.Revision = NDIS_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_3;
+
         MiniportDriverCharacteristics.MajorNdisVersion = NDIS_MINIPORT_MAJOR_VERSION; // 6
-        MiniportDriverCharacteristics.MinorNdisVersion = NDIS_MINIPORT_MINOR_VERSION; // 60
+        MiniportDriverCharacteristics.MinorNdisVersion = NDIS_MINIPORT_MINOR_VERSION; // 85
+    } else
+#endif
+    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660) {
+        MiniportDriverCharacteristics.MajorNdisVersion = 6;
+        MiniportDriverCharacteristics.MinorNdisVersion = 60;
     } else {
         MiniportDriverCharacteristics.MajorNdisVersion = NDIS_MINIPORT_MINIMUM_MAJOR_VERSION; // 6
         MiniportDriverCharacteristics.MinorNdisVersion = NDIS_MINIPORT_MINIMUM_MINOR_VERSION; // 30
diff --git a/vs2019/xennet/xennet.vcxproj b/vs2019/xennet/xennet.vcxproj
index 2eba039..cee1325 100644
--- a/vs2019/xennet/xennet.vcxproj
+++ b/vs2019/xennet/xennet.vcxproj
@@ -21,7 +21,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS630_MINIPORT=1;NDIS660_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS630_MINIPORT=1;NDIS660_MINIPORT=1;NDIS685_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;</AdditionalIncludeDirectories>
       <WarningLevel>EnableAllWarnings</WarningLevel>
-- 
2.33.0.windows.2



From win-pv-devel-bounces@lists.xenproject.org Tue Oct 26 07:12:51 2021
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Oct 2021 07:12:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.216229.375766 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mfGdf-0002mx-O2; Tue, 26 Oct 2021 07:12:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 216229.375766; Tue, 26 Oct 2021 07:12:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1mfGdf-0002mq-LE; Tue, 26 Oct 2021 07:12:51 +0000
Received: by outflank-mailman (input) for mailman id 216229;
 Tue, 26 Oct 2021 07:12:50 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=dtJc=PO=citrix.com=owen.smith@srs-us1.protection.inumbo.net>)
 id 1mfGde-0002iv-9S
 for win-pv-devel@lists.xenproject.org; Tue, 26 Oct 2021 07:12:50 +0000
Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c1e4a4b8-3563-4a81-b06f-3658500e8267;
 Tue, 26 Oct 2021 07:12:42 +0000 (UTC)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c1e4a4b8-3563-4a81-b06f-3658500e8267
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1635232362;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=86+OPbYrRkWyPknGQUHcYkfRFMM62kjXjs0IGxVqMbg=;
  b=Go2HSxnVC7TaDX4PM2HanGooNEjlvWFuAEdKwOaA8Cks/reJZjDel/B4
   IPfr6XOEIy91k182zQhIh7eSrKjaAonvaP7Mm4jQdkJJjFOEJMtTyHhp/
   zDuhirI6HdyhwEWgXqkPINOuyA2SYUVV64/23T6/I7s3X6bfC0VeQ50p2
   Q=;
Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
IronPort-SDR: u+B0kn/0pkzKcwcg24yNPwlm9uCx2Z0btq0XMZpE4NfV+mXX+POnkWVfGoaGTckVDMtMCUR2ya
 HgLpfufoqJjuWdU/lPpabB/htjoqOx7alY91/gm3DxmOkmMS/KvmTCcYm+rMbXjcqUHHfEYNQr
 5J7fKLSZaeV52KOJD8+d0sWtS5faRS+158ts3CR/fM2jHj8EUN6djrVdhaK/a23ndbXZBWw3g4
 7tDmsU1FbZTqejEeWpXRkcZndYixhBYBG/9Zc1dO2WI1k0BgJKdUoZMQaOrWS7GLnG9UqFlsNt
 sjGXJm3T8yNIzl8UY8j1dqnR
X-SBRS: 5.1
X-MesageID: 56447443
X-Ironport-Server: esa1.hc3370-68.iphmx.com
X-Remote-IP: 162.221.156.83
X-Policy: $RELAYED
IronPort-Data: A9a23:zf+soKgQPkWJ1xiB8FIZYRxmX161RBcKZh0ujC45NGQN5FlHY01je
 htvXmzVOv3YYGr3ct5wbd7g8ktQ75PXzoJkSAM9+StmEi8b9cadCdqndUqhZCn6wu8v7a5EA
 2fyTvGacajYm1eF/k/F3oAMKRCQ7InQLlbGILes1htZGEk0F0/NtTo5w7Rg29Yy34Dja++wk
 YiaT/P3aQfNNwFcagr424rbwP+4lK2v0N+wlgVWicFj5DcypVFMZH4sDfjZw0/DaptVBoaHq
 9Prl9lVyI97EyAFUbtJmp6jGqEDryW70QKm0hK6UID66vROS7BbPg/W+5PwZG8O4whlkeydx
 /1fioWsbw1qPZHFgbkyThhoLAdwJYt/reqvzXiX6aR/zmXDenrohf5vEFs3LcsT/eMf7WNmr
 KJCbmpXN1ba2rzwkOnTpupE36zPKOHsI44Z/GplzC3ZJf0nXYrCU+PB4towMDIY254SQamCO
 5FxhTxHNUr/QDRyIUgrS5NizNWPo3PBUi1YgQfAzUYwyzeKl1EguFT3C/LKe9rPXdsQkkuGq
 2bu+2XiHgpcJNGZ0SCC8H+nmqnIhyyTZW4JPOTmrLgw2gTVnzFNTk1NPbemnRWnolyBQs55I
 Q8XxiM38Icv9XyUaNfleSTt9RZooSUgc9ZXFuQ77iSExazV/xuVCwA4c9JRVDA1nJRpHWJyh
 zdli/usXGY16OTEFhpx45/N9WvqURX5O1PucsPtoeEt2NLkvJ0oxizGStJuAcZZZfWkRGmun
 VhmQMU47oj/bPLnNY3nojgrYBr2//AlqzLZAS2MBgqYAvtRPtLNWmBRwQGzAQx8BIiYVEKdm
 3MPhtKT6usDZbnUynfQGbVdReD4t6fUWNE5vbKIN8J5nwlBBlb5JdwAiN2ADB4xWir7RdMZS
 BCK4l4AjHOiFHCrcbV2c+qM5zcClsDd+SDefqmMNLJmO8EpHCfepX0GTRPAjgjFzRl3+Ylia
 MjzTCpZJStDYUiR5GHtHLl1PH5C7n1W+F4/srihn0j7iOHFNCDOIVrHWXPXBt0EAGq/iF292
 75i2wGikX2zicXyPXva95A9N1cPISRpDJz6sZUPJOWCPhBnCCcqDPqImeEtfIlsnqJ0kObU/
 y7iBh8EmQSn3XCXex+Xbn1Daa/0Wcotp3wMIiFxb02j3GIuYNjz4f5HJYc3Z7Qu6Mdq0eVwE
 6seY8yFD/kWEmbH9j0RYIPTtotncBj31wuCMzD8OGo0foJ6RhyP8djhJ1O9+C4LByuxlM0/v
 7z/iV+LHctdH1xvVZ+EZuiuwlW9uWkmtNhzB0aYcMNOfEjM8ZRxL3CjhPEAPMxRew7IwSGX1
 ljKDE5A9/XNuYI87PLAmbuA89WyC+J7E0dXQzvb4LKxOXWI92av29YdAuOBfDSbX2Lo4qSyI
 +5SyqikYvEAmV9Ltat6Eqpqkv1it4e++ecCw1Q2BmjPYnSqFqhkcyuP0sR4v6FQwqNU5FmtU
 UWV99gGYbiENasJyrLKyNbJughb6cwppw==
IronPort-HdrOrdr: A9a23:rO1LLqMo5fwgmsBcTvmjsMiBIKoaSvp037Eqv3oedfUzSL3/qy
 nOpoVi6faaslYssR0b9exofZPwJE80lqQFhrX5X43SPzUO0VHAROoJgLcKgQeQfxEWntQtrJ
 uIGJIeNDSfNzdHZL7BkWuFL+o=
X-IronPort-AV: E=Sophos;i="5.87,182,1631592000"; 
   d="scan'208";a="56447443"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
CC: Owen Smith <owen.smith@citrix.com>
Subject: [PATCH 3/4] Use NDIS 6.60 interfaces, if supported
Date: Tue, 26 Oct 2021 08:12:10 +0100
Message-ID: <20211026071211.1875-3-owen.smith@citrix.com>
X-Mailer: git-send-email 2.33.0.windows.2
In-Reply-To: <20211026071211.1875-1-owen.smith@citrix.com>
References: <20211026071211.1875-1-owen.smith@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain

Server 2016 introduced NDIS 6.60, update the interfaces to use NDIS 6.60 if
the reported NDIS runtime version supports this. No additional features of
NDIS 6.60 are used.
Also corrects the PhysicalMediaType property, which would otherwise block
functionality

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 src/xennet.inf               |   2 +-
 src/xennet/adapter.c         | 104 ++++++++++++++++++++++++++---------
 src/xennet/miniport.c        |  12 +++-
 vs2015/xennet/xennet.vcxproj |   2 +-
 vs2017/xennet/xennet.vcxproj |   2 +-
 vs2019/xennet/xennet.vcxproj |   2 +-
 6 files changed, 91 insertions(+), 33 deletions(-)

diff --git a/src/xennet.inf b/src/xennet.inf
index f93acba..655bac6 100644
--- a/src/xennet.inf
+++ b/src/xennet.inf
@@ -70,7 +70,7 @@ Characteristics=0x84
 BusType=1
 *IfType=6             	; IF_TYPE_ETHERNET_CSMACD
 *MediaType=0          	; NdisMedium802_3
-*PhysicalMediaType=0	; NdisPhysicalMediumUnspecified
+*PhysicalMediaType=14	; NdisPhysicalMedium802_3
 CopyFiles=XenNet_Copyfiles
 AddReg=Xennet_Inst_AddReg
 
diff --git a/src/xennet/adapter.c b/src/xennet/adapter.c
index 7bfdc4a..b47e5e7 100644
--- a/src/xennet/adapter.c
+++ b/src/xennet/adapter.c
@@ -359,8 +359,14 @@ AdapterIndicateOffloadChanged(
 
     RtlZeroMemory(&Current, sizeof(Current));
     Current.Header.Type = NDIS_OBJECT_TYPE_OFFLOAD;
-    Current.Header.Revision = NDIS_OFFLOAD_REVISION_2;
-    Current.Header.Size = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_2;
+
+    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660) {
+        Current.Header.Revision = NDIS_OFFLOAD_REVISION_4;
+        Current.Header.Size = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_4;
+    } else {
+        Current.Header.Revision = NDIS_OFFLOAD_REVISION_3;
+        Current.Header.Size = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_3;
+    }
 
     Current.Checksum.IPv4Receive.Encapsulation = NDIS_ENCAPSULATION_IEEE_802_3;
 
@@ -446,7 +452,11 @@ AdapterIndicateOffloadChanged(
     Status.Header.Size = NDIS_SIZEOF_STATUS_INDICATION_REVISION_1;
     Status.StatusCode = NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG;
     Status.StatusBuffer = &Current;
-    Status.StatusBufferSize = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_2;
+
+    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660)
+        Status.StatusBufferSize = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_4;
+    else
+        Status.StatusBufferSize = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_3;
 
     NdisMIndicateStatusEx(Adapter->NdisAdapterHandle, &Status);
 }
@@ -939,14 +949,21 @@ DisplayRss(
 static NDIS_STATUS
 AdapterGetReceiveScaleParameters(
     IN  PXENNET_ADAPTER                 Adapter,
-    IN  PNDIS_RECEIVE_SCALE_PARAMETERS  Parameters
+    IN  PNDIS_RECEIVE_SCALE_PARAMETERS  Parameters,
+    OUT PULONG                          BytesRead
     )
 {
     NDIS_STATUS                         ndisStatus;
 
     ASSERT3U(Parameters->Header.Type, ==, NDIS_OBJECT_TYPE_RSS_PARAMETERS);
-    ASSERT3U(Parameters->Header.Revision, ==, NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2);
-    ASSERT3U(Parameters->Header.Size, >=, NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2);
+
+    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660) {
+        ASSERT3U(Parameters->Header.Revision, ==, NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_3);
+        ASSERT3U(Parameters->Header.Size, >=, NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3);
+    } else {
+        ASSERT3U(Parameters->Header.Revision, ==, NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2);
+        ASSERT3U(Parameters->Header.Size, >=, NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2);
+    }
 
     if (!Adapter->Rss.Supported)
         return NDIS_STATUS_NOT_SUPPORTED;
@@ -957,6 +974,11 @@ AdapterGetReceiveScaleParameters(
     if (Adapter->Rss.HashEnabled)
         return NDIS_STATUS_NOT_SUPPORTED;
 
+    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660)
+        *BytesRead = NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3;
+    else
+        *BytesRead = NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2;
+
     if (!(Parameters->Flags & NDIS_RSS_PARAM_FLAG_DISABLE_RSS)) {
         Adapter->Rss.ScaleEnabled = TRUE;
     } else {
@@ -976,6 +998,7 @@ AdapterGetReceiveScaleParameters(
                                          Parameters->HashSecretKeySize);
         if (ndisStatus != NDIS_STATUS_SUCCESS)
             goto fail;
+        *BytesRead += Parameters->HashSecretKeySize;
     }
 
     if (!(Parameters->Flags & NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED)) {
@@ -984,6 +1007,7 @@ AdapterGetReceiveScaleParameters(
                                            Parameters->IndirectionTableSize);
         if (ndisStatus != NDIS_STATUS_SUCCESS)
             goto fail;
+        *BytesRead += Parameters->IndirectionTableSize;
     }
 
     DisplayRss(&Adapter->Rss);
@@ -2111,7 +2135,8 @@ AdapterSetInformation(
         if (BufferLength == BytesNeeded) {
             ndisStatus = AdapterSetPacketFilter(Adapter,
                                                 (PULONG)Buffer);
-            BytesRead = sizeof(ULONG);
+            if (ndisStatus == NDIS_STATUS_SUCCESS)
+                BytesRead = sizeof(ULONG);
         }
         break;
 
@@ -2141,24 +2166,26 @@ AdapterSetInformation(
         break;
 
     case OID_TCP_OFFLOAD_PARAMETERS:
-        BytesNeeded = NDIS_OFFLOAD_PARAMETERS_REVISION_2;
+        BytesNeeded = NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_3;
         if (BufferLength >= BytesNeeded) {
             ndisStatus = AdapterGetTcpOffloadParameters(Adapter,
                                                         (PNDIS_OFFLOAD_PARAMETERS)Buffer);
             if (ndisStatus == NDIS_STATUS_SUCCESS)
-                BytesRead = NDIS_OFFLOAD_PARAMETERS_REVISION_2;
+                BytesRead = NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_3;
         } else {
             ndisStatus = NDIS_STATUS_INVALID_LENGTH;
         }
         break;
 
     case OID_GEN_RECEIVE_SCALE_PARAMETERS:
-        BytesNeeded = NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1;
+        if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660)
+            BytesNeeded = NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_3;
+        else
+            BytesNeeded = NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2;
         if (BufferLength >= BytesNeeded) {
             ndisStatus = AdapterGetReceiveScaleParameters(Adapter,
-                                                          (PNDIS_RECEIVE_SCALE_PARAMETERS)Buffer);
-            if (ndisStatus == NDIS_STATUS_SUCCESS)
-                BytesRead = sizeof(NDIS_RECEIVE_SCALE_PARAMETERS);
+                                                          (PNDIS_RECEIVE_SCALE_PARAMETERS)Buffer,
+                                                          &BytesRead);
         } else {
             ndisStatus = NDIS_STATUS_INVALID_LENGTH;
         }
@@ -2183,7 +2210,7 @@ AdapterSetInformation(
         /*FALLTHRU*/
     default:
         if (Warn)
-            Warning("UNSUPPORTED OID %08x\n", Request->DATA.QUERY_INFORMATION.Oid);
+            Warning("UNSUPPORTED OID %08x\n", Request->DATA.SET_INFORMATION.Oid);
 
         ndisStatus = NDIS_STATUS_NOT_SUPPORTED;
         break;
@@ -2384,11 +2411,19 @@ AdapterQueryInformation(
 
     case OID_GEN_DRIVER_VERSION:
         BytesNeeded = sizeof(ULONG);
-        ndisStatus = __SetUlong(Buffer,
-                                BufferLength,
-                                (NDIS_MINIPORT_MAJOR_VERSION << 8) |
-                                NDIS_MINIPORT_MINOR_VERSION,
-                                &BytesWritten);
+        if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660) {
+            ndisStatus = __SetUlong(Buffer,
+                                    BufferLength,
+                                    (NDIS_MINIPORT_MAJOR_VERSION << 8) |
+                                    NDIS_MINIPORT_MINOR_VERSION,
+                                    &BytesWritten);
+        } else {
+            ndisStatus = __SetUlong(Buffer,
+                                    BufferLength,
+                                    (NDIS_MINIPORT_MINIMUM_MAJOR_VERSION << 8) |
+                                    NDIS_MINIPORT_MINIMUM_MINOR_VERSION,
+                                    &BytesWritten);
+        }
         break;
 
     case OID_GEN_MAC_OPTIONS:
@@ -2729,9 +2764,9 @@ AdapterQueryInformation(
     case OID_GEN_MAC_ADDRESS:
     case OID_GEN_MAX_LINK_SPEED:
         // ignore these common unwanted OIDs
-	case OID_GEN_INIT_TIME_MS:
-	case OID_GEN_RESET_COUNTS:
-	case OID_GEN_MEDIA_SENSE_COUNTS:
+    case OID_GEN_INIT_TIME_MS:
+    case OID_GEN_RESET_COUNTS:
+    case OID_GEN_MEDIA_SENSE_COUNTS:
         Warn = FALSE;
         /*FALLTHRU*/
     default:
@@ -2971,6 +3006,11 @@ AdapterSetGeneralAttributes(
     NDIS_STATUS                                 ndisStatus;
     NTSTATUS                                    status;
 
+    RtlZeroMemory(&Adapter->Capabilities, sizeof(Adapter->Capabilities));
+    Adapter->Capabilities.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
+    Adapter->Capabilities.Header.Revision = NDIS_PM_CAPABILITIES_REVISION_2;
+    Adapter->Capabilities.Header.Size = NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_2;
+
     RtlZeroMemory(&Attribs, sizeof(Attribs));
     Attribs.Header.Type = NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES;
     Attribs.Header.Revision = NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES_REVISION_2;
@@ -3051,8 +3091,14 @@ AdapterSetGeneralAttributes(
 
     RtlZeroMemory(&Rss, sizeof(Rss));
     Rss.Header.Type = NDIS_OBJECT_TYPE_RSS_CAPABILITIES;
-    Rss.Header.Revision = NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2;
-    Rss.Header.Size = NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_2;
+
+    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660) {
+        Rss.Header.Revision = NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_3;
+        Rss.Header.Size = NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_3;
+    } else {
+        Rss.Header.Revision = NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2;
+        Rss.Header.Size = NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_2;
+    }
 
     Rss.CapabilitiesFlags = NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS |
                             NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR |
@@ -3135,8 +3181,14 @@ AdapterSetOffloadAttributes(
 
     RtlZeroMemory(&Supported, sizeof(Supported));
     Supported.Header.Type = NDIS_OBJECT_TYPE_OFFLOAD;
-    Supported.Header.Revision = NDIS_OFFLOAD_REVISION_2;
-    Supported.Header.Size = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_2;
+
+    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660) {
+        Supported.Header.Revision = NDIS_OFFLOAD_REVISION_4;
+        Supported.Header.Size = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_4;
+    } else {
+        Supported.Header.Revision = NDIS_OFFLOAD_REVISION_3;
+        Supported.Header.Size = NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_3;
+    }
 
     Supported.Checksum.IPv4Receive.Encapsulation = NDIS_ENCAPSULATION_IEEE_802_3;
 
diff --git a/src/xennet/miniport.c b/src/xennet/miniport.c
index 5b69315..e24e1ad 100644
--- a/src/xennet/miniport.c
+++ b/src/xennet/miniport.c
@@ -338,12 +338,18 @@ MiniportRegister(
 
     NdisZeroMemory(&MiniportDriverCharacteristics, sizeof (MiniportDriverCharacteristics));
 
-    MiniportDriverCharacteristics.Header.Type = NDIS_OBJECT_TYPE_MINIPORT_DRIVER_CHARACTERISTICS,
+    MiniportDriverCharacteristics.Header.Type = NDIS_OBJECT_TYPE_MINIPORT_DRIVER_CHARACTERISTICS;
     MiniportDriverCharacteristics.Header.Size = NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2;
     MiniportDriverCharacteristics.Header.Revision = NDIS_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2;
 
-    MiniportDriverCharacteristics.MajorNdisVersion = NDIS_MINIPORT_MAJOR_VERSION;
-    MiniportDriverCharacteristics.MinorNdisVersion = NDIS_MINIPORT_MINOR_VERSION;
+    if (NdisGetVersion() >= NDIS_RUNTIME_VERSION_660) {
+        MiniportDriverCharacteristics.MajorNdisVersion = NDIS_MINIPORT_MAJOR_VERSION; // 6
+        MiniportDriverCharacteristics.MinorNdisVersion = NDIS_MINIPORT_MINOR_VERSION; // 60
+    } else {
+        MiniportDriverCharacteristics.MajorNdisVersion = NDIS_MINIPORT_MINIMUM_MAJOR_VERSION; // 6
+        MiniportDriverCharacteristics.MinorNdisVersion = NDIS_MINIPORT_MINIMUM_MINOR_VERSION; // 30
+    }
+
     MiniportDriverCharacteristics.MajorDriverVersion = MAJOR_VERSION;
     MiniportDriverCharacteristics.MinorDriverVersion = MINOR_VERSION;
     MiniportDriverCharacteristics.Flags = NDIS_WDM_DRIVER;
diff --git a/vs2015/xennet/xennet.vcxproj b/vs2015/xennet/xennet.vcxproj
index b68d734..966de3a 100644
--- a/vs2015/xennet/xennet.vcxproj
+++ b/vs2015/xennet/xennet.vcxproj
@@ -22,7 +22,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS630_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS630_MINIPORT=1;NDIS660_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;</AdditionalIncludeDirectories>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4464;4711;4548;4820;4668;4255;6001;6054;28160;28196;30030;30029;%(DisableSpecificWarnings)</DisableSpecificWarnings>
diff --git a/vs2017/xennet/xennet.vcxproj b/vs2017/xennet/xennet.vcxproj
index 130b0e6..8df9840 100644
--- a/vs2017/xennet/xennet.vcxproj
+++ b/vs2017/xennet/xennet.vcxproj
@@ -22,7 +22,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS630_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS630_MINIPORT=1;NDIS660_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;</AdditionalIncludeDirectories>
       <WarningLevel>EnableAllWarnings</WarningLevel>
diff --git a/vs2019/xennet/xennet.vcxproj b/vs2019/xennet/xennet.vcxproj
index 1ad5601..2eba039 100644
--- a/vs2019/xennet/xennet.vcxproj
+++ b/vs2019/xennet/xennet.vcxproj
@@ -21,7 +21,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS630_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PROJECT=$(ProjectName);NDIS_MINIPORT_DRIVER;NDIS_WDM=1;NDIS630_MINIPORT=1;NDIS660_MINIPORT=1;POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;..\..\include\xen;</AdditionalIncludeDirectories>
       <WarningLevel>EnableAllWarnings</WarningLevel>
-- 
2.33.0.windows.2



