summaryrefslogtreecommitdiff
path: root/network/wlan/wificx/drivercode
diff options
context:
space:
mode:
author5an7y-Microsoft <[email protected]>2026-06-19 13:23:44 -0700
committerGitHub <[email protected]>2026-06-19 13:23:44 -0700
commit26741c75857c7df2fd95efe632f8f5f70b71fdbb (patch)
tree58d74336b33f09a11d9427f8eba76f7fa84d9d47 /network/wlan/wificx/drivercode
parente99ae832b48b245404f9bd750af4864247b061e8 (diff)
parent8315a48cc6aac0c02d2218b0147457a01de4f885 (diff)
Merge pull request #1394 from youyanggit/WifiihvsampleDataPath
Add End-to-End NetAdapterCx/WiFiCx Sample Drivers and OEM Communication Examples
Diffstat (limited to 'network/wlan/wificx/drivercode')
-rw-r--r--network/wlan/wificx/drivercode/SharedTypes.h31
-rw-r--r--network/wlan/wificx/drivercode/adapter.cpp83
-rw-r--r--network/wlan/wificx/drivercode/adapter.h42
-rw-r--r--network/wlan/wificx/drivercode/device.cpp131
-rw-r--r--network/wlan/wificx/drivercode/device.h29
-rw-r--r--network/wlan/wificx/drivercode/driver.cpp210
-rw-r--r--network/wlan/wificx/drivercode/driver.h12
-rw-r--r--network/wlan/wificx/drivercode/memorymanagement.cpp149
-rw-r--r--network/wlan/wificx/drivercode/precomp.h33
-rw-r--r--network/wlan/wificx/drivercode/trace.h183
-rw-r--r--network/wlan/wificx/drivercode/umkmfusion.h131
-rw-r--r--network/wlan/wificx/drivercode/wifihal.cpp1118
-rw-r--r--network/wlan/wificx/drivercode/wifihal.h63
-rw-r--r--network/wlan/wificx/drivercode/wifihaltestdata.h8290
-rw-r--r--network/wlan/wificx/drivercode/wifirequest.cpp98
-rw-r--r--network/wlan/wificx/drivercode/wifirequest.h23
-rw-r--r--network/wlan/wificx/drivercode/wifitransition.cpp466
-rw-r--r--network/wlan/wificx/drivercode/wifitransition.h20
18 files changed, 11112 insertions, 0 deletions
diff --git a/network/wlan/wificx/drivercode/SharedTypes.h b/network/wlan/wificx/drivercode/SharedTypes.h
new file mode 100644
index 00000000..e454378b
--- /dev/null
+++ b/network/wlan/wificx/drivercode/SharedTypes.h
@@ -0,0 +1,31 @@
+// Copyright (C) Microsoft Corporation. All rights reserved.
+#pragma once
+
+//
+// SharedTypes.h
+// Central header for global definitions, macros, and shared structures.
+//
+#include "precomp.h"
+#include <initguid.h> // for GUID defination
+
+// =============================
+// GUIDs or Constants
+// =============================
+// {bb67559a-06f6-4eb0-81e9-21fdc3b60efb}
+DEFINE_GUID(GUID_WIFICX_SAMPLE_CLIENT_INTERFACE, 0xbb67559a, 0x06f6, 0x4eb0, 0x81, 0xe9, 0x21, 0xfd, 0xc3, 0xb6, 0x0e, 0xfb);
+#define WIFI_DRIVER_DEFAULT_POOL_TAG 'shiW' // WIFI IHV Sample Driver
+
+// =============================
+// OEM Device Service contract
+// =============================
+// This GUID/opcode pair MUST match the OEM user-mode app (OEM\OemDeviceService.cpp).
+// {2d6f9a14-3a1d-4f0a-9b7e-1c2e3a4b5c6d}
+DEFINE_GUID(GUID_OEM_SAMPLE_DEVICE_SERVICE,
+ 0x2d6f9a14, 0x3a1d, 0x4f0a, 0x9b, 0x7e, 0x1c, 0x2e, 0x3a, 0x4b, 0x5c, 0x6d);
+
+// Opcode understood by the driver for the "hello / nice to meet you" exchange.
+#define OEM_DEVICE_SERVICE_OPCODE_HELLO 0x00000001
+
+// Payload strings exchanged with the OEM app.
+#define OEM_DEVICE_SERVICE_REQUEST_STRING "Hello, My Driver"
+#define OEM_DEVICE_SERVICE_RESPONSE_STRING "Nice to meet you, My OEM" \ No newline at end of file
diff --git a/network/wlan/wificx/drivercode/adapter.cpp b/network/wlan/wificx/drivercode/adapter.cpp
new file mode 100644
index 00000000..fd44c72b
--- /dev/null
+++ b/network/wlan/wificx/drivercode/adapter.cpp
@@ -0,0 +1,83 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+#include "precomp.h"
+#include "adapter.h"
+#include "adapter.tmh"
+
+extern UCHAR NetvMacAddressBase[MAC_ADDR_LEN];
+
+NetvAdapter* NetvAdapterGetContextFromWDFObject(NETADAPTER netAdapter)
+{
+ WifiNetvAdapter* wifiNetvAdapter = WifiNetvAdapterGetContext(netAdapter);
+ NetvAdapter* netvAdapter{ wifiNetvAdapter };
+ return netvAdapter;
+}
+
+WifiNetvAdapter::WifiNetvAdapter(NETADAPTER Handle, WDFDEVICE Device) : NetvAdapter(Handle, Device)
+{
+}
+
+NTSTATUS WifiNetvAdapter::Initialize()
+{
+ if (WifiGetIhvDeviceContext(m_device)->netAdapters[WifiAdapterGetPortId(m_handle)] != WDF_NO_HANDLE)
+ {
+ return STATUS_SUCCESS;
+ }
+ return NetvAdapter::Initialize();
+}
+
+NTSTATUS WifiNetvAdapter::AdapterStart()
+{
+ TraceEntry();
+
+ NTSTATUS status = STATUS_SUCCESS;
+
+ NET_ADAPTER_WAKE_MEDIA_CHANGE_CAPABILITIES wakeMediaChangeCapabilities;
+ NET_ADAPTER_WAKE_MEDIA_CHANGE_CAPABILITIES_INIT(&wakeMediaChangeCapabilities);
+
+ wakeMediaChangeCapabilities.MediaConnect = TRUE;
+ wakeMediaChangeCapabilities.MediaDisconnect = TRUE;
+
+ NetAdapterWakeSetMediaChangeCapabilities(m_handle, &wakeMediaChangeCapabilities);
+
+ WIFI_ADAPTER_WAKE_CAPABILITIES wakeCap{};
+ WIFI_ADAPTER_WAKE_CAPABILITIES_INIT(&wakeCap);
+ if (WIFI_IS_FIELD_AVAILABLE(WIFI_ADAPTER_WAKE_CAPABILITIES, ClientDriverDiagnostic))
+ {
+ wakeCap.ClientDriverDiagnostic = true;
+ }
+ WifiAdapterSetWakeCapabilities(m_handle, &wakeCap);
+
+ status = NetvAdapter::ConfigureDataCapabilities();
+ if (!NT_SUCCESS(status))
+ {
+ WFCError("%!FUNC!: NetvAdapter::ConfigureDataCapabilities failed with %!STATUS!", status);
+ return status;
+ }
+
+ status = NetAdapterStart(m_handle);
+ if (!NT_SUCCESS(status))
+ {
+ WFCError("%!FUNC!: NetAdapterStart failed with %!STATUS!", status);
+ return status;
+ }
+
+ ASSERT(STATUS_SUCCESS == status);
+ TraceExit(status);
+
+ return status;
+}
+
+NTSTATUS WifiNetvAdapter::CreateRxQueue(NETRXQUEUE_INIT* NetRxQueueInit)
+{
+ return NetvAdapter::CreateRxQueue(NetRxQueueInit);
+}
+
+NTSTATUS WifiNetvAdapter::CreateTxQueue(NETTXQUEUE_INIT* NetTxQueueInit)
+{
+ return NetvAdapter::CreateTxQueue(NetTxQueueInit);
+}
+
+void WifiNetvAdapter::Destroy(void)
+{
+ return NetvAdapter::Destroy();
+} \ No newline at end of file
diff --git a/network/wlan/wificx/drivercode/adapter.h b/network/wlan/wificx/drivercode/adapter.h
new file mode 100644
index 00000000..0b7aa093
--- /dev/null
+++ b/network/wlan/wificx/drivercode/adapter.h
@@ -0,0 +1,42 @@
+// Copyright (C) Microsoft Corporation. All rights reserved.
+#pragma once
+#include "device.h"
+#include "netvadapter.h"
+
+// for STA TX DEMUX
+#define MaxNumOfPeers 1
+
+// Context for each "Wdi Port"[NetAdapter] instance.
+// Each NetAdapter instance corresponds to an IP interface
+typedef struct _WIFI_IHV_NETADAPTER_CONTEXT
+{
+ PWIFI_IHV_DEVICE_CONTEXT WifiDeviceContext; // Wdf Ihv device context
+ NETADAPTER NetAdapter; // NetAdapter object
+} WIFI_IHV_NETADAPTER_CONTEXT, * PWIFI_IHV_NETADAPTER_CONTEXT;
+
+WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(WIFI_IHV_NETADAPTER_CONTEXT, WifiGetIhvNetAdapterContext);
+
+class WifiNetvAdapter : public NetvAdapter
+{
+public:
+ WifiNetvAdapter(NETADAPTER Handle, WDFDEVICE Device);
+
+ NTSTATUS
+ Initialize();
+
+ NTSTATUS
+ AdapterStart();
+
+ NTSTATUS
+ CreateRxQueue(NETRXQUEUE_INIT* NetRxQueueInit);
+
+ NTSTATUS
+ CreateTxQueue(NETTXQUEUE_INIT* NetTxQueueInit);
+
+ void Destroy(void);
+
+ bool CanReportWifiWakeSourceTypeClientDriverDiagnostic;
+
+};
+
+WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(WifiNetvAdapter, WifiNetvAdapterGetContext); \ No newline at end of file
diff --git a/network/wlan/wificx/drivercode/device.cpp b/network/wlan/wificx/drivercode/device.cpp
new file mode 100644
index 00000000..0e04d562
--- /dev/null
+++ b/network/wlan/wificx/drivercode/device.cpp
@@ -0,0 +1,131 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+
+#include "precomp.h"
+
+#include "adapter.h"
+#include "device.h"
+#include "device.tmh"
+
+_Use_decl_annotations_
+NTSTATUS EvtDevicePrepareHardware(WDFDEVICE device, WDFCMRESLIST resourcesRaw, WDFCMRESLIST resourcesTranslated)
+{
+ UNREFERENCED_PARAMETER(resourcesRaw);
+ UNREFERENCED_PARAMETER(resourcesTranslated);
+
+ WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(
+ WifiHAL::_Create(device),
+ "WifiHAL::_Create failed");
+
+ WFCInfo("Device=0x%p", device);
+ return STATUS_SUCCESS;
+}
+
+_Use_decl_annotations_
+NTSTATUS EvtDeviceReleaseHardware(WDFDEVICE device, WDFCMRESLIST resourcesTranslated)
+{
+ UNREFERENCED_PARAMETER(resourcesTranslated);
+
+ WFCInfo("Device=0x%p", device);
+
+ return STATUS_SUCCESS;
+}
+
+_Use_decl_annotations_
+NTSTATUS EvtWifiDeviceCreateAdapter(WDFDEVICE Device, NETADAPTER_INIT* AdapterInit)
+{
+ if (WifiAdapterInitGetType(AdapterInit) != WIFI_ADAPTER_EXTENSIBLE_STATION)
+ {
+ WFCError("%!FUNC!: Unsupported adapter type = 0x%x != 0x%x", WifiAdapterInitGetType(AdapterInit), WIFI_ADAPTER_EXTENSIBLE_STATION);
+ return STATUS_NOT_SUPPORTED;
+ }
+
+ NET_ADAPTER_DATAPATH_CALLBACKS datapathCallbacks;
+ NET_ADAPTER_DATAPATH_CALLBACKS_INIT(&datapathCallbacks, EvtAdapterCreateTxQueue, EvtAdapterCreateRxQueue);
+
+ NetAdapterInitSetDatapathCallbacks(AdapterInit, &datapathCallbacks);
+
+ WDF_OBJECT_ATTRIBUTES adapterAttributes;
+ WDF_OBJECT_ATTRIBUTES_INIT(&adapterAttributes);
+ WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&adapterAttributes, WifiNetvAdapter);
+ adapterAttributes.EvtCleanupCallback = EvtAdapterCleanup;
+
+#ifdef NETV_SUPPORT_TX_DEMUXING
+ WIFI_ADAPTER_TX_DEMUX peerInfoDemux;
+ WIFI_ADAPTER_TX_PEER_ADDRESS_DEMUX_INIT(&peerInfoDemux, MaxNumOfPeers);
+ WifiAdapterInitAddTxDemux(AdapterInit, &peerInfoDemux);
+#endif // NETV_SUPPORT_TX_DEMUXING
+
+
+ NETADAPTER netAdapter;
+ NTSTATUS ntStatus = NetAdapterCreate(AdapterInit, &adapterAttributes, &netAdapter);
+ if (!NT_SUCCESS(ntStatus))
+ {
+ WFCError("%!FUNC!: NetAdapterCreate failed, status=0x%x", ntStatus);
+ return ntStatus;
+ }
+
+ ntStatus = WifiAdapterInitialize(netAdapter);
+ ASSERT(NT_SUCCESS(ntStatus));
+ if (!NT_SUCCESS(ntStatus))
+ {
+ WFCError("%!FUNC!: WifiAdapterInitialize failed with %!STATUS!", ntStatus);
+ return ntStatus;
+ }
+ auto wifiNetvAdapter = new (reinterpret_cast<void*>(WifiNetvAdapterGetContext(netAdapter))) WifiNetvAdapter(netAdapter, Device);
+ ntStatus = wifiNetvAdapter->Initialize();
+ if (!NT_SUCCESS(ntStatus))
+ {
+ WFCError("%!FUNC!: WifiNetvAdapter::Initialize failed with %!STATUS!", ntStatus);
+ return ntStatus;
+ }
+
+ ntStatus = wifiNetvAdapter->AdapterStart();
+ ASSERT(NT_SUCCESS(ntStatus));
+ if (!NT_SUCCESS(ntStatus))
+ {
+ WFCError("%!FUNC!: WifiNetvAdapter::AdapterStart failed with %!STATUS!", ntStatus);
+ return ntStatus;
+ }
+
+ auto wifiNetvDevice = WifiGetIhvDeviceContext(Device);
+ wifiNetvDevice->netAdapters[WifiAdapterGetPortId(netAdapter)] = netAdapter;
+
+ WFCInfo("%!FUNC!: Success!");
+ return ntStatus;
+}
+
+_Use_decl_annotations_
+void EvtAdapterCleanup(_In_ WDFOBJECT NetAdapter)
+{
+ TraceEntry();
+ auto wifiNetvAdapter = WifiNetvAdapterGetContext(NetAdapter);
+ wifiNetvAdapter->Destroy();
+ TraceExit(STATUS_SUCCESS);
+}
+
+
+_Use_decl_annotations_
+NTSTATUS EvtWifiDeviceCreateWifiDirectDevice(WDFDEVICE, WIFIDIRECT_DEVICE_INIT*)
+{
+ NTSTATUS status = STATUS_SUCCESS;
+ TraceEntry();
+ TraceExit(status);
+ return status;
+}
+
+
+_Use_decl_annotations_
+NTSTATUS
+EvtAdapterCreateTxQueue(NETADAPTER Adapter, NETTXQUEUE_INIT* Init)
+{
+ TraceEntry();
+ return WifiNetvAdapterGetContext(Adapter)->CreateTxQueue(Init);
+}
+
+_Use_decl_annotations_
+NTSTATUS
+EvtAdapterCreateRxQueue(NETADAPTER Adapter, NETRXQUEUE_INIT* Init)
+{
+ TraceEntry();
+ return WifiNetvAdapterGetContext(Adapter)->CreateRxQueue(Init);
+}
diff --git a/network/wlan/wificx/drivercode/device.h b/network/wlan/wificx/drivercode/device.h
new file mode 100644
index 00000000..c0dfac3c
--- /dev/null
+++ b/network/wlan/wificx/drivercode/device.h
@@ -0,0 +1,29 @@
+// Copyright (C) Microsoft Corporation. All rights reserved.
+#pragma once
+#include "wifiHAL.h"
+EVT_WDF_DEVICE_PREPARE_HARDWARE EvtDevicePrepareHardware;
+EVT_WDF_DEVICE_RELEASE_HARDWARE EvtDeviceReleaseHardware;
+
+EVT_WIFI_DEVICE_CREATE_ADAPTER EvtWifiDeviceCreateAdapter;
+EVT_WIFI_DEVICE_CREATE_WIFIDIRECTDEVICE EvtWifiDeviceCreateWifiDirectDevice;
+EVT_WIFI_DEVICE_SEND_COMMAND EvtWifiDeviceSendCommand;
+EVT_WDF_OBJECT_CONTEXT_CLEANUP EvtAdapterCleanup;
+
+EVT_NET_ADAPTER_CREATE_TXQUEUE EvtAdapterCreateTxQueue;
+EVT_NET_ADAPTER_CREATE_RXQUEUE EvtAdapterCreateRxQueue;
+
+typedef struct _WIFI_IHV_DEVICE_CONTEXT
+{
+ //
+ // Do not add field variable before WdfTriageInfoPtr.
+ // NetAdapterCx carving code requires the first field of WDF context
+ // to be a pointer to WDF_TRIAGE_INFO.
+ //
+ void* WdfTriageInfoPtr;
+ WDFDEVICE WdfDevice;
+ TLV_CONTEXT TlvContext;
+ NETADAPTER netAdapters[5]{};
+} WIFI_IHV_DEVICE_CONTEXT, * PWIFI_IHV_DEVICE_CONTEXT;
+
+WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(WIFI_IHV_DEVICE_CONTEXT, WifiGetIhvDeviceContext);
+static_assert(FIELD_OFFSET(WIFI_IHV_DEVICE_CONTEXT, WdfTriageInfoPtr) == 0);
diff --git a/network/wlan/wificx/drivercode/driver.cpp b/network/wlan/wificx/drivercode/driver.cpp
new file mode 100644
index 00000000..bbc4d151
--- /dev/null
+++ b/network/wlan/wificx/drivercode/driver.cpp
@@ -0,0 +1,210 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+#include "precomp.h"
+
+#include "device.h"
+#include "driver.h"
+#include "driver.tmh"
+
+NTSTATUS DriverEntry(
+ _In_ PDRIVER_OBJECT driverObject,
+ _In_ PUNICODE_STRING registryPath)
+/*++
+
+Routine Description:
+ DriverEntry initializes the driver and is the first routine called by the
+ system after the driver is loaded. DriverEntry specifies the other entry
+ points in the function driver, such as EvtDevice and DriverUnload.
+
+Parameters Description:
+
+ DriverObject - represents the instance of the function driver that is loaded
+ into memory. DriverEntry must initialize members of DriverObject before it
+ returns to the caller. DriverObject is allocated by the system before the
+ driver is loaded, and it is released by the system after the system unloads
+ the function driver from memory.
+
+ RegistryPath - represents the driver specific path in the Registry.
+ The function driver can use the path to store driver related data between
+ reboots. The path does not store hardware instance specific data.
+
+Return Value:
+
+ STATUS_SUCCESS if successful,
+ STATUS_UNSUCCESSFUL otherwise.
+
+--*/
+{
+ NTSTATUS status = STATUS_SUCCESS;
+ WDF_DRIVER_CONFIG driverConfig{};
+ WDF_OBJECT_ATTRIBUTES attributes;
+
+ //
+ // Initialize WPP Tracing
+ //
+ WPP_INIT_TRACING(driverObject, registryPath);
+
+ // Since WPP tracing is now initialized, we can use Trace functions
+ TraceEntry();
+
+ //
+ // Register a cleanup callback so that we can call WPP_CLEANUP when
+ // the framework driver object is deleted during driver unload.
+ //
+ WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
+ attributes.EvtCleanupCallback = EvtWifiDriverContextCleanup;
+
+ WDF_DRIVER_CONFIG_INIT(&driverConfig, EvtWifiDriverDeviceAdd);
+ driverConfig.DriverPoolTag = WIFI_DRIVER_DEFAULT_POOL_TAG;
+
+ status = WdfDriverCreate(driverObject, registryPath, &attributes, &driverConfig, WDF_NO_HANDLE);
+ if (!NT_SUCCESS(status))
+ {
+ WFCError("WdfDriverCreate failed %!STATUS!", status);
+ WPP_CLEANUP(driverObject);
+ return status;
+ }
+
+ TraceExit(status);
+
+ return status;
+}
+
+NTSTATUS EvtWifiDriverDeviceAdd(_In_ WDFDRIVER driver, _Inout_ PWDFDEVICE_INIT deviceInit)
+/*++
+Routine Description:
+
+ EvtWifiDriverDeviceAdd is called by the framework in response to AddDevice
+ call from the PnP manager. We create and initialize a device object to
+ represent a new instance of the device.
+
+Arguments:
+
+ Driver - Handle to a framework driver object created in DriverEntry
+
+ DeviceInit - Pointer to a framework-allocated WDFDEVICE_INIT structure.
+
+Return Value:
+
+ NTSTATUS
+
+--*/
+{
+ UNREFERENCED_PARAMETER(driver);
+
+ TraceEntry();
+
+ NTSTATUS status = STATUS_SUCCESS;
+
+ // Configure the device init for NetAdapterCx (Data Path)
+ status = NetDeviceInitConfig(deviceInit);
+ if (!NT_SUCCESS(status))
+ {
+ WFCError("NetDeviceInitConfig failed, status=0x%x", status);
+ goto Exit;
+ }
+
+ // Configure the device init for WifiCx (Control Path)
+ status = WifiDeviceInitConfig(deviceInit);
+ if (!NT_SUCCESS(status))
+ {
+ WFCError("WifiDeviceInitConfig failed, status=0x%x", status);
+ goto Exit;
+ }
+
+ // Set PnP and Power Callbacks.
+ // [Scope: Only PrepareHardware and ReleaseHardware are implemented in this sample.]
+ WDF_PNPPOWER_EVENT_CALLBACKS pnpPowerCallbacks;
+ WDF_PNPPOWER_EVENT_CALLBACKS_INIT(&pnpPowerCallbacks);
+ pnpPowerCallbacks.EvtDevicePrepareHardware = EvtDevicePrepareHardware;
+ pnpPowerCallbacks.EvtDeviceReleaseHardware = EvtDeviceReleaseHardware;
+ WdfDeviceInitSetPnpPowerEventCallbacks(deviceInit, &pnpPowerCallbacks);
+
+ // [Scope: ArmWake and DisarmWake are not implemented in this sample.]
+ //WDF_POWER_POLICY_EVENT_CALLBACKS powerPolicyCallbacks;
+ //WdfDeviceInitSetPowerPolicyEventCallbacks(deviceInit, &powerPolicyCallbacks);
+
+ WDFDEVICE wdfIhvDevice{};
+ // Create the device object context to store the device specific information
+ WDF_OBJECT_ATTRIBUTES ihvDeviceAttributes;
+ WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&ihvDeviceAttributes, WIFI_IHV_DEVICE_CONTEXT);
+
+ status = WdfDeviceCreate(&deviceInit, &ihvDeviceAttributes, &wdfIhvDevice);
+ if (!NT_SUCCESS(status))
+ {
+ WFCError("WdfDeviceCreate failed, status=0x%x", status);
+ goto Exit;
+ }
+
+ //
+ // Create a device interface so that applications can find and talk
+ // to us.
+ //
+ status = WdfDeviceCreateDeviceInterface(wdfIhvDevice, &GUID_WIFICX_SAMPLE_CLIENT_INTERFACE, nullptr);
+ if (!NT_SUCCESS(status))
+ {
+ WFCError("WdfDeviceCreateDeviceInterface failed with status=0x%x", status);
+ goto Exit;
+ }
+
+ // Initialize WifiCx device now that the WDFDEVICE has been created.
+ // In short the WifICx is the "wdf managed WDI", so the Wdi core
+ // concepts still applies.
+ WIFI_DEVICE_CONFIG wifiDeviceConfig;
+ WIFI_DEVICE_CONFIG_INIT(
+ &wifiDeviceConfig,
+ WDI_VERSION_LATEST, // The "WDI" version supported by this Ihv driver
+ EvtWifiDeviceSendCommand, // The Wdi command and task, now called "wifirequest".
+ EvtWifiDeviceCreateAdapter, // The Wdi "ports", now support by the netadapter instances.
+ EvtWifiDeviceCreateWifiDirectDevice); // [Scope: No WiFi Direct support in this sample]
+
+ // Initialize the WifiCx device with the configuration above to let OS side ready.
+ status = WifiDeviceInitialize(wdfIhvDevice, &wifiDeviceConfig);
+ if (!NT_SUCCESS(status))
+ {
+ WFCError("WifiDeviceInitialize failed, status=0x%x", status);
+ goto Exit;
+ }
+
+ // Get a pointer to the device context structure that we just associated
+ // with the device object. We define this structure in the device.h
+ // header file. WifiGetIhvDeviceContext is an inline function generated by
+ // using the WDF_DECLARE_CONTEXT_TYPE_WITH_NAME macro in device.h.
+ // This function will do the type checking and return the device context.
+ // If you pass a wrong object handle it will return NULL and assert if
+ // run under framework verifier mode.
+ auto deviceIhvContext = WifiGetIhvDeviceContext(wdfIhvDevice);
+ deviceIhvContext->WdfDevice = wdfIhvDevice;
+ deviceIhvContext->WdfTriageInfoPtr = WdfGetTriageInfo();
+
+ deviceIhvContext->TlvContext.AllocationContext = 0;
+ deviceIhvContext->TlvContext.PeerVersion = WifiDeviceGetOsWdiVersion(wdfIhvDevice);
+
+Exit:
+ TraceExit(status);
+ return status;
+}
+
+void EvtWifiDriverContextCleanup(_In_ WDFOBJECT DriverObject)
+/*++
+Routine Description:
+
+ Free all the resources allocated in DriverEntry.
+
+Arguments:
+
+ DriverObject - handle to a WDF Driver object.
+
+Return Value:
+
+ VOID.
+
+--*/
+{
+#ifndef _KERNEL_MODE
+ // follow https://github.com/MicrosoftDocs/windows-driver-docs/blob/staging/windows-driver-docs-pr/wdf/using-wpp-software-tracing-in-kmdf-and-umdf-2-drivers.md
+ // because UMDF drivers use the kernel-mode signatures of these macros for initializing and cleaning up tracing, the calls look identical for KMDF and UMDF.
+ UNREFERENCED_PARAMETER(DriverObject);
+#endif // !_KERNEL_MODE
+
+ WPP_CLEANUP(WdfDriverWdmGetDriverObject(static_cast<WDFDRIVER>(DriverObject)));
+}
diff --git a/network/wlan/wificx/drivercode/driver.h b/network/wlan/wificx/drivercode/driver.h
new file mode 100644
index 00000000..8573b30e
--- /dev/null
+++ b/network/wlan/wificx/drivercode/driver.h
@@ -0,0 +1,12 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+#pragma once
+#include "precomp.h"
+
+WDF_EXTERN_C_START
+
+DRIVER_INITIALIZE DriverEntry;
+
+EVT_WDF_DRIVER_DEVICE_ADD EvtWifiDriverDeviceAdd;
+EVT_WDF_OBJECT_CONTEXT_CLEANUP EvtWifiDriverContextCleanup;
+
+WDF_EXTERN_C_END \ No newline at end of file
diff --git a/network/wlan/wificx/drivercode/memorymanagement.cpp b/network/wlan/wificx/drivercode/memorymanagement.cpp
new file mode 100644
index 00000000..088bad88
--- /dev/null
+++ b/network/wlan/wificx/drivercode/memorymanagement.cpp
@@ -0,0 +1,149 @@
+// Copyright (C) Microsoft Corporation. All rights reserved.
+#include "precomp.h"
+
+#ifndef _KERNEL_MODE
+#include <intrin.h> // for _ReturnAddress for user mode
+#endif // UM
+
+typedef struct _PLACEMENT_NEW_ALLOCATION_CONTEXT
+{
+ size_t cbMaxSize;
+ _Field_size_bytes_(cbMaxSize) void* pbBuffer;
+} PLACEMENT_NEW_ALLOCATION_CONTEXT, * PPLACEMENT_NEW_ALLOCATION_CONTEXT;
+typedef const PLACEMENT_NEW_ALLOCATION_CONTEXT* PCPLACEMENT_NEW_ALLOCATION_CONTEXT;
+
+// for FreeWdfMemoryBuffer to correct get
+// the handle to free the memory
+struct WIFI_IHV_MEMORY_HEADER
+{
+ size_t HeaderSize;
+ WDFMEMORY WdfMemoryHandle;
+};
+
+// for tracking memory leaks
+struct WIFI_IHV_MEMORY_CONTEXT
+{
+ size_t ContextSize;
+ void* pvCaller;
+};
+
+WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(WIFI_IHV_MEMORY_CONTEXT, GetWificxIhvMemoryContextFromHandle);
+
+
+void* AllocateWdfMemoryBuffer(size_t Size, _In_ void* CallerForMemoryLeakTracking)
+{
+ size_t totalSize = 0;
+ if (!NT_SUCCESS(Wifi::SizeTAddSafe(Size, sizeof(WIFI_IHV_MEMORY_HEADER), &totalSize)))
+ {
+ NT_ASSERT(FALSE);
+ WFCError("Failed to calculate total size");
+ return nullptr;
+ }
+
+ // allocate the context memory to store the WIFI_IHV_MEMORY_CONTEXT
+ WDF_OBJECT_ATTRIBUTES attributes;
+ WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, WIFI_IHV_MEMORY_CONTEXT);
+ WDFMEMORY wdfMemoryBufferHandle = WDF_NO_HANDLE;
+ void* pWdfMemoryBuffer = nullptr;
+
+ if (!NT_SUCCESS(WdfMemoryCreate(&attributes, NonPagedPoolNx, WIFI_DRIVER_DEFAULT_POOL_TAG, totalSize, &wdfMemoryBufferHandle, &pWdfMemoryBuffer)))
+ {
+ WFCError("Failed to allocate memory buffer");
+ return nullptr;
+ }
+
+ RtlZeroMemory(pWdfMemoryBuffer, totalSize);
+
+ // store the wdf memory handle in the header for FreeWdfMemoryBuffer to find the handle
+ WIFI_IHV_MEMORY_HEADER* pMemoryHeader = static_cast<WIFI_IHV_MEMORY_HEADER*>(pWdfMemoryBuffer);
+ pMemoryHeader->HeaderSize = sizeof(WIFI_IHV_MEMORY_HEADER);
+ pMemoryHeader->WdfMemoryHandle = wdfMemoryBufferHandle;
+
+ // store the caller and caller's caller for tracking memory leaks
+ auto memoryContext = GetWificxIhvMemoryContextFromHandle(wdfMemoryBufferHandle);
+ RtlZeroMemory(memoryContext, sizeof(WIFI_IHV_MEMORY_CONTEXT));
+ memoryContext->ContextSize = sizeof(WIFI_IHV_MEMORY_CONTEXT);
+ memoryContext->pvCaller = CallerForMemoryLeakTracking;
+
+ // hide the wdf memory header to the caller.
+ const ULONG_PTR wdfMemoryWithHeaderBuffer = reinterpret_cast<ULONG_PTR>(pWdfMemoryBuffer);
+ ULONG_PTR wdfMemoryPayloadOnlyBuffer{ 0 };
+ if (!NT_SUCCESS(Wifi::ULongPtrAddSafe(wdfMemoryWithHeaderBuffer, sizeof(WIFI_IHV_MEMORY_HEADER), &wdfMemoryPayloadOnlyBuffer)))
+ {
+ NT_ASSERT(FALSE);
+ WFCError("Failed to calculate payload buffer address");
+ return nullptr;
+ }
+
+ return reinterpret_cast<void*>(wdfMemoryPayloadOnlyBuffer);
+}
+
+void FreeWdfMemoryBuffer(_In_opt_ void* pBuffer)
+{
+ if (pBuffer == nullptr) // existing wdi code not checking for nullptr before delete, so we have to leave it as is
+ {
+ return;
+ }
+ const ULONG_PTR wdfMemoryPayloadOnlyBuffer = reinterpret_cast<ULONG_PTR>(pBuffer);
+ ULONG_PTR wdfMemoryWithHeaderBuffer{ 0 };
+ if (!NT_SUCCESS(Wifi::ULongPtrSubSafe(wdfMemoryPayloadOnlyBuffer, sizeof(WIFI_IHV_MEMORY_HEADER), &wdfMemoryWithHeaderBuffer)))
+ {
+ NT_ASSERT(FALSE);
+ WFCError("Failed to calculate header buffer address");
+ return;
+ }
+
+ const auto wificxMemoryHeader = static_cast<WIFI_IHV_MEMORY_HEADER*>(reinterpret_cast<void*>(wdfMemoryWithHeaderBuffer));
+
+ // This is memory corruption detection logic,
+ // keep it, don't remove it.
+ NT_ASSERT(wificxMemoryHeader->HeaderSize == sizeof(WIFI_IHV_MEMORY_HEADER));
+
+ WdfObjectDelete(wificxMemoryHeader->WdfMemoryHandle);
+}
+
+_Ret_writes_bytes_maybenull_(_Size) void* PlacementNewHelper(size_t _Size, PCPLACEMENT_NEW_ALLOCATION_CONTEXT AllocationContext)
+{
+ if (_Size <= AllocationContext->cbMaxSize)
+ {
+ RtlZeroMemory(AllocationContext->pbBuffer, _Size);
+ return AllocationContext->pbBuffer;
+ }
+ WFCError(
+ "Placement operator new called with insufficient buffer space (desired: %Iu, availible: %Iu)", _Size, AllocationContext->cbMaxSize);
+ return nullptr;
+}
+
+void* __cdecl operator new(size_t Size) noexcept
+{
+ return AllocateWdfMemoryBuffer(Size, _ReturnAddress());
+}
+
+__forceinline void* __cdecl operator new(size_t _Size, ULONG_PTR AllocationContext) noexcept // for WIFICX TLV
+{
+ if (AllocationContext != 0)
+ {
+ return PlacementNewHelper(_Size, (PPLACEMENT_NEW_ALLOCATION_CONTEXT)AllocationContext);
+ }
+ return AllocateWdfMemoryBuffer(_Size, _ReturnAddress());
+}
+
+void __cdecl operator delete(void* pData) noexcept
+{
+ FreeWdfMemoryBuffer(pData);
+}
+
+void __cdecl operator delete[](void* pData) noexcept
+{
+ FreeWdfMemoryBuffer(pData);
+}
+
+void __cdecl operator delete(void* pData, ULONG_PTR) noexcept // For WIFICX TLV
+{
+ FreeWdfMemoryBuffer(pData);
+}
+
+void __cdecl operator delete[](void* pData, ULONG_PTR) noexcept // For WIFICX TLV
+{
+ FreeWdfMemoryBuffer(pData);
+} \ No newline at end of file
diff --git a/network/wlan/wificx/drivercode/precomp.h b/network/wlan/wificx/drivercode/precomp.h
new file mode 100644
index 00000000..1b0f808e
--- /dev/null
+++ b/network/wlan/wificx/drivercode/precomp.h
@@ -0,0 +1,33 @@
+// Copyright (C) Microsoft Corporation. All rights reserved.
+#pragma once
+
+#ifdef _KERNEL_MODE
+ #include <ntddk.h>
+#else
+ #include <windows.h>
+ #include <ndis/types.h> // For NDIS_STATUS
+ #include <ndis/status.h> // For NDIS_STATUS codes
+ #include <ntddndis.h>
+#endif
+// WDF Headers
+#include <wdf.h>
+
+// Network Device Headers
+#include <netadaptercx.h>
+#include <netiodef.h>
+
+// WIFI Device Headers
+#include <wificx.h>
+#include "umkmfusion.h"
+#include "dot11wificxintf.h"
+#include "dot11wificxtypes.hpp"
+#include "TLVGeneratorParser.hpp"
+#include "SharedTypes.h"
+
+// WPP Tracing Headers
+#include "trace.h"
+
+// Minimal placement-new to match operator new(size_t, void*)
+// TLV generator/parser memory interface has the ULONG_PTR version
+inline void* operator new(size_t, void* p) noexcept { return p; }
+inline void operator delete(void*, void*) noexcept { /* no-op */ }
diff --git a/network/wlan/wificx/drivercode/trace.h b/network/wlan/wificx/drivercode/trace.h
new file mode 100644
index 00000000..324e1c87
--- /dev/null
+++ b/network/wlan/wificx/drivercode/trace.h
@@ -0,0 +1,183 @@
+//
+// Copyright (C) Microsoft. All rights reserved.
+//
+#pragma once
+#ifndef TRACE_H
+#define TRACE_H
+
+#define WPP_USE_TRACE_LEVELS
+
+// 21BA7B61-05F8-41F1-9048-C09493DCFE38
+#define WPP_CONTROL_GUIDS \
+ WPP_DEFINE_CONTROL_GUID(WdiLibraryCtlGuid, (21BA7B61, 05F8, 41F1, 9048, C09493DCFE38), WPP_DEFINE_BIT(DUMMY))
+
+//#define WPP_LEVEL_EXP_ENABLED(LEVEL, EXP) WPP_LEVEL_ENABLED(LEVEL)
+//#define WPP_LEVEL_EXP_LOGGER(LEVEL, EXP) WPP_LEVEL_LOGGER(LEVEL)
+
+
+#define WPP_RECORDER_LEVEL_FLAGS_ARGS(lvl, flags) WPP_CONTROL(WPP_BIT_##flags).AutoLogContext, lvl, WPP_BIT_##flags
+#define WPP_RECORDER_LEVEL_FLAGS_FILTER(lvl, flags) \
+ (WPP_LEVEL_ENABLED(lvl) || lvl < TRACE_LEVEL_VERBOSE || WPP_CONTROL(WPP_BIT_##flags).AutoLogVerboseEnabled)
+
+#define WPP_RECORDER_LEVEL_ARGS(LEVEL) WPP_RECORDER_LEVEL_FLAGS_ARGS(LEVEL, DUMMY)
+#define WPP_RECORDER_LEVEL_FILTER(LEVEL) WPP_RECORDER_LEVEL_FLAGS_FILTER(LEVEL, DUMMY)
+
+#define WPP_RECORDER_LEVEL_EXP_FILTER(LEVEL, EXP) WPP_RECORDER_LEVEL_FILTER(LEVEL)
+#define WPP_RECORDER_LEVEL_EXP_ARGS(LEVEL, EXP) WPP_RECORDER_LEVEL_ARGS(LEVEL)
+
+// Suppress warnings about constants in logical expressions because the
+// level is often a constant
+#define WPP_LEVEL_PRE(LEVEL) __pragma(warning(suppress : 25039 25040))
+#define WPP_LEVEL_EXP_PRE(LEVEL, EXP) __pragma(warning(suppress : 25039 25040))
+
+#define TraceEntry(...)
+#define TraceExit(Status)
+#define WFCTrace(Format, ...)
+#define WFCError(Format, ...)
+#define WFCInfo(Format, ...)
+
+// begin_wpp config
+// USEPREFIX (TraceEntry, "%!STDPREFIX!");
+// FUNC TraceEntry{LEVEL=TRACE_LEVEL_VERBOSE}(...);
+// USESUFFIX (TraceEntry, "--> %!FUNC!");
+// end_wpp
+
+// begin_wpp config
+// USEPREFIX (TraceExit, "%!STDPREFIX!");
+// FUNC TraceExit{LEVEL=TRACE_LEVEL_VERBOSE}(EXP);
+// USESUFFIX (TraceExit, "<-- %!FUNC!: 0x%x", EXP);
+// end_wpp
+
+//
+// Flat-C trace commands
+//
+// begin_wpp config
+//
+// USEPREFIX (WFCError, "%!STDPREFIX! %!FUNC!: [ERROR]");
+// FUNC WFCError{LEVEL=TRACE_LEVEL_ERROR}(MSG, ...);
+//
+// USEPREFIX (WFCInfo, "%!STDPREFIX! %!FUNC!: [INFO]");
+// FUNC WFCInfo{LEVEL=TRACE_LEVEL_INFORMATION}(MSG, ...);
+//
+// USEPREFIX (WFCTrace, "%!STDPREFIX! %!FUNC!: [TRACE]");
+// FUNC WFCTrace{LEVEL=TRACE_LEVEL_VERBOSE}(MSG, ...);
+//
+// end_wpp
+//
+
+#define MACRO_START \
+ do \
+ {
+#define MACRO_END \
+ } \
+ while (0)
+
+//
+// WPP Macros: WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG
+//
+// begin_wpp config
+// FUNC WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG{COMPNAME=DUMMY,LEVEL=TRACE_LEVEL_ERROR}(NTEXPR,MSG,...);
+// USEPREFIX (WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG, "%!STDPREFIX! !! WifiIhv - %!FUNC!: ");
+// USESUFFIX (WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG, " [status=%!STATUS!]", nt__wpp);
+// end_wpp
+
+#define WPP_COMPNAME_LEVEL_NTEXPR_PRE(comp, level, ntexpr) \
+ MACRO_START NTSTATUS nt__wpp = (ntexpr); \
+ if (!NT_SUCCESS(nt__wpp)) \
+ {
+#define WPP_COMPNAME_LEVEL_NTEXPR_POST(comp, level, ntexpr) \
+ ; \
+ return nt__wpp; \
+ } \
+ MACRO_END
+#define WPP_RECORDER_COMPNAME_LEVEL_NTEXPR_FILTER(comp, level, ntexpr) WPP_RECORDER_LEVEL_FLAGS_FILTER(level, comp)
+#define WPP_RECORDER_COMPNAME_LEVEL_NTEXPR_ARGS(comp, level, ntexpr) WPP_RECORDER_LEVEL_FLAGS_ARGS(level, comp)
+
+//
+// WPP Macros: WX_RETURN_INSUFFICIENT_RESOURCES_IF_NULL_MSG
+//
+// begin_wpp config
+// FUNC WX_RETURN_INSUFFICIENT_RESOURCES_IF_NULL_MSG{COMPNAME=DUMMY,LEVEL=TRACE_LEVEL_ERROR}(PTR2,MSG,...);
+// USEPREFIX (WX_RETURN_INSUFFICIENT_RESOURCES_IF_NULL_MSG, "%!STDPREFIX! !! WifiIhv - %!FUNC!: ");
+// USESUFFIX (WX_RETURN_INSUFFICIENT_RESOURCES_IF_NULL_MSG, "%!s! is null", #PTR2);
+// end_wpp
+
+#define WPP_COMPNAME_LEVEL_PTR2_PRE(comp, level, ptr) \
+ MACRO_START if ((ptr == nullptr)) \
+ {
+#define WPP_COMPNAME_LEVEL_PTR2_POST(comp, level, ptr) \
+ ; \
+ return STATUS_INSUFFICIENT_RESOURCES; \
+ } \
+ MACRO_END
+#define WPP_RECORDER_COMPNAME_LEVEL_PTR2_FILTER(comp, level, ptr) WPP_RECORDER_LEVEL_FLAGS_FILTER(level, comp)
+#define WPP_RECORDER_COMPNAME_LEVEL_PTR2_ARGS(comp, level, ptr) WPP_RECORDER_LEVEL_FLAGS_ARGS(level, comp)
+
+//
+// WPP Macros: WX_RETURN_IF_NULL_MSG
+//
+// begin_wpp config
+// FUNC WX_RETURN_IF_NULL_MSG{COMPNAME=DUMMY,LEVEL=TRACE_LEVEL_ERROR}(PTR3,MSG,...);
+// USEPREFIX (WX_RETURN_IF_NULL_MSG, "%!STDPREFIX! !! WifiIhv - %!FUNC!: ");
+// USESUFFIX (WX_RETURN_IF_NULL_MSG, "%!s! is null", #PTR3);
+// end_wpp
+
+#define WPP_COMPNAME_LEVEL_PTR3_PRE(comp, level, ptr) \
+ MACRO_START if ((ptr == nullptr)) \
+ {
+#define WPP_COMPNAME_LEVEL_PTR3_POST(comp, level, ptr) \
+ ; \
+ return; \
+ } \
+ MACRO_END
+#define WPP_RECORDER_COMPNAME_LEVEL_PTR3_FILTER(comp, level, ptr) WPP_RECORDER_LEVEL_FLAGS_FILTER(level, comp)
+#define WPP_RECORDER_COMPNAME_LEVEL_PTR3_ARGS(comp, level, ptr) WPP_RECORDER_LEVEL_FLAGS_ARGS(level, comp)
+
+typedef struct _ByteArray
+{
+ USHORT usLength;
+ const void* pvBuffer;
+} ByteArray;
+
+__inline ByteArray log_lenstr(ULONG len, const void* buf)
+{
+ ByteArray xs{};
+ xs.usLength = (USHORT)len;
+ xs.pvBuffer = buf;
+ return xs;
+}
+
+#define WPP_LOGHEXDUMP(x) \
+ WPP_LOGPAIR(2, &((x).usLength)) \
+ WPP_LOGPAIR((x).usLength, (x).pvBuffer)
+
+#define WPP_LOGANSISTRING(x) \
+ WPP_LOGPAIR(2, &((x).usLength)) \
+ WPP_LOGPAIR((x).usLength, (x).pvBuffer)
+
+#define WPP_LOGMACADDR(x) WPP_LOGPAIR(6, x)
+
+#define WPP_LOGDOT11SSID(x) \
+ WPP_LOGPAIR(2, &((*(x)).uSSIDLength)) \
+ WPP_LOGPAIR((*(x)).uSSIDLength, ((const char*)(*(x)).ucSSID))
+
+//
+// Custom types
+//
+// begin_wpp config
+//
+// DEFINE_CPLX_TYPE(HEXDUMP, WPP_LOGHEXDUMP, ByteArray, ItemHEXDump,"s", _HEX_, 0,2);
+// WPP_FLAGS(-DLOG_HEXDUMP(len,str)=log_lenstr(len,str));
+//
+// DEFINE_CPLX_TYPE(ANSISTRING, WPP_LOGANSISTRING, ByteArray, ItemPString,"s", _SSID_, 0,2);
+// WPP_FLAGS(-DLOG_ANSISTRING(len,str)=log_lenstr(len,str));
+//
+// DEFINE_CPLX_TYPE(DOT11SSID, WPP_LOGDOT11SSID, DOT11_SSID*, ItemPString,"s", _SSID_, 0,2);
+//
+// DEFINE_CPLX_TYPE(MACADDR, WPP_LOGMACADDR, DOT11_MAC_ADDRESS, ItemMACAddr,"s", _MAC_, 0);
+//
+// CUSTOM_TYPE(MESSAGE_ID, ItemEnum(WDI_TLV::ENUMS::MESSAGE_ID));
+// end_wpp
+//
+
+#endif
diff --git a/network/wlan/wificx/drivercode/umkmfusion.h b/network/wlan/wificx/drivercode/umkmfusion.h
new file mode 100644
index 00000000..8f0db3f8
--- /dev/null
+++ b/network/wlan/wificx/drivercode/umkmfusion.h
@@ -0,0 +1,131 @@
+// Copyright (C) Microsoft Corporation. All rights reserved.
+#pragma once
+#include "precomp.h"
+
+#include "winerror.h"
+
+#ifdef _KERNEL_MODE
+#include "ntintsafe.h"
+#else
+#include "intsafe.h"
+#endif
+
+namespace Wifi
+{
+ _inline
+ NTSTATUS ConvertHRESULTToNTSTATUS(HRESULT hr) {
+ if ((hr & FACILITY_NT_BIT) == FACILITY_NT_BIT) {
+ return static_cast<NTSTATUS>(hr & ~FACILITY_NT_BIT); // Strip NT bit safely
+ }
+
+ // Trace the HRESULT value for diagnostics
+ return SUCCEEDED(hr) ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
+ }
+
+ __inline
+ NTSTATUS ConvertNDISSTATUSToNTSTATUS(NDIS_STATUS NdisStatus)
+ {
+ if (NT_SUCCESS(NdisStatus) && NdisStatus != NDIS_STATUS_SUCCESS && NdisStatus != NDIS_STATUS_PENDING &&
+ NdisStatus != NDIS_STATUS_INDICATION_REQUIRED)
+ {
+ // Case where an NDIS error is incorrectly mapped as a success by NT_SUCCESS macro
+ return STATUS_UNSUCCESSFUL;
+ }
+ else
+ {
+ switch (NdisStatus)
+ {
+ case NDIS_STATUS_BUFFER_TOO_SHORT:
+ return STATUS_BUFFER_TOO_SMALL;
+ break;
+ default:
+ return (NTSTATUS)NdisStatus;
+ break;
+ }
+ }
+ }
+
+ __inline
+ NDIS_STATUS ConvertNTSTATUSToNDISSTATUS(NTSTATUS NtStatus)
+ {
+ if (NT_SUCCESS(NtStatus) && NtStatus != STATUS_PENDING && NtStatus != STATUS_NDIS_INDICATION_REQUIRED)
+ {
+ return NDIS_STATUS_SUCCESS;
+ }
+ else
+ {
+ switch (NtStatus)
+ {
+ case STATUS_BUFFER_TOO_SMALL:
+ return NDIS_STATUS_BUFFER_TOO_SHORT;
+ break;
+ default:
+ return (NDIS_STATUS)NtStatus;
+ break;
+ }
+ }
+ }
+
+ _Must_inspect_result_
+ _inline
+ NTSTATUS SizeTAddSafe(_In_ size_t Augend, _In_ size_t Addend, _Out_ _Deref_out_range_(== , Augend + Addend) size_t* pResult)
+ {
+#ifdef _KERNEL_MODE
+ return RtlSizeTAdd(Augend, Addend, pResult);
+#else
+ return ConvertHRESULTToNTSTATUS(SizeTAdd(Augend, Addend, pResult));
+#endif
+ }
+
+ _Must_inspect_result_
+ __inline
+ NTSTATUS ULongPtrAddSafe(
+ _In_ ULONGLONG ullAugend,
+ _In_ ULONGLONG ullAddend,
+ _Out_ _Deref_out_range_(== , ullAugend + ullAddend) ULONGLONG* pullResult)
+ {
+#ifdef _KERNEL_MODE
+ return RtlULongPtrAdd(ullAugend, ullAddend, pullResult);
+#else
+ return ConvertHRESULTToNTSTATUS(ULongPtrAdd(ullAugend, ullAddend, pullResult));
+#endif
+ }
+
+ _Must_inspect_result_
+ __inline
+ NTSTATUS ULongPtrSubSafe(
+ _In_ ULONGLONG ullMinuend,
+ _In_ ULONGLONG ullSubtrahend,
+ _Out_ _Deref_out_range_(== , ullMinuend - ullSubtrahend) ULONGLONG* pullResult)
+ {
+#ifdef _KERNEL_MODE
+ return RtlULongPtrSub(ullMinuend, ullSubtrahend, pullResult);
+#else
+ return ConvertHRESULTToNTSTATUS(ULongPtrSub(ullMinuend, ullSubtrahend, pullResult));
+#endif
+ }
+}
+
+#ifndef _KERNEL_MODE
+// TODO: Cleanup when EWDK contains the payload of https://microsoft.visualstudio.com/OS/_workitems/edit/58447986
+typedef enum _NDIS_FRAME_HEADER
+{
+ NdisFrameHeaderUndefined,
+ NdisFrameHeaderMac,
+ NdisFrameHeaderArp,
+ NdisFrameHeaderIPv4,
+ NdisFrameHeaderIPv6,
+ NdisFrameHeaderUdp,
+ NdisFrameHeaderMaximum
+}NDIS_FRAME_HEADER, * PNDIS_FRAME_HEADER;
+
+typedef enum _NDIS_RECEIVE_FILTER_TEST
+{
+ NdisReceiveFilterTestUndefined,
+ NdisReceiveFilterTestEqual,
+ NdisReceiveFilterTestMaskEqual,
+ NdisReceiveFilterTestNotEqual,
+ NdisReceiveFilterTestMaximum
+}NDIS_RECEIVE_FILTER_TEST, * PNDIS_RECEIVE_FILTER_TEST;
+// End of TODO
+#endif // !_KERNEL_MODE \ No newline at end of file
diff --git a/network/wlan/wificx/drivercode/wifihal.cpp b/network/wlan/wificx/drivercode/wifihal.cpp
new file mode 100644
index 00000000..e7aaec1f
--- /dev/null
+++ b/network/wlan/wificx/drivercode/wifihal.cpp
@@ -0,0 +1,1118 @@
+// Copyright (C) Microsoft Corporation. All rights reserved.
+
+#include "precomp.h"
+#include "wifirequest.h"
+#include "wifiHALtestdata.h"
+#include "WifiHal.h"
+#include "WifiHal.tmh"
+
+_Use_decl_annotations_
+NTSTATUS WifiHAL::_Create(WDFDEVICE Device)
+{
+ // Download firmware, initialize hardware, etc.
+
+ // Create WifiHAL object and associate it with Device context after FW ready
+ WDF_OBJECT_ATTRIBUTES attributes;
+ WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, WifiHAL);
+ attributes.EvtCleanupCallback = WifiHAL::_OnCleanup;
+
+ void* memory = nullptr;
+ WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(
+ WdfObjectAllocateContext(Device, &attributes, &memory), "Failed to allocate WifiHAL context. Device=%p", Device);
+
+ // Obtain the context and initialize it
+ auto* wifiHal = reinterpret_cast<WifiHAL*>(memory);
+ wifiHal->Initialize(Device, &WifiGetIhvDeviceContext(Device)->TlvContext);
+
+ WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(
+ wifiHal->WifiIhvSetDeviceCapabilities(),
+ "Failed to set device capabilities. Device=%p", Device);
+
+ return STATUS_SUCCESS;
+}
+
+_Use_decl_annotations_
+void WifiHAL::_OnCleanup(WDFOBJECT Object)
+{
+ UNREFERENCED_PARAMETER(Object);
+}
+
+_Use_decl_annotations_
+void WifiHAL::Initialize(WDFDEVICE Device, PCTLV_CONTEXT TlvContext)
+{
+ m_Device = Device;
+ m_TlvContext = TlvContext;
+ m_CurrentRadioState = 1; // On by default
+ m_LastConnectEntryId = 0;
+ m_LastConnectTransactionId = 0;
+ m_LastAuthAlgo = WDI_AUTH_ALGO_UNKNOWN;
+ RtlZeroMemory(&m_ConnectedPeer, sizeof(m_ConnectedPeer));
+ // Initialize link addresses and supported bands (previously in-class const init)
+ m_LocalLinkAddresses[0] = { 0x11, 0x01, 0x02, 0x03, 0x04, 0x21 };
+ m_LocalLinkAddresses[1] = { 0x11, 0x01, 0x02, 0x03, 0x04, 0x22 };
+ m_SupportedBands = (WDI_BAND_ID_2400 | WDI_BAND_ID_5000 | WDI_BAND_ID_6000);
+}
+
+NTSTATUS WifiHAL::WifiIhvIsDeviceReadyForRequest()
+{
+ NTSTATUS status =
+ ((m_Device != WDF_NO_HANDLE) // Make sure device is initialized (since this is hardware abstraction layer, IHV can replace with firmware state)
+ && (WifiGetIhvDeviceContext(m_Device)->netAdapters[0] != WDF_NO_HANDLE) ? STATUS_SUCCESS : STATUS_DEVICE_NOT_READY);// In WIFICX, the logic sits on top of primary STA adapter, make sure it is initialized
+ if(NT_SUCCESS(status) == FALSE)
+ {
+ WFCError(
+ "Device not ready for request. Device=%p, primaryStaAdapter=%p",
+ m_Device,
+ (m_Device != WDF_NO_HANDLE) ? WifiGetIhvDeviceContext(m_Device)->netAdapters[0] : WDF_NO_HANDLE);
+ }
+ return status;
+}
+
+NTSTATUS WifiHAL::WifiIhvGetPendingTransitionStatus()
+{
+ return m_LastConnectTransactionId ==0 ? STATUS_SUCCESS : STATUS_PENDING;
+}
+
+NTSTATUS WifiHAL::WifiIhvSetDeviceCapabilities()
+{
+ WIFI_DEVICE_CAPABILITIES deviceCaps = {};
+ WIFI_DEVICE_CAPABILITIES_INIT(&deviceCaps);
+
+ deviceCaps.HardwareRadioState = TRUE;
+ deviceCaps.SoftwareRadioState = TRUE;
+ RtlCopyMemory(deviceCaps.FirmwareVersion, "1.0.0", sizeof("1.0.0"));
+ deviceCaps.ActionFramesSupported = TRUE;
+ deviceCaps.NumRxStreams = 1;
+ deviceCaps.NumTxStreams = 1;
+ deviceCaps.Support_eCSA = FALSE;
+ deviceCaps.MACAddressRandomization = FALSE;
+ deviceCaps.MACAddressRandomizationMask.Address[0] = 0;
+ deviceCaps.MACAddressRandomizationMask.Address[1] = 0;
+ deviceCaps.MACAddressRandomizationMask.Address[2] = 0;
+ deviceCaps.MACAddressRandomizationMask.Address[3] = 0xFF;
+ deviceCaps.MACAddressRandomizationMask.Address[4] = 0;
+ deviceCaps.MACAddressRandomizationMask.Address[5] = 0;
+ deviceCaps.BluetoothCoexistenceSupport = WDI_BLUETOOTH_COEXISTENCE_PERFORMANCE_MAINTAINED;
+ deviceCaps.SupportsNonWdiOidRequests = FALSE;
+ deviceCaps.FastTransitionSupported = TRUE;
+ deviceCaps.MU_MIMOSupported = FALSE;
+ deviceCaps.SAEAuthenticationSupported = TRUE;
+ deviceCaps.BSSTransitionSupported = TRUE;
+ deviceCaps.MBOSupported = FALSE;
+ deviceCaps.BeaconReportsImplemented = FALSE;
+
+ WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(
+ WifiDeviceSetDeviceCapabilities(m_Device, &deviceCaps),
+ "Failed to set device capabilities");
+
+ WIFI_STATION_CAPABILITIES StationCaps = {};
+ WIFI_STATION_CAPABILITIES_INIT(&StationCaps);
+
+ StationCaps.ScanSSIDListSize = 4;
+ StationCaps.DesiredSSIDListSize = 1;
+ StationCaps.PrivacyExemptionListSize = 1;
+ StationCaps.KeyMappingTableSize = 32;
+ StationCaps.DefaultKeyTableSize = 4;
+ StationCaps.WEPKeyValueMaxLength = 0x20;
+ StationCaps.MaxNumPerSTA = 4;
+ StationCaps.SupportedQOSFlags = 0;
+ StationCaps.HostFIPSModeImplemented = FALSE;
+ StationCaps.MFPCapable = TRUE;
+ StationCaps.AutoPowerSaveMode = FALSE;
+ StationCaps.BSSListCachemanagement = FALSE;
+ StationCaps.ConnectBSSSelectionOverride = FALSE;
+ StationCaps.MaxNetworkOffloadListSize = 0;
+ StationCaps.HESSIDConnectionSupported = FALSE;
+ StationCaps.FTMAsInitiatorSupport = FALSE;
+ StationCaps.FTMNumberOfSupportedTargets = 0;
+
+ const DOT11_AUTH_CIPHER_PAIR UnicastAlgos[] = {
+ {DOT11_AUTH_ALGO_80211_OPEN, DOT11_CIPHER_ALGO_NONE},
+ {DOT11_AUTH_ALGO_80211_OPEN, DOT11_CIPHER_ALGO_WEP},
+ {DOT11_AUTH_ALGO_WPA_PSK, DOT11_CIPHER_ALGO_CCMP},
+ {DOT11_AUTH_ALGO_RSNA, DOT11_CIPHER_ALGO_CCMP},
+ {DOT11_AUTH_ALGO_RSNA_PSK, DOT11_CIPHER_ALGO_TKIP},
+ {DOT11_AUTH_ALGO_RSNA_PSK, DOT11_CIPHER_ALGO_CCMP},
+ {DOT11_AUTH_ALGO_WPA3_ENT_192, DOT11_CIPHER_ALGO_GCMP_256},
+ {DOT11_AUTH_ALGO_WPA3_ENT, DOT11_CIPHER_ALGO_CCMP},
+ {DOT11_AUTH_ALGO_WPA3_SAE, DOT11_CIPHER_ALGO_GCMP_256},
+ {DOT11_AUTH_ALGO_WPA3_SAE, DOT11_CIPHER_ALGO_CCMP},
+ {DOT11_AUTH_ALGO_OWE, DOT11_CIPHER_ALGO_GCMP_256},
+ {DOT11_AUTH_ALGO_OWE, DOT11_CIPHER_ALGO_CCMP},
+ };
+
+ const DOT11_AUTH_CIPHER_PAIR McastMgmtAlgos[] = {
+ {DOT11_AUTH_ALGO_80211_OPEN, DOT11_CIPHER_ALGO_NONE},
+ {DOT11_AUTH_ALGO_RSNA, DOT11_CIPHER_ALGO_BIP},
+ {DOT11_AUTH_ALGO_RSNA_PSK, DOT11_CIPHER_ALGO_BIP},
+ {DOT11_AUTH_ALGO_WPA3_SAE, DOT11_CIPHER_ALGO_BIP},
+ {DOT11_AUTH_ALGO_WPA3_ENT, DOT11_CIPHER_ALGO_BIP},
+ {DOT11_AUTH_ALGO_WPA3_ENT_192, DOT11_CIPHER_ALGO_BIP_GMAC_256},
+ };
+
+ StationCaps.NumSupportedUnicastAlgorithms = ARRAYSIZE(UnicastAlgos);
+ StationCaps.UnicastAlgorithmsList = const_cast<PDOT11_AUTH_CIPHER_PAIR>(UnicastAlgos);
+ StationCaps.NumSupportedMulticastDataAlgorithms = ARRAYSIZE(UnicastAlgos);
+ StationCaps.MulticastDataAlgorithmsList = const_cast<PDOT11_AUTH_CIPHER_PAIR>(UnicastAlgos);
+ StationCaps.NumSupportedMulticastMgmtAlgorithms = ARRAYSIZE(McastMgmtAlgos);
+ StationCaps.MulticastMgmtAlgorithmsList = const_cast<PDOT11_AUTH_CIPHER_PAIR>(McastMgmtAlgos);
+
+ WIFI_STA_BANDS_COMBINATION SecondaryStaBandsCombinations[] = {
+ {2, {WDI_BAND_ID_2400, WDI_BAND_ID_5000, WDI_BAND_ID_UNKNOWN, WDI_BAND_ID_UNKNOWN}},
+ {2, {WDI_BAND_ID_2400, WDI_BAND_ID_6000, WDI_BAND_ID_UNKNOWN, WDI_BAND_ID_UNKNOWN}},
+ {2, {WDI_BAND_ID_5000, WDI_BAND_ID_6000, WDI_BAND_ID_UNKNOWN, WDI_BAND_ID_UNKNOWN}},
+ {3, {WDI_BAND_ID_2400, WDI_BAND_ID_5000, WDI_BAND_ID_6000, WDI_BAND_ID_UNKNOWN}},
+ };
+
+ StationCaps.NumSecondaryStaBandCombinations = ARRAYSIZE(SecondaryStaBandsCombinations);
+ StationCaps.SecondaryStaBandsCombinations = SecondaryStaBandsCombinations;
+
+ WDI_MAC_ADDRESS MLOAddresses[] = {
+ {0x11, 0x01, 0x02, 0x03, 0x04, 0x21},
+ {0x11, 0x01, 0x02, 0x03, 0x04, 0x22},
+ };
+ StationCaps.MaxMLOLinksSupported = ARRAYSIZE(MLOAddresses);
+ StationCaps.MLOAddressesList = MLOAddresses;
+
+ RSNA_AKM_SUITE AkmsList[] = {
+ rsna_akm_1x,
+ rsna_akm_psk,
+ rsna_akm_ft_1x_sha256,
+ rsna_akm_ft_psk_sha256,
+ rsna_akm_1x_sha256,
+ rsna_akm_psk_sha256,
+ rsna_akm_sae_pmk256,
+ rsna_akm_1x_suite_b_sha384,
+ rsna_akm_owe,
+ rsna_akm_1x_sha384,
+ rsna_akm_sae_pmk384,
+ };
+ StationCaps.NumAkmsSupported = ARRAYSIZE(AkmsList);
+ StationCaps.AkmsList = AkmsList;
+
+ if (WIFI_IS_FIELD_AVAILABLE(WIFI_STATION_CAPABILITIES, MSCSSupported))
+ {
+ StationCaps.MSCSSupported = true;
+ }
+ if (WIFI_IS_FIELD_AVAILABLE(WIFI_STATION_CAPABILITIES, DSCPToUPMappingSupported))
+ {
+ StationCaps.DSCPToUPMappingSupported = true;
+ }
+
+ WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(
+ WifiDeviceSetStationCapabilities(m_Device, &StationCaps),
+ "Failed to set station capabilities");
+
+ WIFI_BAND_CAPABILITIES BandCaps = {};
+ WIFI_BAND_CAPABILITIES_INIT(&BandCaps);
+
+ const WDI_PHY_TYPE Phy24GHz[] = { WDI_PHY_TYPE_ERP, WDI_PHY_TYPE_HE }; // g, ax
+ const WDI_PHY_TYPE Phy5GHz[] = { WDI_PHY_TYPE_OFDM, WDI_PHY_TYPE_HE, WDI_PHY_TYPE_EHT }; // a, ax, be
+ const WDI_PHY_TYPE Phy6GHz[] = { WDI_PHY_TYPE_HE, WDI_PHY_TYPE_EHT }; // ax, be
+ const WDI_PHY_TYPE pPhy60GHz[] = { WDI_PHY_TYPE_DMG }; // ad
+ const WDI_PHY_TYPE phyIHV[2] = { WDI_PHY_TYPE_OFDM, static_cast<WDI_PHY_TYPE>(WDI_PHY_TYPE_IHV_START + 1) };
+
+ // clang-format off
+
+ const WDI_CHANNEL_MAPPING_ENTRY ChannelMap24[] = {
+ {1, 2412},
+ {2, 2417},
+ {3, 2422},
+ {4, 2427},
+ {5, 2432},
+ {6, 2437},
+ {7, 2442},
+ {8, 2447},
+ {9, 2452},
+ {10, 2457},
+ {11, 2462},
+ {12, 2467}, // Not used in US
+ {13, 2472}, // Not used in US
+ {14, 2484}, // Allowed in Japan only
+ };
+
+ const WDI_CHANNEL_MAPPING_ENTRY ChannelMap5[] = {
+ {7, 5035}, // Not used in US
+ {8, 5040}, // Not used in US
+ {9, 5045}, // Not used in US
+ {11, 5055}, // Not used in US
+ {12, 5060}, // Not used in US
+ {16, 5080}, // Not used in US
+ {32, 5160}, // Unknown status
+ {34, 5170}, // Not used in US
+ {36, 5180},
+ {38, 5190},
+ {40, 5200},
+ {42, 5210},
+ {44, 5220},
+ {46, 5230},
+ {48, 5240},
+ {50, 5250}, // DFS
+ {52, 5260}, // DFS
+ {54, 5270}, // DFS
+ {56, 5280}, // DFS
+ {58, 5290}, // DFS
+ {60, 5300}, // DFS
+ {62, 5310}, // DFS
+ {64, 5320}, // DFS
+ {68, 5340}, // Unknown status
+ {96, 5480}, // Unknown status
+ {100, 5500}, // DFS
+ {102, 5510}, // DFS
+ {104, 5520}, // DFS
+ {106, 5530}, // DFS
+ {108, 5540}, // DFS
+ {110, 5550}, // DFS
+ {112, 5560}, // DFS
+ {114, 5570}, // DFS
+ {116, 5580}, // DFS
+ {118, 5590}, // DFS
+ {120, 5600}, // DFS
+ {122, 5610}, // DFS
+ {124, 5620}, // DFS
+ {126, 5630}, // DFS
+ {128, 5640}, // DFS
+ {132, 5660}, // DFS
+ {134, 5670}, // DFS
+ {136, 5680}, // DFS
+ {138, 5690}, // DFS
+ {140, 5700}, // DFS
+ {142, 5710}, // DFS
+ {142, 5720}, // DFS
+ {144, 5730}, // DFS
+ {149, 5745},
+ {151, 5755},
+ {153, 5765},
+ {155, 5785},
+ {157, 5785},
+ {159, 5795},
+ {161, 5805},
+ {165, 5825},
+ {169, 5845}, // Not used in US
+ {173, 5865}, // Not used in US
+ {183, 4915}, // Not used in US
+ {184, 4920}, // Not used in US
+ {185, 4925}, // Not used in US
+ {187, 4935}, // Not used in US
+ {188, 4940}, // Not used in US
+ {189, 4945}, // Not used in US
+ {192, 4960}, // Not used in US
+ {196, 4980}, // Not used in US
+ };
+
+ const WDI_CHANNEL_MAPPING_ENTRY channelMap6[] = {
+ {1, 5955},
+ {5, 5975}, // PSC Channel (1)
+ {9, 5995},
+
+ {13, 6015},
+ {17, 6035},
+ {21, 6055}, // PSC Channel (2)
+ {25, 6075},
+ {29, 6095},
+
+ {33, 6115},
+ {37, 6135}, // PSC Channel (3)
+ {41, 6155},
+ {45, 6175},
+ {49, 6195},
+
+ {53, 6215}, // PSC Channel (4)
+ {57, 6235},
+ {61, 6255},
+ {65, 6275},
+ {69, 6295}, // PSC Channel (5)
+
+ {73, 6315},
+ {77, 6335},
+ {81, 6355},
+ {85, 6375}, // PSC Channel (6)
+ {89, 6395},
+
+ {93, 6415},
+ {97, 6435},
+ {101, 6455}, // PSC Channel (7)
+ {105, 6475},
+ {109, 6495},
+
+ {113, 6515},
+ {117, 6535}, // PSC Channel (8)
+ {121, 6555},
+ {125, 6575},
+ {129, 6595},
+
+ {133, 6615}, // PSC Channel (9)
+ {137, 6635},
+ {141, 6655},
+ {145, 6675},
+ {149, 6695}, // PSC Channel (10)
+
+ {153, 6715},
+ {157, 6735},
+ {161, 6755},
+ {165, 6775}, // PSC Channel (11)
+ {169, 6795},
+
+ {173, 6815},
+ {177, 6835},
+ {181, 6855}, // PSC Channel (12)
+ {185, 6875},
+ {189, 6895},
+
+ {193, 6915},
+ {197, 6935}, // PSC Channel (13)
+ {201, 6955},
+ {205, 6975},
+ {209, 6995},
+
+ {213, 7015}, // PSC Channel (14)
+ {217, 7035},
+ {221, 7055},
+ {225, 7075},
+ {229, 7095}, // PSC Channel (15)
+
+ {233, 7115},
+ {237, 7135},
+ {241, 7155},
+ {245, 7175},
+ {249, 7195},
+
+ {253, 7215},
+ };
+
+ const WDI_CHANNEL_MAPPING_ENTRY channelMap60[] = {
+ {1, 58320},
+ {2, 60480},
+ {3, 62640},
+ {4, 64800},
+ {5, 66960},
+ {6, 69120},
+ };
+
+ // clang-format on
+
+ UINT32 ChannelWidth10Mhz = 10;
+ UINT32 ChannelWidth20Mhz = 20;
+ UINT32 channelWidth2160Mhz = 2160;
+ UINT32 pChannelWidth6Ghz[] = { 20, 40, 80, 160, 320 };
+
+ WIFI_BAND_INFO BandInfo[4] = {}; // Upto 4 bands
+ UINT32 bandInfoCount = 0;
+
+ if (m_SupportedBands & WDI_BAND_ID_2400)
+ {
+ BandInfo[bandInfoCount].BandID = WDI_BAND_ID_2400;
+ BandInfo[bandInfoCount].BandState = TRUE;
+ BandInfo[bandInfoCount].NumValidPhyTypes = ARRAYSIZE(Phy24GHz);
+ BandInfo[bandInfoCount].ValidPhyTypeList = const_cast<WDI_PHY_TYPE*>(Phy24GHz);
+ BandInfo[bandInfoCount].NumValidChannelTypes = ARRAYSIZE(ChannelMap24);
+ BandInfo[bandInfoCount].ValidChannelTypes = const_cast<WDI_CHANNEL_MAPPING_ENTRY*>(ChannelMap24);
+ BandInfo[bandInfoCount].NumChannelWidths = 1;
+ BandInfo[bandInfoCount].ChannelWidthList = &ChannelWidth10Mhz;
+ bandInfoCount++;
+ }
+ NT_ASSERT(bandInfoCount <= 1);
+
+ if (m_SupportedBands & WDI_BAND_ID_5000)
+ {
+ BandInfo[bandInfoCount].BandID = WDI_BAND_ID_5000;
+ BandInfo[bandInfoCount].BandState = TRUE;
+ BandInfo[bandInfoCount].NumValidPhyTypes = ARRAYSIZE(Phy5GHz);
+ BandInfo[bandInfoCount].ValidPhyTypeList = const_cast<WDI_PHY_TYPE*>(Phy5GHz);
+ BandInfo[bandInfoCount].NumValidChannelTypes = ARRAYSIZE(ChannelMap5);
+ BandInfo[bandInfoCount].ValidChannelTypes = const_cast<WDI_CHANNEL_MAPPING_ENTRY*>(ChannelMap5);
+ BandInfo[bandInfoCount].NumChannelWidths = 1;
+ BandInfo[bandInfoCount].ChannelWidthList = &ChannelWidth20Mhz;
+ bandInfoCount++;
+ }
+ NT_ASSERT(bandInfoCount <= 2);
+
+ if (m_SupportedBands & WDI_BAND_ID_6000)
+ {
+ BandInfo[bandInfoCount].BandID = WDI_BAND_ID_6000; // 6
+ BandInfo[bandInfoCount].BandState = TRUE;
+ BandInfo[bandInfoCount].NumValidPhyTypes = ARRAYSIZE(Phy6GHz);
+ BandInfo[bandInfoCount].ValidPhyTypeList = const_cast<WDI_PHY_TYPE*>(Phy6GHz);
+ BandInfo[bandInfoCount].NumValidChannelTypes = ARRAYSIZE(channelMap6);
+ BandInfo[bandInfoCount].ValidChannelTypes = const_cast<WDI_CHANNEL_MAPPING_ENTRY*>(channelMap6);
+ BandInfo[bandInfoCount].NumChannelWidths = ARRAYSIZE(pChannelWidth6Ghz);
+ BandInfo[bandInfoCount].ChannelWidthList = pChannelWidth6Ghz;
+ bandInfoCount++;
+ }
+
+ NT_ASSERT(bandInfoCount <= 3);
+ if (m_SupportedBands & WDI_BAND_ID_60000)
+ {
+ BandInfo[bandInfoCount].BandID = WDI_BAND_ID_60000; // 60
+ BandInfo[bandInfoCount].BandState = TRUE;
+ BandInfo[bandInfoCount].NumValidPhyTypes = ARRAYSIZE(pPhy60GHz);
+ BandInfo[bandInfoCount].ValidPhyTypeList = const_cast<WDI_PHY_TYPE*>(pPhy60GHz);
+ BandInfo[bandInfoCount].NumValidChannelTypes = ARRAYSIZE(channelMap60);
+ BandInfo[bandInfoCount].ValidChannelTypes = const_cast<WDI_CHANNEL_MAPPING_ENTRY*>(channelMap60);
+ BandInfo[bandInfoCount].NumChannelWidths = 1;
+ BandInfo[bandInfoCount].ChannelWidthList = &channelWidth2160Mhz;
+ bandInfoCount++;
+ }
+ NT_ASSERT(bandInfoCount <= 4);
+
+ BandCaps.NumBands = bandInfoCount;
+ BandCaps.BandInfoList = BandInfo;
+
+ WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(
+ WifiDeviceSetBandCapabilities(m_Device, &BandCaps),
+ "Failed to set band capabilities");
+
+ WIFI_PHY_CAPABILITIES PhyCaps = {};
+ WIFI_PHY_CAPABILITIES_INIT(&PhyCaps);
+
+ WIFI_PHY_INFO PhyInfoList[3];
+
+ const WDI_DATA_RATE_ENTRY DataRateListErp[] = {
+ {WDI_DATA_RATE_RX_RATE | WDI_DATA_RATE_TX_RATE, 2},
+ {WDI_DATA_RATE_RX_RATE | WDI_DATA_RATE_TX_RATE, 4},
+ {WDI_DATA_RATE_RX_RATE | WDI_DATA_RATE_TX_RATE, 22},
+ {WDI_DATA_RATE_RX_RATE | WDI_DATA_RATE_TX_RATE, 108} };
+ const WDI_DATA_RATE_ENTRY DataRateListOfdm[] = {
+ {WDI_DATA_RATE_RX_RATE | WDI_DATA_RATE_TX_RATE, 2}, {WDI_DATA_RATE_RX_RATE | WDI_DATA_RATE_TX_RATE, 108} };
+ const WDI_DATA_RATE_ENTRY DataRateListEht[] = {
+ {WDI_DATA_RATE_RX_RATE | WDI_DATA_RATE_TX_RATE, 2}, {WDI_DATA_RATE_RX_RATE | WDI_DATA_RATE_TX_RATE, 108} };
+
+ PhyInfoList[0].PhyType = WDI_PHY_TYPE_ERP;
+ PhyInfoList[0].NumberDataRateEntries = ARRAYSIZE(DataRateListErp);
+ RtlCopyMemory(&PhyInfoList[0].DataRateList, &DataRateListErp, sizeof(DataRateListErp));
+
+ PhyInfoList[1].PhyType = WDI_PHY_TYPE_HE;
+ PhyInfoList[1].NumberDataRateEntries = ARRAYSIZE(DataRateListOfdm);
+ RtlCopyMemory(&PhyInfoList[1].DataRateList, &DataRateListOfdm, sizeof(DataRateListOfdm));
+
+ PhyInfoList[2].PhyType = WDI_PHY_TYPE_EHT;
+ PhyInfoList[2].NumberDataRateEntries = ARRAYSIZE(DataRateListEht);
+ RtlCopyMemory(&PhyInfoList[2].DataRateList, &DataRateListEht, sizeof(DataRateListEht));
+
+ PhyCaps.NumPhyTypes = ARRAYSIZE(PhyInfoList);
+ PhyCaps.PhyInfoList = PhyInfoList;
+
+ WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(
+ WifiDeviceSetPhyCapabilities(m_Device, &PhyCaps),
+ "Failed to set PHY capabilities");
+
+ return STATUS_SUCCESS;
+}
+
+_Use_decl_annotations_
+NTSTATUS WifiHAL::WifiIhvReset(const WDI_TASK_DOT11_RESET_PARAMETERS& ResetParameters, const PWDI_MESSAGE_HEADER, UINT)
+{
+ if (0 == ResetParameters.Optional.ResetMACAddress_IsPresent)
+ {
+ WFCTrace("DOT11 Reset, set default MIB = %d, no MAC Address specified\n", ResetParameters.Dot11ResetParameters.SetDefaultMIB);
+ }
+ else
+ {
+ WFCTrace(
+ "DOT11 Reset, set default MIB = %d, MAC Address = %2x:%2x:%2x:%2x:%2x:%2x\n",
+ ResetParameters.Dot11ResetParameters.SetDefaultMIB,
+ ResetParameters.ResetMACAddress.Address[0],
+ ResetParameters.ResetMACAddress.Address[1],
+ ResetParameters.ResetMACAddress.Address[2],
+ ResetParameters.ResetMACAddress.Address[3],
+ ResetParameters.ResetMACAddress.Address[4],
+ ResetParameters.ResetMACAddress.Address[5]);
+ }
+
+ // Reset the connection ID in case the previous connection attempt did not complete
+ m_LastConnectEntryId = 0;
+
+ return STATUS_SUCCESS;
+}
+
+_Use_decl_annotations_
+NTSTATUS WifiHAL::WifiIhvSetRadioState(const WDI_SET_RADIO_STATE_PARAMETERS& RadioState, const PWDI_MESSAGE_HEADER pWdiHeader, UINT)
+{
+ WFCInfo("Setting OS requested Radio State: SoftwareRadioState=%u\n", RadioState.SoftwareRadioState);
+ if (RadioState.SoftwareRadioState != m_CurrentRadioState)
+ {
+ // Change the radio state
+ m_CurrentRadioState = RadioState.SoftwareRadioState;
+
+ // Send the radio state indication
+ WDI_INDICATION_RADIO_STATUS_PARAMETERS RadioStatusParams = {};
+ UINT8* pOutput = nullptr;
+ ULONG cbOutput = 0;
+
+ RadioStatusParams.RadioState.HardwareState = TRUE;
+ RadioStatusParams.RadioState.SoftwareState = m_CurrentRadioState;
+ if (GenerateWdiIndicationRadioStatus(&RadioStatusParams, 0, m_TlvContext, &cbOutput, &pOutput) == NDIS_STATUS_SUCCESS)
+ {
+ WFCInfo("Indicate OS with Radio State: SoftwareRadioState=%u\n", m_CurrentRadioState);
+ WifiIhvSendUnsolicitedIndicationToOs(m_Device, pWdiHeader, WDI_INDICATION_RADIO_STATUS, pOutput, cbOutput);
+ FreeGenerated(pOutput);
+ }
+ }
+
+ return STATUS_SUCCESS;
+}
+
+_Use_decl_annotations_
+NTSTATUS WifiHAL::WifiIhvScan(const WDI_SCAN_PARAMETERS& ScanParameters, const PWDI_MESSAGE_HEADER pWdiHeader, UINT)
+{
+ for (UINT8 connectEntry = 1; connectEntry < ConnectEntryId_MAX; connectEntry++)
+ {
+ if (m_SupportedBands & g_ConnectEntries[connectEntry].BandId)
+ {
+ PUCHAR pBssEntry = g_ConnectEntries[connectEntry].pTlvBssEntry;
+ //
+ // If currently connected, see if the connected entry should be skipped
+ //
+ if ((m_LastConnectEntryId != 0) &&
+ (RtlCompareMemory(&m_ConnectedPeer, &pBssEntry[8], sizeof(DOT11_MAC_ADDRESS)) == sizeof(DOT11_MAC_ADDRESS)))
+ {
+ // Already connected, don't report this entry
+ continue;
+ }
+
+ // TODO: Skip the IHV band as it is not being reported in capabilities
+ if (g_ConnectEntries[connectEntry].BandId == TESTMP_BAND_IHV)
+ {
+ continue;
+ }
+
+ // Send the BSS entry indication
+ WifiIhvSendUnsolicitedIndicationToOs(
+ m_Device,
+ pWdiHeader,
+ WDI_INDICATION_BSS_ENTRY_LIST,
+ g_ConnectEntries[connectEntry].pTlvBssEntry,
+ g_ConnectEntries[connectEntry].TlvBssEntrySize);
+ }
+ }
+
+ //
+ // See if the hidden network needs to be indicated
+ //
+ if ((ScanParameters.SSIDList.ElementCount > 0) && (ScanParameters.SSIDList.pElements[0].ElementCount == 8) &&
+ (ScanParameters.SSIDList.pElements[0].pElements[4] == 'H') && (ScanParameters.SSIDList.pElements[0].pElements[5] == 'I') &&
+ (ScanParameters.SSIDList.pElements[0].pElements[6] == 'D') && (ScanParameters.SSIDList.pElements[0].pElements[7] == 'E'))
+ {
+ WifiIhvSendUnsolicitedIndicationToOs(
+ m_Device, pWdiHeader, WDI_INDICATION_BSS_ENTRY_LIST, s_TLV_BSS_Entry_ProbeResponse_8_Hidden, sizeof(s_TLV_BSS_Entry_ProbeResponse_8_Hidden));
+ }
+
+ return STATUS_SUCCESS;
+}
+
+_Use_decl_annotations_
+NTSTATUS WifiHAL::WifiIhvConnect(const WDI_TASK_CONNECT_PARAMETERS& ConnectParameters, const PWDI_MESSAGE_HEADER pWdiHeader, UINT)
+{
+ NT_ASSERT(m_LastConnectEntryId == 0);
+#ifdef NETV_SUPPORT_TX_DEMUXING
+ if (m_LastConnectEntryId != 0) // Not Disconnected State
+ {
+ WifiAdapterRemovePeer(
+ WifiGetIhvDeviceContext(m_Device)->netAdapters[pWdiHeader->PortId],
+ reinterpret_cast<NET_EUI48_ADDRESS*>(&m_ConnectedPeer));
+ }
+#endif //NETV_SUPPORT_TX_DEMUXING
+ WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(WifiIhvPerformAssociation(
+ &ConnectParameters.PreferredBSSEntryList, &ConnectParameters.ConnectParameters.AuthenticationAlgorithms, pWdiHeader),
+ "Failed to perform association");
+
+ //
+ // WPA3-SAE requires the SAE Exchange, so do not complete the Connection request until the SAE exchange is complete
+ //
+ if (WDI_AUTH_ALGO_WPA3_SAE == m_LastAuthAlgo)
+ {
+ m_LastConnectTransactionId = pWdiHeader->TransactionId;
+ }
+ else
+ {
+ m_LastConnectTransactionId = 0;
+ }
+ return STATUS_SUCCESS;
+}
+
+_Use_decl_annotations_
+NTSTATUS WifiHAL::WifiIhvSendLinkStateIndication(_In_ PWDI_MESSAGE_HEADER pWdiHeader, ULONG numLinks)
+{
+ // Report link quality
+ NTSTATUS ntStatus = STATUS_SUCCESS;
+ PWIFI_IHV_DEVICE_CONTEXT pDeviceContext = WifiGetIhvDeviceContext(m_Device);
+ WDI_INDICATION_LINK_STATE_CHANGE_PARAMETERS linkStateChangeParameters = {};
+ WDI_LINK_INFO_CONTAINER pLinkInfo[2] = {};
+ UINT8* pOutput = nullptr;
+ ULONG cbOutput = 0;
+
+ RtlCopyMemory(
+ &linkStateChangeParameters.LinkStateChangeParameters.PeerMACAddress, &m_ConnectedPeer, sizeof(DOT11_MAC_ADDRESS));
+ linkStateChangeParameters.LinkStateChangeParameters.TxLinkSpeed = 30000;
+ linkStateChangeParameters.LinkStateChangeParameters.RxLinkSpeed = 30000;
+ linkStateChangeParameters.LinkStateChangeParameters.LinkQuality = 56;
+
+ // Default linkId for non-Mlo connections is 0
+ pLinkInfo[0].LinkID = 0;
+ RtlCopyMemory(&pLinkInfo[0].LocalLinkMACAddress, &m_LocalLinkAddresses[0], sizeof(DOT11_MAC_ADDRESS));
+ RtlCopyMemory(&pLinkInfo[0].PeerLinkMACAddress, &m_ConnectedPeer, sizeof(DOT11_MAC_ADDRESS));
+ pLinkInfo[0].ChannelNumber = 6;
+ pLinkInfo[0].BandId = WDI_BAND_ID_2400;
+ pLinkInfo[0].RSSI = -50;
+ pLinkInfo[0].Bandwidth = 40;
+ pLinkInfo[0].TxMCS = 3;
+ pLinkInfo[0].RxMCS = 4;
+
+ if (numLinks > 1)
+ {
+ // For Mlo connections, set the link ID for the first link to 1
+ pLinkInfo[0].LinkID = 1;
+
+ pLinkInfo[1].LinkID = 2;
+ RtlCopyMemory(&pLinkInfo[1].LocalLinkMACAddress, &m_LocalLinkAddresses[1], sizeof(DOT11_MAC_ADDRESS));
+ RtlCopyMemory(&pLinkInfo[1].PeerLinkMACAddress, &m_ConnectedPeer, sizeof(DOT11_MAC_ADDRESS));
+ pLinkInfo[1].ChannelNumber = 36;
+ pLinkInfo[1].BandId = WDI_BAND_ID_5000;
+ pLinkInfo[1].RSSI = -30;
+ pLinkInfo[1].Bandwidth = 160;
+ pLinkInfo[1].TxMCS = 8;
+ pLinkInfo[1].RxMCS = 9;
+ }
+
+ linkStateChangeParameters.LinkInfo.pElements = pLinkInfo;
+ linkStateChangeParameters.LinkInfo.ElementCount = numLinks > 1 ? 2 : 1;
+
+ ntStatus = GenerateWdiIndicationLinkStateChangeFromIhv(&linkStateChangeParameters, 0, &pDeviceContext->TlvContext, &cbOutput, &pOutput);
+ if (STATUS_SUCCESS == ntStatus)
+ {
+ WifiIhvSendUnsolicitedIndicationToOs(m_Device, pWdiHeader, WDI_INDICATION_LINK_STATE_CHANGE, pOutput, cbOutput);
+ FreeGenerated(pOutput);
+ }
+ else
+ {
+ WFCError("Failed to generate WDI_INDICATION_LINK_STATE_CHANGE - 0x%08x\n", ntStatus);
+ }
+
+ return ntStatus;
+}
+
+_Use_decl_annotations_
+NTSTATUS WifiHAL::WifiIhvPerformAssociation(
+ const struct ArrayOfElements<WDI_CONNECT_BSS_ENTRY_CONTAINER>* pPreferredBSSEntryList,
+ const struct ArrayOfElements<WDI_AUTH_ALGORITHM>* pAuthenticationAlgorithms,
+ const PWDI_MESSAGE_HEADER pWdiHeader)
+{
+
+ ULONG bssIndex = 0;
+ ULONG connectEntry = ConnectEntryId_MAX;
+ NTSTATUS ntStatus = STATUS_SUCCESS;
+ UINT32 NewConnectEntryId = 0; // Disconnected State
+ WDI_AUTH_ALGORITHM NewAuthAlgo = pAuthenticationAlgorithms->pElements[0];
+ UCHAR pucData[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10 };
+
+ PWIFI_IHV_DEVICE_CONTEXT pDeviceContext = WifiGetIhvDeviceContext(m_Device);
+
+ ULONG assocStatus = WDI_ASSOC_STATUS_SUCCESS;
+
+ do
+ {
+ // We search for the BSSID pattern to figure out what AP we are trying to connect to
+ for (bssIndex = 0; bssIndex < pPreferredBSSEntryList->ElementCount; bssIndex++)
+ {
+ for (connectEntry = 1; connectEntry < ConnectEntryId_MAX; connectEntry++)
+ {
+ if (RtlCompareMemory(
+ pPreferredBSSEntryList->pElements[bssIndex].BSSID.Address,
+ g_ConnectEntries[connectEntry].pMacAddress,
+ sizeof(DOT11_MAC_ADDRESS)) == sizeof(DOT11_MAC_ADDRESS))
+ {
+ PUCHAR pAssociationResult = g_ConnectEntries[connectEntry].pTlvAssociationResult;
+
+ NewConnectEntryId = connectEntry;
+ m_LastConnectTransactionId = pWdiHeader->TransactionId;
+#ifdef NETV_SUPPORT_TX_DEMUXING
+ // add peer on datapath
+ WifiAdapterAddPeer(pDeviceContext->netAdapters[pWdiHeader->PortId],
+ reinterpret_cast<NET_EUI48_ADDRESS*>(g_ConnectEntries[connectEntry].pMacAddress));
+#endif // NETV_SUPPORT_TX_DEMUXING
+#ifdef WIFI_IHV_HANDSHAKE
+ // Pretend to recieve M1 on datapath before, the association complete has made it up the control path.
+ RecieveDatapathFrame(0x33, sizeof(pucData), pucData);
+#endif // WIFI_IHV_HANDSHAKE
+
+ if (NewAuthAlgo == WDI_AUTH_ALGO_WPA3_SAE)
+ {
+ WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED_PARAMETERS SAEAuthParamsNeeded;
+ UINT8* pOutput = nullptr;
+ ULONG cbOutput = 0;
+ NDIS_STATUS ndisStatus = NDIS_STATUS_SUCCESS;
+
+ //
+ // Handle special case for WPA3-SAE
+ // Send the Indication to request additonal SAE params
+ //
+ g_dwSaeResendConfirmRequested = 0;
+ SAEAuthParamsNeeded.SAEIndicationType = WDI_SAE_INDICATION_TYPE_COMMIT_REQUEST_PARAMS_NEEDED;
+ RtlCopyMemory(
+ SAEAuthParamsNeeded.BssId.Address, g_ConnectEntries[connectEntry].pMacAddress, sizeof(DOT11_MAC_ADDRESS));
+
+ ndisStatus = GenerateWdiIndicationSaeAuthParamsNeeded(
+ &SAEAuthParamsNeeded, 0, &pDeviceContext->TlvContext, &cbOutput, &pOutput);
+ if (ndisStatus == NDIS_STATUS_SUCCESS)
+ {
+ WFCInfo("[SAE] Indicating request for COMMIT_REQUEST_PARAMS_NEEDED ...");
+
+ WifiIhvSendUnsolicitedIndicationToOs(m_Device, pWdiHeader, WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED, pOutput, cbOutput);
+
+ FreeGenerated(pOutput);
+
+ break;
+ }
+ }
+
+ // Get the assoc status
+ RtlCopyMemory(&assocStatus, &pAssociationResult[18], sizeof(ULONG));
+
+ // Send the association indication
+ WifiIhvSendUnsolicitedIndicationToOs(
+ m_Device,
+ pWdiHeader,
+ WDI_INDICATION_ASSOCIATION_RESULT,
+ g_ConnectEntries[connectEntry].pTlvAssociationResult,
+ g_ConnectEntries[connectEntry].TlvAssociationResultSize);
+
+ break;
+ }
+ }
+
+ // If we found a matching BSSID entry, we are done
+ if (connectEntry < ConnectEntryId_MAX)
+ {
+ break;
+ }
+ }
+
+ } while (FALSE);
+
+ if (WDI_ASSOC_STATUS_SUCCESS != assocStatus || 0 == NewConnectEntryId || bssIndex >= pPreferredBSSEntryList->ElementCount)
+ {
+ NewConnectEntryId = 0; // Disconnected State
+ NewAuthAlgo = WDI_AUTH_ALGO_80211_OPEN;
+ ntStatus = STATUS_UNSUCCESSFUL;
+ }
+ else
+ {
+ RtlCopyMemory(&m_ConnectedPeer, pPreferredBSSEntryList->pElements[bssIndex].BSSID.Address, sizeof(DOT11_MAC_ADDRESS));
+ }
+
+ m_LastConnectEntryId = NewConnectEntryId;
+ m_LastAuthAlgo = NewAuthAlgo;
+
+ if (STATUS_SUCCESS == ntStatus && (WDI_AUTH_ALGO_WPA3_SAE != m_LastAuthAlgo))
+ {
+ // Report link quality
+ ntStatus = WifiIhvSendLinkStateIndication(pWdiHeader, 2);
+ }
+
+ return ntStatus;
+}
+
+_Use_decl_annotations_
+NTSTATUS WifiHAL::WifiIhvSetSaeAuthParams(const WDI_SET_SAE_AUTH_PARAMS_COMMAND& setSAEAuthParams, const PWDI_MESSAGE_HEADER pWdiHeader, UINT)
+{
+ //Since this is DIRECT OID, need to check the m_LastConnectTransactionId match
+ if (pWdiHeader->TransactionId != m_LastConnectTransactionId)
+ {
+ WFCError("WDI_SET_SAE_AUTH_PARAMS called with invalid TransactionId: %llu, expected: %llu\n",
+ pWdiHeader->TransactionId, m_LastConnectTransactionId);
+ return STATUS_INVALID_DEVICE_REQUEST;
+ }
+
+ WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED_PARAMETERS SAEAuthParamsNeeded{};
+ UINT8* pOutput = nullptr;
+ ULONG cbOutput = 0;
+
+ // Commit frame when Status = 0: FiniteCyclicGroup + Scalar + Element
+ // Commit frame when Status = 76: FiniteCyclicGroup + AntiCloggingToken
+ WFCInfo("WDI_SET_SAE_AUTH_PARAMS called!!!\n");
+ if (WDI_SAE_REQUEST_TYPE_COMMIT_PARAMS == setSAEAuthParams.SAERequestType)
+ {
+ WFCInfo("[SAE] WDI_SET_SAE_AUTH_PARAMS has Commit request for Tx, Setting CommitResponse for Rx\n");
+
+ SAEAuthParamsNeeded.SAEIndicationType = WDI_SAE_INDICATION_TYPE_COMMIT_FRAME;
+ SAEAuthParamsNeeded.Optional.SAECommitFrame_IsPresent = 1;
+
+ //
+ // Send reflection attack first
+ //
+ SAEAuthParamsNeeded.SAECommitFrame.ElementCount = sizeof(pucSAECommitResponseReflection);
+ SAEAuthParamsNeeded.SAECommitFrame.pElements = pucSAECommitResponseReflection;
+ }
+ else if (
+ (WDI_SAE_REQUEST_TYPE_FAILURE == setSAEAuthParams.SAERequestType) &&
+ (WDI_SAE_STATUS_COMMIT_MESSAGE_REFLECTION_ATTACK_DETECTED == setSAEAuthParams.SAEStatus))
+ {
+ WFCInfo("[SAE] WDI_SET_SAE_AUTH_PARAMS returned Reflection error -- Inidicate proper CommitResponse for Rx\n");
+
+ SAEAuthParamsNeeded.SAEIndicationType = WDI_SAE_INDICATION_TYPE_CONFIRM_FRAME;
+ SAEAuthParamsNeeded.Optional.SAECommitFrame_IsPresent = 1;
+ SAEAuthParamsNeeded.SAECommitFrame.ElementCount = sizeof(pucSAECommitResponse);
+ SAEAuthParamsNeeded.SAECommitFrame.pElements = pucSAECommitResponse;
+ }
+ else if (WDI_SAE_REQUEST_TYPE_CONFIRM_PARAMS == setSAEAuthParams.SAERequestType)
+ {
+ WFCInfo("[SAE] WDI_SET_SAE_AUTH_PARAMS has Confirm request for Tx, Setting ConfirmResponse for Rx\n");
+
+ if (g_dwSaeResendConfirmRequested)
+ {
+ SAEAuthParamsNeeded.SAEIndicationType = WDI_SAE_INDICATION_TYPE_CONFIRM_FRAME;
+ SAEAuthParamsNeeded.Optional.SAECommitFrame_IsPresent = 1;
+ SAEAuthParamsNeeded.SAECommitFrame.ElementCount = sizeof(pucSAEConfirmResponse);
+ SAEAuthParamsNeeded.SAECommitFrame.pElements = pucSAEConfirmResponse;
+ }
+ else
+ {
+ g_dwSaeResendConfirmRequested = 1;
+
+ SAEAuthParamsNeeded.SAEIndicationType = WDI_SAE_INDICATION_TYPE_CONFIRM_REQUEST_RESEND_REQUEST;
+ }
+ }
+ else
+ {
+ if (WDI_SAE_REQUEST_TYPE_FAILURE == setSAEAuthParams.SAERequestType)
+ {
+ WFCInfo("[SAE] OID_WDI_SET_SAE_AUTH_PARAMS has indicated error - %d\n", setSAEAuthParams.SAEStatus);
+ }
+ else if (WDI_SAE_REQUEST_TYPE_SUCCESS == setSAEAuthParams.SAERequestType)
+ {
+ WFCInfo("[SAE] OID_WDI_SET_SAE_AUTH_PARAMS has indicated SAE success - %d\n", setSAEAuthParams.SAEStatus);
+ }
+ else
+ {
+ WFCInfo("[SAE] OID_WDI_SET_SAE_AUTH_PARAMS has set INVALID Request type = %d\n", setSAEAuthParams.SAERequestType);
+ }
+
+ // Send the association indication
+ // This assumes that the association result fields are in the right order
+ if (WDI_AUTH_ALGO_WPA3_SAE == m_LastAuthAlgo)
+ {
+ g_ConnectEntries[m_LastConnectEntryId].pTlvAssociationResult[27] = (UCHAR)WDI_AUTH_ALGO_WPA3_SAE;
+ }
+ else
+ {
+ g_ConnectEntries[m_LastConnectEntryId].pTlvAssociationResult[27] = (UCHAR)WDI_AUTH_ALGO_RSNA_PSK;
+ }
+
+ WifiIhvSendUnsolicitedIndicationToOs(
+ m_Device,
+ pWdiHeader,
+ WDI_INDICATION_ASSOCIATION_RESULT,
+ g_ConnectEntries[m_LastConnectEntryId].pTlvAssociationResult,
+ g_ConnectEntries[m_LastConnectEntryId].TlvAssociationResultSize);
+ RtlCopyMemory(&m_ConnectedPeer, &g_ConnectEntries[m_LastConnectEntryId].pMacAddress, sizeof(DOT11_MAC_ADDRESS));
+
+ // Report link quality
+ WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(WifiIhvSendLinkStateIndication(pWdiHeader, 1),
+ "Failed WifiIhvSendLinkStateIndication");
+
+ // Complete the transaction to let the M4 hanlder WifiIhvGetPendingTransitionStatus know that association is complete
+ m_LastConnectTransactionId = 0;
+
+#ifdef WIFI_IHV_HANDSHAKE
+ //
+ // Receive M1 frame of 4-way handshake
+ //
+ RecieveDatapathFrame(0x33, sizeof(pucM1SaeFrame), pucM1SaeFrame);
+
+ //
+ // Receive M3 frame of 4-way handshake
+ //
+ RecieveDatapathFrame(0x33, sizeof(pucM3SaeFrame), pucM3SaeFrame);
+#endif
+ return STATUS_SUCCESS;
+ }
+
+ RtlCopyMemory(SAEAuthParamsNeeded.BssId.Address, &g_ConnectEntries[m_LastConnectEntryId].pMacAddress, sizeof(DOT11_MAC_ADDRESS));
+
+ auto ndisStatus =
+ GenerateWdiIndicationSaeAuthParamsNeeded(&SAEAuthParamsNeeded, 0, m_TlvContext, &cbOutput, &pOutput);
+ if (ndisStatus == NDIS_STATUS_SUCCESS)
+ {
+ WifiIhvSendUnsolicitedIndicationToOs(m_Device, pWdiHeader, WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED, pOutput, cbOutput);
+
+ FreeGenerated(pOutput);
+ }
+ else
+ {
+ WFCError("Failed to generate WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED - 0x%08x\n", ndisStatus);
+ }
+
+ return STATUS_SUCCESS;
+}
+
+_Use_decl_annotations_
+NTSTATUS WifiHAL::WifiIhvDisconnect(const WDI_TASK_DISCONNECT_PARAMETERS&, const PWDI_MESSAGE_HEADER pWdiHeader, UINT)
+{
+ UCHAR s_TLV_Disassociation[] =
+ {
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0xBC, 0x00,
+ 0x0A, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+
+ // WDI_TLV Need Peer Cleanup Params
+ 0xb4, 0x00,
+ 0x01, 0x00,
+
+ 0x00
+ };
+ WDI_ASSOC_STATUS DisassocStatus = WDI_ASSOC_STATUS_DISASSOCIATED_BY_HOST;
+
+ RtlCopyMemory(&s_TLV_Disassociation[4], &m_ConnectedPeer, sizeof(DOT11_MAC_ADDRESS));
+ RtlCopyMemory(&s_TLV_Disassociation[10], &DisassocStatus, sizeof(ULONG));
+
+ // Send the disassociation indication
+ WifiIhvSendUnsolicitedIndicationToOs(m_Device, pWdiHeader, WDI_INDICATION_DISASSOCIATION, s_TLV_Disassociation, sizeof(s_TLV_Disassociation));
+
+ m_LastConnectEntryId = 0; // Disconnected State
+
+#ifdef NETV_SUPPORT_TX_DEMUXING
+ WifiAdapterRemovePeer(
+ WifiGetIhvDeviceContext(m_Device)->netAdapters[pWdiHeader->PortId],
+ reinterpret_cast<NET_EUI48_ADDRESS*>(&m_ConnectedPeer));
+#endif
+ RtlZeroMemory(&m_ConnectedPeer, sizeof(DOT11_MAC_ADDRESS));
+
+ return STATUS_SUCCESS;
+}
+
+// -------- WDI_GET_SUPPORTED_DEVICE_SERVICES (OID_WDI_GET_SUPPORTED_DEVICES) --------
+// Property GET: the request has no input (Inputs is empty). Builds the
+// WDI_TLV_DEVICE_SERVICE_GUID_LIST result advertising GUID_OEM_SAMPLE_DEVICE_SERVICE and
+// serializes it via the generated TLV generator, so the OS learns which device services
+// this driver supports.
+// OutBuffer receives the full WDI message (header + TLVs); BytesWritten = total length.
+_Use_decl_annotations_
+NTSTATUS WifiHAL::WifiIhvGetSupportedDeviceServices(const WDI_GET_SUPPORTED_DEVICE_SERVICES_INPUTS& Inputs, void* OutBuffer, ULONG OutBufferLen, ULONG& BytesWritten)
+{
+ UNREFERENCED_PARAMETER(Inputs); // GET request carries no input data
+
+ BytesWritten = sizeof(WDI_MESSAGE_HEADER);
+
+ if (OutBuffer == nullptr || OutBufferLen < sizeof(WDI_MESSAGE_HEADER))
+ {
+ WFCError("GetSupportedDeviceServices: invalid out buffer (OutBufferLen=%u)", OutBufferLen);
+ return STATUS_INVALID_PARAMETER;
+ }
+
+ // WDI_TLV_DEVICE_SERVICE_GUID_LIST: a list containing our single device service GUID.
+ // WDI_GUID_LIST_CONTAINER is ArrayOfElements<GUID>; SimpleAssign points it at our
+ // stack array (the generator copies the data while serializing the TLV).
+ GUID supportedServices[] = { GUID_OEM_SAMPLE_DEVICE_SERVICE };
+
+ WDI_GET_SUPPORTED_DEVICE_SERVICES_PARAMETERS results{};
+ results.DeviceServiceGUIDList.SimpleAssign(supportedServices, ARRAYSIZE(supportedServices));
+
+ // Generate the TLV byte stream. ReservedHeaderLength reserves room for the
+ // WDI_MESSAGE_HEADER at the front of the produced buffer.
+ ULONG generatedLength = 0;
+ UINT8* pGenerated = nullptr;
+
+ NDIS_STATUS genStatus = GenerateWdiGetSupportedDeviceServices(
+ &results, sizeof(WDI_MESSAGE_HEADER), m_TlvContext, &generatedLength, &pGenerated);
+
+ NTSTATUS ntStatus = Wifi::ConvertNDISSTATUSToNTSTATUS(genStatus);
+ if (!NT_SUCCESS(ntStatus) || pGenerated == nullptr)
+ {
+ WFCError("GetSupportedDeviceServices: Generate failed, status=%!STATUS!", ntStatus);
+ return ntStatus;
+ }
+
+ if (OutBufferLen < generatedLength)
+ {
+ WFCError("GetSupportedDeviceServices: out buffer too small (have=%u need=%u)",
+ OutBufferLen, generatedLength);
+ FreeGenerated(pGenerated);
+ return STATUS_BUFFER_TOO_SMALL;
+ }
+
+ RtlCopyMemory(OutBuffer, pGenerated, generatedLength);
+ BytesWritten = generatedLength;
+ FreeGenerated(pGenerated);
+
+ WFCInfo("GetSupportedDeviceServices: advertised %u device service(s), %u bytes",
+ ARRAYSIZE(supportedServices), BytesWritten);
+ return STATUS_SUCCESS;
+}
+
+// -------- OEM Device Service Command (OID_WDI_DEVICE_SERVICE_COMMAND) --------
+// Reads the request data blob (WDI_TLV_DEVICE_SERVICE_PARAMS_DATA_BLOB) parsed into
+// Inputs.Params, expects "Hello, My Driver", and returns "Nice to meet you, My OEM"
+// as the response data blob, serialized via the generated TLV generator.
+// OutBuffer receives the full WDI message (header + TLVs); BytesWritten = total length.
+_Use_decl_annotations_
+NTSTATUS WifiHAL::WifiIhvDeviceServiceCommand(const WDI_DEVICE_SERVICE_COMMAND_INPUTS& Inputs, void* OutBuffer, ULONG OutBufferLen, ULONG& BytesWritten)
+{
+ BytesWritten = sizeof(WDI_MESSAGE_HEADER);
+
+ if (OutBuffer == nullptr || OutBufferLen < sizeof(WDI_MESSAGE_HEADER))
+ {
+ WFCError("OEM device service: invalid out buffer (OutBufferLen=%u)", OutBufferLen);
+ return STATUS_INVALID_PARAMETER;
+ }
+
+ // Log the request data blob ("Hello, My Driver"), if present.
+ if (Inputs.Optional.Params_IsPresent &&
+ Inputs.Params.ElementCount > 0 &&
+ Inputs.Params.pElements[0].ElementCount > 0 &&
+ Inputs.Params.pElements[0].pElements != nullptr)
+ {
+ WFCInfo("OEM device service: opcode=0x%08X, received %u-byte data blob: %hs",
+ Inputs.Opcode,
+ Inputs.Params.pElements[0].ElementCount,
+ reinterpret_cast<const char*>(Inputs.Params.pElements[0].pElements));
+ }
+ else
+ {
+ WFCInfo("OEM device service: opcode=0x%08X, no input data blob", Inputs.Opcode);
+ }
+
+ // Build the response data blob ("Nice to meet you, My OEM"), including the null terminator.
+ // SimpleAssign points the blob at this buffer (no copy); the generator copies the bytes
+ // while serializing, and the buffer outlives that call.
+ UINT8 responseBytes[] = OEM_DEVICE_SERVICE_RESPONSE_STRING;
+
+ WDI_BYTE_BLOB responseBlob{};
+ responseBlob.SimpleAssign(responseBytes, static_cast<UINT32>(sizeof(responseBytes)));
+
+ WDI_DEVICE_SERVICE_COMMAND_PARAMETERS params{};
+ params.Optional.Params_IsPresent = TRUE;
+ params.Params.SimpleAssign(&responseBlob, 1);
+
+ // Serialize WDI_TLV_DEVICE_SERVICE_PARAMS_DATA_BLOB into the response message.
+ ULONG generatedLength = 0;
+ UINT8* pGenerated = nullptr;
+
+ NDIS_STATUS genStatus = GenerateWdiDeviceServiceCommand(
+ &params, sizeof(WDI_MESSAGE_HEADER), m_TlvContext, &generatedLength, &pGenerated);
+
+ NTSTATUS ntStatus = Wifi::ConvertNDISSTATUSToNTSTATUS(genStatus);
+ if (!NT_SUCCESS(ntStatus) || pGenerated == nullptr)
+ {
+ WFCError("OEM device service: Generate failed, status=%!STATUS!", ntStatus);
+ return ntStatus;
+ }
+
+ if (OutBufferLen < generatedLength)
+ {
+ WFCError("OEM device service: out buffer too small (have=%u need=%u)",
+ OutBufferLen, generatedLength);
+ FreeGenerated(pGenerated);
+ return STATUS_BUFFER_TOO_SMALL;
+ }
+
+ RtlCopyMemory(OutBuffer, pGenerated, generatedLength);
+ BytesWritten = generatedLength;
+ FreeGenerated(pGenerated);
+
+ WFCInfo("OEM device service: responded with \"%hs\" (%u bytes)",
+ reinterpret_cast<const char*>(responseBytes), BytesWritten);
+ return STATUS_SUCCESS;
+}
diff --git a/network/wlan/wificx/drivercode/wifihal.h b/network/wlan/wificx/drivercode/wifihal.h
new file mode 100644
index 00000000..f776f425
--- /dev/null
+++ b/network/wlan/wificx/drivercode/wifihal.h
@@ -0,0 +1,63 @@
+// Copyright (C) Microsoft Corporation. All rights reserved.
+#pragma once
+
+// The class for Wifi IHV device's HAL functionalities
+class WifiHAL
+{
+public:
+ static NTSTATUS _Create(_In_ WDFDEVICE Device);
+ static void _OnCleanup(_In_ WDFOBJECT Object);
+
+ // Default ctor so context memory can be zeroed by WDF without placement new
+ WifiHAL() = default;
+
+ // Initialization routine replacing the previous parameterized ctor usage
+ void Initialize(_In_ WDFDEVICE Device, _In_ PCTLV_CONTEXT TlvContext);
+
+ // Wifi request M3 working condition verification function
+ NTSTATUS WifiIhvIsDeviceReadyForRequest();
+
+ // Wifi request pending transition status check function
+ // for example, during SAE authentication, the connect request is pending until SAE exchange is complete
+ NTSTATUS WifiIhvGetPendingTransitionStatus();
+
+ NTSTATUS WifiIhvSetDeviceCapabilities();
+ NTSTATUS WifiIhvReset(_In_ const WDI_TASK_DOT11_RESET_PARAMETERS& ResetParameters, _In_ const PWDI_MESSAGE_HEADER pWdiHeader, _In_ UINT BytesWritten);
+ NTSTATUS WifiIhvSetRadioState(_In_ const WDI_SET_RADIO_STATE_PARAMETERS& RadioState, _In_ const PWDI_MESSAGE_HEADER pWdiHeader, _In_ UINT BytesWritten);
+ NTSTATUS WifiIhvScan(_In_ const WDI_SCAN_PARAMETERS& ScanParameters, _In_ const PWDI_MESSAGE_HEADER pWdiHeader, _In_ UINT BytesWritten);
+ NTSTATUS WifiIhvConnect(_In_ const WDI_TASK_CONNECT_PARAMETERS& ConnectParameters, _In_ const PWDI_MESSAGE_HEADER pWdiHeader, _In_ UINT BytesWritten);
+ NTSTATUS WifiIhvSetSaeAuthParams(_In_ const WDI_SET_SAE_AUTH_PARAMS_COMMAND& setSAEAuthParams, _In_ const PWDI_MESSAGE_HEADER pWdiHeader, _In_ UINT BytesWritten);
+ NTSTATUS WifiIhvDisconnect(_In_ const WDI_TASK_DISCONNECT_PARAMETERS& disconnectParameters, _In_ const PWDI_MESSAGE_HEADER pWdiHeader, _In_ UINT BytesWritten);
+
+ // Device service property handlers (OID_WDI_GET_SUPPORTED_DEVICES / OID_WDI_DEVICE_SERVICE_COMMAND).
+ // Match the PropertyTransitionTraits handler shape: (const parsed input&, out-buffer,
+ // out-buffer length, bytesWritten&). The handler serializes the response TLV stream into
+ // OutBuffer and reports the number of bytes written; the dispatch layer completes the request.
+ NTSTATUS WifiIhvGetSupportedDeviceServices(
+ _In_ const WDI_GET_SUPPORTED_DEVICE_SERVICES_INPUTS& Inputs,
+ _Out_writes_bytes_to_(OutBufferLen, BytesWritten) void* OutBuffer,
+ _In_ ULONG OutBufferLen,
+ _Out_ ULONG& BytesWritten);
+ NTSTATUS WifiIhvDeviceServiceCommand(
+ _In_ const WDI_DEVICE_SERVICE_COMMAND_INPUTS& Inputs,
+ _Out_writes_bytes_to_(OutBufferLen, BytesWritten) void* OutBuffer,
+ _In_ ULONG OutBufferLen,
+ _Out_ ULONG& BytesWritten);
+private:
+ NTSTATUS WifiIhvPerformAssociation(_In_ const struct ArrayOfElements<WDI_CONNECT_BSS_ENTRY_CONTAINER>* pPreferredBSSEntryList, _In_ const struct ArrayOfElements<WDI_AUTH_ALGORITHM>* pAuthenticationAlgorithms, _In_ const PWDI_MESSAGE_HEADER pWdiHeader);
+ NTSTATUS WifiIhvSendLinkStateIndication(_In_ const PWDI_MESSAGE_HEADER pWdiHeader, ULONG numLinks);
+
+ WDFDEVICE m_Device{};
+ PCTLV_CONTEXT m_TlvContext{};
+
+ UCHAR m_CurrentRadioState{};
+ UINT32 m_LastConnectEntryId{};
+ UINT32 m_LastConnectTransactionId{};
+ WDI_AUTH_ALGORITHM m_LastAuthAlgo{};
+ DOT11_MAC_ADDRESS m_ConnectedPeer{};
+
+ // Removed const so we can initialize without running a constructor via placement new
+ WDI_MAC_ADDRESS m_LocalLinkAddresses[2];
+ ULONG m_SupportedBands;
+};
+WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(WifiHAL, GetWifiHalFromHandle);
diff --git a/network/wlan/wificx/drivercode/wifihaltestdata.h b/network/wlan/wificx/drivercode/wifihaltestdata.h
new file mode 100644
index 00000000..7ded0f2b
--- /dev/null
+++ b/network/wlan/wificx/drivercode/wifihaltestdata.h
@@ -0,0 +1,8290 @@
+// Copyright (C) Microsoft Corporation. All rights reserved.
+#pragma once
+
+#define TESTMP_BAND_IHV 0x00000010
+
+// clang-format on
+
+#define ConnectEntryId_MAX ARRAYSIZE(g_ConnectEntries)
+
+//
+//===============================================================================
+// Set alternate local addresses based on simulation parameters
+//===============================================================================
+//
+UCHAR s_ArubaSimLocalAddress[] = {0xd4, 0x6a, 0x6a, 0x52, 0x18, 0x07}; // For Wpa3SuiteB - Aruba
+UCHAR g_IntelSimLocalAddress[] = {0x34, 0x13, 0xe8, 0xb3, 0x14, 0x4c}; // For Wpa3SuiteB - Intel
+UCHAR g_SaeSimLocalAddress[] = {0x9c, 0xda, 0x3e, 0xf2, 0x7d, 0xd5}; // For Wpa3Sae
+
+#ifdef WPA3_ARUBA_SIM
+PUCHAR g_AlternateLocalAddress = s_ArubaSimLocalAddress;
+#elif WPA3_INTEL_SIM
+PUCHAR g_AlternateLocalAddress = g_IntelSimLocalAddress;
+#elif WPA3_SAE
+PUCHAR g_AlternateLocalAddress = g_SaeSimLocalAddress;
+#else
+PUCHAR g_AlternateLocalAddress = NULL;
+#endif
+
+// clang-format off
+
+//
+//===============================================================================
+//
+
+UCHAR s_DeviceServiceTestBlob[] =
+{
+ 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa
+};
+
+//
+//===============================================================================
+//
+
+UCHAR s_TLV_AssociationParametersRequestedType[] =
+{
+ // WDI_TLV_ASSOCIATION_PARAMETERS_REQUESTED_TYPE
+ 0xBB, 0x00,
+ 0x02, 0x00,
+ 0x9F, 0x00 // PMKID
+};
+
+UCHAR s_TLV_RoamingNeededIndication[] =
+{
+ // WDI_TLV_ROAMING_NEEDED_PARAMETERS
+ 0x55, 0x00,
+ 0x04, 0x00,
+ 0x0a, 0x00, 0x00, 0x00
+};
+
+UCHAR s_TLV_NeighborReport[] =
+{
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0x20, 0x30, 0x40, 0x50, 0x60,
+
+ // WDI_TLV_ACTION_FRAME_BODY
+ 0xBE, 0x00,
+ 0x14, 0x00,
+ 0x05, // Category = Radio Measurement
+ 0x05, // Action = Neighbor Report Response
+ 0x01, // Dialog Token
+ 0x34, // Element ID = Neighbor Report
+ 0x0F, // Length
+ 0x00, 0x20, 0x30, 0x40, 0x50, 0x60, // BSSID
+ 0x00, 0x00, 0x00, 0x00, // BSSID Information
+ 0x00, // Operating class
+ 0x06, // Channel Number
+ 0x00, // PHY Type
+ 0x00, 0x00, // Optional IEs
+};
+
+//
+//===============================================================================
+//
+
+//
+//===============================================================================
+// BSs entries
+//===============================================================================
+//
+
+WDI_MAC_ADDRESS s_Connect_Addr = {0x00, 0x20, 0x30, 0x40, 0x50, 0x60};
+
+UCHAR s_TLV_BSS_Entry_1 [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x63, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0x20, 0x30, 0x40, 0x50, 0x60,
+
+ // WDI_TLV_PROBE_RESPONSE_FRAME
+ 0x09, 0x00, // Type
+ 0x35, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x08,
+ 'W', 'F', 'C', '_', 'O', 'P', 'E', 'N', // SSID
+ 0x01, 0x04, // Supported Rates
+ 0x02, 0x04, 0x0B, 0x16,
+ 0x03, 0x01, // DSSS Parameter
+ 0x01,
+ 0x05, 0x04, // TIM
+ 0x00, 0x01, 0x00, 0x00,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0xDD, 0x07, // Vendor specific - MBO-OCE IE
+ 0x50, 0x6F, 0x9A, // WFA OUI
+ 0x16, // MBO-OCE IE OUI Type
+ 0x01, // Attribute ID - AP capability
+ 0x01, // Attrib length
+ 0x00, // Not cellular data aware
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x05, 0x06, 0x07,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x06, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // Band ID
+};
+
+UCHAR s_TLV_SuccessOpenAssociationResult[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xD7, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0x20, 0x30, 0x40, 0x50, 0x60,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x01, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x30, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x08,
+ 'W', 'F', 'C', '_', 'O', 'P', 'E', 'N', // SSID
+ 0x01, 0x08, // Rates
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C,
+ 0x21, 0x02, // Power Capability
+ 0x07, 0x12,
+ 0x24, 0x02, // Supported Channels
+ 0x01, 0x0B,
+ 0x32, 0x04, // Extended Rates
+ 0x0C, 0x12, 0x18, 0x60,
+ 0xDD, 0x07, // WMM settings
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08, //Rates
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C,
+ 0x32, 0x04, //Extended Rates
+ 0x0C, 0x12, 0x18, 0x60,
+ 0xDD, 0x18, //WMM settings
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00, // Type
+ 0x25, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x08,
+ 'W', 'F', 'C', '_', 'O', 'P', 'E', 'N', // SSID
+ 0x01, 0x04, 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01, 0x01, // DSSS Parameter
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+
+ // WDI_TLV_ETHERTYPE_ENCAP_TABLE (optional)
+ // 0x00, 0x00,
+ // 0x04, 0x00,
+ // 0x00, 0x00, 0x00, 0x00
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x07, 0x00, 0x00, 0x00,
+
+};
+
+
+UCHAR s_TLV_OpenDisassociation[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0xBC, 0x00,
+ 0x0A, 0x00,
+ 0x00, 0x20, 0x30, 0x40, 0x50, 0x60,
+ 0x01, 0x00, 0x00, 0x00,
+
+ // WDI_TLV Need Peer Cleanup Params
+ 0xb4, 0x00,
+ 0x01, 0x00,
+ 0x00
+};
+
+WDI_MAC_ADDRESS s_Connect_Addr_2_Open = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE2};
+
+UCHAR s_TLV_BSS_Entry_2_Open [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x59, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE2,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x26, 0x00,
+ 0x44, 0x55, 0x66, 0x77, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x08, // SSID
+ 'W', 'D', 'I', '_', 'O', 'P', 'E', 'N',
+ 0x03, 0x01, // DSSS Parameter
+ 0x01,
+ 0x01, 0x04, // Supported Rates
+ 0x02, 0x04, 0x0B, 0x16,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x02, 0x00, 0x00, 0x00, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x28, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x06, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // Band ID
+
+};
+
+UCHAR s_TLV_Success_AssociationResult_2_Open[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xD7, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE2,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x01, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x30, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x08, // SSID
+ 'W', 'D', 'I', '_', 'O', 'P', 'E', 'N',
+ 0x01, 0x08, // Rates
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C,
+ 0x21, 0x02, // Power Capability
+ 0x07, 0x12,
+ 0x24, 0x02, // Supported Channels
+ 0x01, 0x0B,
+ 0x32, 0x04, // Extended Rates
+ 0x0C, 0x12, 0x18, 0x60,
+ 0xDD, 0x07, // WMM settings
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x04, // Capability
+ 0x00, 0x00, // Status
+ 0x01, 0xC0, // Association ID
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x32, 0x04, // Extended Rates
+ 0x0C, 0x12, 0x18, 0x60,
+ 0xDD, 0x18, // WMM settings
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00,
+ 0x25, 0x00,
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x08, // SSID
+ 'W', 'D', 'I', '_', 'O', 'P', 'E', 'N',
+ 0x01, 0x04,
+ 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01, // DSSS Parameter
+ 0x01,
+ 0x05, 0x04, // TIM
+ 0x00, 0x01, 0x00, 0x00,
+
+ // WDI_TLV_ETHERTYPE_ENCAP_TABLE (optional)
+ // 0x00, 0x00,
+ // 0x04, 0x00,
+ // 0x00, 0x00, 0x00, 0x00
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x00, 0x00, 0x00,
+
+};
+
+//
+//===============================================================================
+//
+
+WDI_MAC_ADDRESS s_Connect_Addr_3_WEP = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE3};
+
+UCHAR s_TLV_BSS_Entry_3_WEP [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x52, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE3,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x1f, 0x00,
+ 0x44, 0x55, 0x66, 0x77, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x10, 0x04, // Capability
+ 0x00, 0x08, // SSID
+ 'W', 'D', 'I', '_', '_', 'W', 'E', 'P',
+ 0x03, 0x01, 0x01, // DSSS Parameter (Offset: 42)
+ 0x01, 0x04, 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x3C, 0x00, 0x00, 0x00, // Link Quality (Offset: 57)
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x06, 0x00, 0x00, 0x00, // Channel (Offset: 64)
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00
+};
+
+
+UCHAR s_TLV_Success_AssociationResult_3_WEP[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xD9, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE3,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x00, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x32, 0x00,
+ 0x10, 0x04, // Capability
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x08, // SSID
+ 'W', 'D', 'I', '_', '_', 'W', 'E', 'P',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02, 0x07, 0x12, //Power Capability
+ 0x24, 0x02, 0x01, 0x0B, //Supported Channels
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x07, 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18, 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00, // Type
+ 0x25, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x10, 0x04, // Capability
+ 0x00, 0x08, // SSID
+ 'W', 'D', 'I', '_', '_', 'W', 'E', 'P',
+ 0x01, 0x04, 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01, 0x01, // DSSS Parameter
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+
+ // WDI_TLV_ETHERTYPE_ENCAP_TABLE (optional)
+ // 0x00, 0x00,
+ // 0x04, 0x00,
+ // 0x00, 0x00, 0x00, 0x00
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x00, 0x00, 0x00,
+
+};
+
+
+//
+//===============================================================================
+//
+
+WDI_MAC_ADDRESS s_Connect_Addr_4_RSNA_CCMP = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE4};
+
+#define WFA_TEST_MIN_RSN_IE 1
+
+UCHAR s_TLV_BSS_Entry_4_RSNA_CCMP [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+#ifdef WFA_TEST_MIN_RSN_IE
+ 0x79, 0x00, //Len
+#else
+ 0x8B, 0x00, //Len
+#endif // WFA_TEST_MIN_RSN_IE
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE4,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+#ifdef WFA_TEST_MIN_RSN_IE
+ 0x46, 0x00,
+#else
+ 0x58, 0x00,
+#endif // WFA_TEST_MIN_RSN_IE
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0A, // SSID
+ 'W', 'D', 'I', '_', 'S', 'E', 'C', 'U', 'R', 'E',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01, 0x06, // DSS Parameters
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01, 0x00, // ERP
+ 0x2F, 0x01, 0x00, // Reserved
+#ifdef WFA_TEST_MIN_RSN_IE
+ 0x30, 0x02,
+ 0x01, 0x00,
+#else
+ 0x30, 0x14,
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher -- CCMP
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher -- CCMP
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x02, // AKM Suite -- RSNA_PSK
+ 0x00, 0x00, // RSN Capability
+#endif // WFA_TEST_MIN_RSN_IE
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09, 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x0B, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_4_RSNA_CCMP[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x22, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE4,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x48, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x0A, // SSID
+ 'W', 'D', 'I', '_', 'S', 'E', 'C', 'U', 'R', 'E',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02, 0x07, 0x12, //Power Capability
+ 0x24, 0x02, 0x01, 0x0B, //Supported Channels
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x08, 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+ 0x30, 0x14, 0x01, 0x00, 0x00, 0x0F, 0xAC, 0x04, 0x01, 0x00, 0x00, 0x0F, 0xAC, 0x04, 0x01, 0x00, 0x00, 0x0F, 0xAC, 0x02, 0x00, 0x00, // RSN
+
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18, 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0x58, 0x00,
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0A, // SSID
+ 'W', 'D', 'I', '_', 'S', 'E', 'C', 'U', 'R', 'E',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01, 0x06, // DSS Parameters
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01, 0x00, // ERP
+ 0x2F, 0x01, 0x00, // Reserved
+ 0x30, 0x14, 0x01, 0x00, 0x00, 0x0F, 0xAC, 0x04, 0x01, 0x00, 0x00, 0x0F, 0xAC, 0x04, 0x01, 0x00, 0x00, 0x0F, 0xAC, 0x02, 0x00, 0x00, // RSN
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09, 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x00, 0x00, 0x00,
+
+};
+
+
+//
+//===============================================================================
+//
+
+WDI_MAC_ADDRESS s_Connect_Addr_5_IHV = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE5};
+
+UCHAR s_TLV_BSS_Entry_5_IHV [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x52, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE5,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x1f, 0x00,
+ 0x44, 0x55, 0x66, 0x77, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x10, 0x04, // Capability
+ 0x00, 0x08, // SSID
+ 'W', 'D', 'I', '_', '_', 'I', 'H', 'V',
+ 0x03, 0x01, 0x01, // DSSS Parameter
+ 0x01, 0x04, 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x3C, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x24, 0x00, 0x00, 0x00, // Channel = 36
+ 0x08, 0x00, 0x00, 0x00, // Band ID = Custom
+// 0x02, 0x00, 0x00, 0x00, // Band ID
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00
+};
+
+
+UCHAR s_TLV_Success_AssociationResult_5_IHV[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xD9, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE5,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x02, 0x00, 0x00, 0x80, //AuthAlgorithm = Custom
+ 0x01, 0x00, 0x00, 0x80, //UnicastCipherAlgorithm
+ 0x01, 0x00, 0x00, 0x80, //MulticastDataCipherAlgorithm
+ 0x01, 0x00, 0x00, 0x80, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x80, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x32, 0x00,
+ 0x10, 0x04, // Capability
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x08, // SSID
+ 'W', 'D', 'I', '_', '_', 'I', 'H', 'V',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02, 0x07, 0x12, //Power Capability
+ 0x24, 0x02, 0x24, 0x0B, //Supported Channels
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x07, 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18, 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00, // Type
+ 0x25, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x10, 0x04, // Capability
+ 0x00, 0x08, // SSID
+ 'W', 'D', 'I', '_', '_', 'I', 'H', 'V',
+ 0x01, 0x04, 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01, 0x01, // DSSS Parameter
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+
+ // WDI_TLV_ETHERTYPE_ENCAP_TABLE (optional)
+ // 0x00, 0x00,
+ // 0x04, 0x00,
+ // 0x00, 0x00, 0x00, 0x00
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x02, 0x00, 0x00, 0x80, // Phy = IHV Phy 2
+
+};
+
+
+UCHAR s_TLV_IhvRequestComplete[] =
+{
+ // WDI_TLV_IHV_DATA
+ 0xBD, 0x00,
+ 0x0A, 0x00,
+
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE5,
+ 0x00, 0x00, 0x00, 0x01
+};
+
+
+UCHAR s_TLV_IhvIndication[] =
+{
+ // WDI_TLV_IHV_DATA
+ 0xBD, 0x00,
+ 0x30, 0x00,
+
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE5,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE5,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE5,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE5,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE5,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE5,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE5,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE5
+};
+
+//===============================================================================
+
+WDI_MAC_ADDRESS s_Connect_Addr_6_FT_CCMP = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE6};
+
+UCHAR s_TLV_BSS_Entry_6_FT_CCMP [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xEA, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE6,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0xB7, 0x00,
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x07, // SSID
+ 'W', 'D', 'I', '_', '_', 'F', 'T', // WDI__FT
+ 0x01, 0x08, // Supported Rates
+ 0x0C, 0x12, 0x96, 0x18, 0x24, 0x30, 0x48, 0x60,
+ 0x03, 0x01, // DSS Parameters
+ 0x01,
+ 0x05, 0x04, // TIM
+ 0x00, 0x01, 0x00, 0x00,
+ 0x07, 0x06, // Country
+ 0x55, 0x53, 0x20, 0x01, 0x0B, 0x1E,
+ 0x0B, 0x05,
+ 0x00, 0x00, 0x53, 0x8D, 0x5B,
+ 0x2A, 0x01,
+ 0x00,
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x03, // AKM Suite
+ 0x28, 0x00, // RSN Capability
+ 0x32, 0x01,
+ 0x6C,
+ 0x36, 0x03, // MDID IE
+ 0x0B, 0x47, // MDID
+ 0x00, // FT Capability and Policy
+ 0x85, 0x1E,
+ 0x00, 0x00, 0x8F, 0x00, 0x0F, 0x00, 0xFF, 0x03, 0x59, 0x00, 0x41, 0x50, 0x30, 0x30, 0x31, 0x34,
+ 0x2E, 0x36, 0x39, 0x34, 0x30, 0x2E, 0x38, 0x35, 0x32, 0x00, 0x00, 0x00, 0x00, 0x27,
+ 0x96, 0x06,
+ 0x00, 0x40, 0x96, 0x00, 0x0B, 0x00,
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+ 0xDD, 0x06,
+ 0x00, 0x40, 0x96, 0x01, 0x01, 0x04,
+ 0xDD, 0x05,
+ 0x00, 0x40, 0x96, 0x03, 0x05,
+ 0xDD, 0x05,
+ 0x00, 0x40, 0x96, 0x0B, 0x09,
+ 0xDD, 0x05,
+ 0x00, 0x40, 0x96, 0x14, 0x01,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x4A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_6_FT_CCMP[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x0C, 0x02,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE6,
+
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x06, 0x00, 0x00, 0x00, //AuthAlgorithm -- RSNA
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x01, // WMM QoS Enabled
+ 0x03, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x3E, 0x00,
+ 0x31, 0x04, // Capabilities
+ 0x01, 0x00, // Listen Interval
+ 0x00, 0x07, // SSID
+ 'W', 'D', 'I', '_', '_', 'F', 'T', // WDI__FT
+ 0x01, 0x08, // Supported Rates
+ 0x0C, 0x12, 0x96, 0x18, 0x24, 0x30, 0x48, 0x60,
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher -- CCMP
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher -- CCMP
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x03, // AKM Suite -- FT
+ 0x0C, 0x00, // RSN Capability
+ 0x32, 0x01, // Extended Rates
+ 0x6C,
+ 0x36, 0x03, // MDID IE
+ 0x0B, 0x47, // MDID
+ 0x00, // FT Capability and Policy
+ 0xDD, 0x07,
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0xC5, 0x00,
+ 0x31, 0x04, // Capability
+ 0x00, 0x00, // Status
+ 0x01, 0xC0, // Association ID
+ 0x01, 0x08, // Supported Rates
+ 0x96, 0x0C, 0x12, 0x18, 0x24, 0x30, 0x48, 0x60,
+ 0x30, 0x26, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher -- CCMP
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher -- CCMP
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x03, // AKM Suite -- FT
+ 0x28, 0x00, // RSN Capability
+ 0x01, 0x00, // PMKID Count -- PMKR1Name
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //PMKID
+ 0x32, 0x01, // Extended Rates
+ 0x6C,
+ 0x36, 0x03, // MDID IE
+ 0x0B, 0x47, // MDID
+ 0x00, // FT Capability and Policy
+ 0x37, 0x69, // FTE IE
+ 0x00, 0x00, // MIC Control - 0 => no MIC
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //MIC
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //ANonce
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //SNonce
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x06, // R1KH-ID
+ 0xB4, 0xC7, 0x99, 0x8A, 0xB6, 0x30,
+ 0x03, 0x0D, // R0KH-ID
+ 'a', 'p', '8', '1', '3', '2', '-', '7', '3', '4', 'E', 'B', '0',
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0xB7, 0x00,
+ 0xDD, 0x50, 0x3D, 0xF7, 0xE2, 0x01, 0x00, 0x00, // Supported Rates
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x07, // SSID
+ 'W', 'D', 'I', '_', '_', 'F', 'T', // WDI__FT
+ 0x01, 0x08,
+ 0x0C, 0x12, 0x96, 0x18, 0x24, 0x30, 0x48, 0x60,
+ 0x03, 0x01, // DSS Parameters
+ 0x01,
+ 0x05, 0x04, // TIM
+ 0x00, 0x01, 0x00, 0x00,
+ 0x07, 0x06, // Country
+ 0x55, 0x53, 0x20, 0x01, 0x0B, 0x1E,
+ 0x0B, 0x05,
+ 0x00, 0x00, 0x6E, 0x8D, 0x5B,
+ 0x2A, 0x01, // ERP
+ 0x00,
+ 0x30, 0x14, // RSN
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher
+ 0x01, 0x00, // Pairwise cipher count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise cipher
+ 0x01, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x03, // AKM Suite
+ 0x0C, 0x00, // RSN Capability
+ 0x32, 0x01, // Extended Supported Rates
+ 0x6C,
+ 0x36, 0x03, // MDID IE
+ 0x0B, 0x47, // MDID
+ 0x00, // FT Capability and Policy
+ 0x85, 0x1E,
+ 0x03, 0x00, 0x8F, 0x00, 0x0F, 0x00, 0xFF, 0x03, 0x59, 0x00, 0x41, 0x50, 0x30, 0x30, 0x31, 0x34,
+ 0x2E, 0x36, 0x39, 0x34, 0x30, 0x2E, 0x38, 0x31, 0x65, 0x00, 0x00, 0x00, 0x00, 0x27,
+ 0x96, 0x06,
+ 0x00, 0x40, 0x96, 0x00, 0x0E, 0x00,
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+ 0xDD, 0x06,
+ 0x00, 0x40, 0x96, 0x01, 0x01, 0x04,
+ 0xDD, 0x05,
+ 0x00, 0x40, 0x96, 0x03, 0x05,
+ 0xDD, 0x05,
+ 0x00, 0x40, 0x96, 0x0B, 0x09,
+ 0xDD, 0x05,
+ 0x00, 0x40, 0x96, 0x14, 0x01,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x06, 0x00, 0x00, 0x00
+};
+
+
+//===============================================================================
+
+WDI_MAC_ADDRESS s_Connect_Addr_7_FT_PSK_CCMP = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE7};
+
+UCHAR s_TLV_BSS_Entry_7_FT_PSK_CCMP [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xED, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE7,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0xBA, 0x00,
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0A, // SSID
+ 'W', 'D', 'I', '_', '_', 'F', 'T', 'P', 'S', 'K', // WDI__FTPSK
+ 0x01, 0x08, // Supported Rates
+ 0x0C, 0x12, 0x96, 0x18, 0x24, 0x30, 0x48, 0x60,
+ 0x03, 0x01, // DSS Parameters
+ 0x01,
+ 0x05, 0x04, // TIM
+ 0x00, 0x01, 0x00, 0x00,
+ 0x07, 0x06, // Country
+ 0x55, 0x53, 0x20, 0x01, 0x0B, 0x1E,
+ 0x0B, 0x05,
+ 0x00, 0x00, 0x53, 0x8D, 0x5B,
+ 0x2A, 0x01,
+ 0x00,
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x04, // AKM Suite
+ 0x28, 0x00, // RSN Capability
+ 0x32, 0x01,
+ 0x6C,
+ 0x36, 0x03, // MDID IE
+ 0x12, 0x34, // MDID
+ 0x80, // FT Capability and Policy
+ 0x85, 0x1E,
+ 0x00, 0x00, 0x8F, 0x00, 0x0F, 0x00, 0xFF, 0x03, 0x59, 0x00, 0x41, 0x50, 0x30, 0x30, 0x31, 0x34,
+ 0x2E, 0x36, 0x39, 0x34, 0x30, 0x2E, 0x38, 0x35, 0x32, 0x00, 0x00, 0x00, 0x00, 0x27,
+ 0x96, 0x06,
+ 0x00, 0x40, 0x96, 0x00, 0x0B, 0x00,
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+ 0xDD, 0x06,
+ 0x00, 0x40, 0x96, 0x01, 0x01, 0x04,
+ 0xDD, 0x05,
+ 0x00, 0x40, 0x96, 0x03, 0x05,
+ 0xDD, 0x05,
+ 0x00, 0x40, 0x96, 0x0B, 0x09,
+ 0xDD, 0x05,
+ 0x00, 0x40, 0x96, 0x14, 0x01,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x4A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_7_FT_PSK_CCMP[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x0C, 0x02,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE7,
+
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm -- RSNA_PSK
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x01, // WMM QoS Enabled
+ 0x03, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x41, 0x00,
+ 0x31, 0x04, // Capabilities
+ 0x01, 0x00, // Listen Interval
+ 0x00, 0x0A, // SSID
+ 'W', 'D', 'I', '_', '_', 'F', 'T', 'P', 'S', 'K', // WDI__FTPSK
+ 0x01, 0x08, // Supported Rates
+ 0x0C, 0x12, 0x96, 0x18, 0x24, 0x30, 0x48, 0x60,
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, 0x00, 0x0F, 0xAC, 0x04, 0x01, 0x00, 0x00, 0x0F, 0xAC, 0x04, 0x01, 0x00, 0x00, 0x0F,
+ 0xAC, 0x01, 0x00, 0x00,
+ 0x32, 0x01, // Extended Rates
+ 0x6C,
+ 0x36, 0x03, // MDID IE
+ 0x12, 0x34, // MDID
+ 0x80, // FT Capability and Policy
+ 0xDD, 0x07,
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0xBF, 0x00,
+ 0x31, 0x04, // Capability
+ 0x00, 0x00, // Status
+ 0x01, 0xC0, // Association ID
+ 0x01, 0x08, // Supported Rates
+ 0x96, 0x0C, 0x12, 0x18, 0x24, 0x30, 0x48, 0x60,
+ 0x30, 0x26, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher -- CCMP
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher -- CCMP
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x04, // AKM Suite -- FT-PSK
+ 0x28, 0x00, // RSN Capability
+ 0x01, 0x00, // PMKID Count -- PMKR1Name
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //PMKID
+ 0x32, 0x01, // Extended Rates
+ 0x6C,
+ 0x36, 0x03, // MDID IE
+ 0x12, 0x34, // MDID
+ 0x80, // FT Capability and Policy
+ 0x37, 0x63, // FTE IE
+ 0x00, 0x02, // MIC Control
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //MIC
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //ANonce
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //SNonce
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x06, // R1KH-ID
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE7,
+ 0x03, 0x07, // R0KH-ID
+ 'x', '@', 'y', '.', 'c', 'o', 'm',
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0xBA, 0x00,
+ 0xDD, 0x50, 0x3D, 0xF7, 0xE2, 0x01, 0x00, 0x00, // Supported Rates
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0A, // SSID
+ 'W', 'D', 'I', '_', '_', 'F', 'T', 'P', 'S', 'K', // WDI__FTPSK
+ 0x01, 0x08,
+ 0x0C, 0x12, 0x96, 0x18, 0x24, 0x30, 0x48, 0x60,
+ 0x03, 0x01, // DSS Parameters
+ 0x01,
+ 0x05, 0x04, // TIM
+ 0x00, 0x01, 0x00, 0x00,
+ 0x07, 0x06, // Country
+ 0x55, 0x53, 0x20, 0x01, 0x0B, 0x1E,
+ 0x0B, 0x05,
+ 0x00, 0x00, 0x6E, 0x8D, 0x5B,
+ 0x2A, 0x01, // ERP
+ 0x00,
+ 0x30, 0x14, // RSN
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher
+ 0x01, 0x00, // Pairwise cipher count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise cipher
+ 0x01, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x04, // AKM Suite
+ 0x28, 0x00, // RSN Capability
+ 0x32, 0x01, // Extended Supported Rates
+ 0x6C,
+ 0x36, 0x03, // MDID IE
+ 0x12, 0x34, // MDID
+ 0x80, // FT Capability and Policy
+ 0x85, 0x1E,
+ 0x03, 0x00, 0x8F, 0x00, 0x0F, 0x00, 0xFF, 0x03, 0x59, 0x00, 0x41, 0x50, 0x30, 0x30, 0x31, 0x34,
+ 0x2E, 0x36, 0x39, 0x34, 0x30, 0x2E, 0x38, 0x31, 0x65, 0x00, 0x00, 0x00, 0x00, 0x27,
+ 0x96, 0x06,
+ 0x00, 0x40, 0x96, 0x00, 0x0E, 0x00,
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+ 0xDD, 0x06,
+ 0x00, 0x40, 0x96, 0x01, 0x01, 0x04,
+ 0xDD, 0x05,
+ 0x00, 0x40, 0x96, 0x03, 0x05,
+ 0xDD, 0x05,
+ 0x00, 0x40, 0x96, 0x0B, 0x09,
+ 0xDD, 0x05,
+ 0x00, 0x40, 0x96, 0x14, 0x01,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x06, 0x00, 0x00, 0x00
+};
+
+
+//
+//===============================================================================
+//
+
+WDI_MAC_ADDRESS s_Connect_Addr_8_Hidden = {0x00, 0xA0, 0xB0, 0xC0, 0xD0,0xE8};
+
+UCHAR s_TLV_BSS_Entry_Beacon_8_Hidden [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x52, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE8,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x24, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x00, // SSID
+ 0x01, 0x04, 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01, 0x01, // DSSS Parameter
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x46, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, // RM Enabled Capabilities
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x05, 0x06, 0x07,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x06, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // Band ID
+};
+
+UCHAR s_TLV_BSS_Entry_ProbeResponse_8_Hidden [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x5a, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE8,
+
+ // WDI_TLV_PROBE_RESPONSE_FRAME
+ 0x09, 0x00, // Type
+ 0x2C, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x08, // SSID
+ 'W', 'D', 'I', '_', 'H', 'I', 'D', 'E',
+ 0x01, 0x04, 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01, 0x01, // DSSS Parameter
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x46, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, // RM Enabled Capabilities
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x05, 0x06, 0x07,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x06, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // Band ID
+};
+
+
+UCHAR s_TLV_Success_AssociationResult_8_Hidden[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xD7, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE8,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x01, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x30, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x08, // SSID
+ 'W', 'D', 'I', '_', 'H', 'I', 'D', 'E',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02, 0x07, 0x12, //Power Capability
+ 0x24, 0x02, 0x01, 0x0B, //Supported Channels
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x07, 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18, 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00, // Type
+ 0x25, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x08, // SSID
+ 'W', 'D', 'I', '_', 'H', 'I', 'D', 'E',
+ 0x01, 0x04, 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01, 0x01, // DSSS Parameter
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+
+ // WDI_TLV_ETHERTYPE_ENCAP_TABLE (optional)
+ // 0x00, 0x00,
+ // 0x04, 0x00,
+ // 0x00, 0x00, 0x00, 0x00
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x00, 0x00, 0x00,
+
+};
+
+
+//===============================================================================
+//
+// 11ad
+//
+//===============================================================================
+
+WDI_MAC_ADDRESS s_Connect_Addr_9_11ad_PSK = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE9};
+
+UCHAR s_TLV_BSS_Entry_9_11ad_Beacon_PSK [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x3F, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE9,
+
+ // WDI_TLV_BEACON_FRAME (8.3.3.2, Table 8-33a)
+ 0x0A, 0x00,
+ 0x0C, 0x00, // For WiFi Beacon
+ // WiFi Beacon
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x64, 0x00, // Beacon Interval (8.4.1.3)
+ 0x31, 0x04, // Capability
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x64, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x03, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_BSS_Entry_9_11ad_Beacon_Dmg_PSK [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x47, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE9,
+
+ // WDI_TLV_BEACON_FRAME (8.3.3.2, Table 8-33a)
+ 0x0A, 0x00,
+ 0x14, 0x00, // For WiFi Beacon
+ // DMG Beacon
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x00, 0x0c, 0x38, // 3 - Sector Sweep (9.5.1)
+ 0x64, 0x00, // 2 - Beacon Interval (9.4.1.3)
+ 0xc0, 0x7c, 0x18, 0x08, 0x20, 0x18, // 6 - Beacon Interval Control (Fig 9-60)
+ 0x07, // 1 - DMG Parameters (9.4.1.47)
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x64, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x03, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_BSS_Entry_9_11ad_ProbeResponse_PSK [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xCB, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE9,
+
+ // WDI_TLV_PROBE_RESPONSE_FRAME (8.3.3.2, Table 8-33a)
+ 0x09, 0x00,
+ 0x98, 0x00, // For WiFi Beacon
+ // WiFi Beacon
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x64, 0x00, // Beacon Interval (8.4.1.3)
+ 0x31, 0x04, // Capability
+
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x03, 0x01, // DSS Parameters
+ 0x02,
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x08, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x02, // AKM Suite
+ 0x00, 0x00, // RSN Capability
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11,
+ 0x04, 0xCE, 0x14, 0x07, 0x34, 0x6B, 0x01, 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00,
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xBE, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x00, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x64, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x03, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_BSS_Entry_9_11ad_ProbeResponse_Dmg_PSK [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xCB, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE9,
+
+ // WDI_TLV_PROBE_RESPONSE_FRAME (8.3.3.2, Table 8-33a)
+ 0x09, 0x00,
+ 0x98, 0x00, // For WiFi Beacon
+ // Dmg
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x64, 0x00, // Beacon Interval (8.4.1.3)
+ 0x17, 0x00, // Capability
+
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x03, 0x01, // DSS Parameters
+ 0x02,
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x08, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x02, // AKM Suite
+ 0x00, 0x00, // RSN Capability
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11,
+ 0x04, 0xCE, 0x14, 0x07, 0x34, 0x6B, 0x01, 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00,
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xBE, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x00, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x64, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x03, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_9_11ad_PSK [] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x96, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE9,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm -- RSNA_PSK
+ 0x08, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x08, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x01, // WMM QoS Enabled
+ 0x03, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x03, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x65, 0x00,
+ 0x31, 0x04, // Capabilities
+ 0x01, 0x00, // Listen Interval
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x01, 0x08, // Supported Rates
+ 0x0C, 0x12, 0x96, 0x18, 0x24, 0x30, 0x48, 0x60,
+
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x08, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x02, // AKM Suite
+ 0x00, 0x00, // RSN Capability
+ 0x94, 11,
+ 0x04, 0xCE, 0x14, 0x0A, 0x3B, 0x61, 0x01, 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00,
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x47, 0x00,
+ 0x17, 0x00, // Capabilities
+ 0x00, 0x00, // Status code
+ 0x02, 0x00, // Association ID
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x94, 0x11, // DMG Capabilities
+ 0x04, 0xCE, 0x14, 0x07, 0x34, 0x6B, // STA address
+ 0x03, // AID
+ 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, // DOT11_DMG_STA_CAPABILITY_INFO
+ 0x00, 0x00, // DOT11_DMG_PCP_AP_CAPABILITY_INFO
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00,
+ 0x98, 0x00,
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x03, 0x01, // DSS Parameters
+ 0x02,
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x08, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x02, // AKM Suite
+ 0x00, 0x00, // RSN Capability
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11,
+ 0x04, 0xCE, 0x14, 0x07, 0x34, 0x6B, 0x01, 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00,
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xBE, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x00, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x09, 0x00, 0x00, 0x00
+};
+
+
+UCHAR s_TLV_Success_AssociationResult_9_11ad_Dmg_PSK [] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x96, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xE9,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm -- RSNA_PSK
+ 0x08, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x08, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x01, // WMM QoS Enabled
+ 0x03, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x03, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x65, 0x00,
+ 0x05, 0x00, // Capabilities
+ 0x01, 0x00, // Listen Interval
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x01, 0x08, // Supported Rates
+ 0x0C, 0x12, 0x96, 0x18, 0x24, 0x30, 0x48, 0x60,
+
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x08, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x02, // AKM Suite
+ 0x00, 0x00, // RSN Capability
+ 0x94, 11,
+ 0x04, 0xCE, 0x14, 0x0A, 0x3B, 0x61, 0x01, 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00,
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x47, 0x00,
+ 0x17, 0x00, // Capabilities
+ 0x00, 0x00, // Status code
+ 0x02, 0x00, // Association ID
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x94, 0x11, // DMG Capabilities
+ 0x04, 0xCE, 0x14, 0x07, 0x34, 0x6B, // STA address
+ 0x03, // AID
+ 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, // DOT11_DMG_STA_CAPABILITY_INFO
+ 0x00, 0x00, // DOT11_DMG_PCP_AP_CAPABILITY_INFO
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00,
+ 0x98, 0x00,
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x03, 0x01, // DSS Parameters
+ 0x02,
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x08, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x02, // AKM Suite
+ 0x00, 0x00, // RSN Capability
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11,
+ 0x04, 0xCE, 0x14, 0x07, 0x34, 0x6B, 0x01, 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00,
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xBE, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x00, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x09, 0x00, 0x00, 0x00
+};
+
+
+//===============================================================================
+
+WDI_MAC_ADDRESS s_Connect_Addr_10_11ad_1x = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEA};
+
+UCHAR s_TLV_BSS_Entry_10_11ad_Beacon_1x [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x3F, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEA,
+
+ // WDI_TLV_BEACON_FRAME (8.3.3.2, Table 8-33a)
+ 0x0A, 0x00,
+ 0x0C, 0x00, // For WiFi Beacon
+ // WiFi Beacon
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x64, 0x00, // Beacon Interval (8.4.1.3)
+ 0x31, 0x04, // Capability
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x64, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x03, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_BSS_Entry_10_11ad_Beacon_Dmg_1x [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x47, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEA,
+
+ // WDI_TLV_BEACON_FRAME (8.3.3.2, Table 8-33a)
+ 0x0A, 0x00,
+ 0x14, 0x00, // For WiFi Beacon
+ // DMG Beacon
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x00, 0x0c, 0x38, // 3 - Sector Sweep (9.5.1)
+ 0x64, 0x00, // 2 - Beacon Interval (9.4.1.3)
+ 0xc0, 0x7c, 0x18, 0x08, 0x20, 0x18, // 6 - Beacon Interval Control (Fig 9-60)
+ 0x07, // 1 - DMG Parameters (9.4.1.47)
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x64, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x03, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_BSS_Entry_10_11ad_ProbeResponse_1x [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xCB, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEA,
+
+ // WDI_TLV_PROBE_RESPONSE_FRAME (8.3.3.2, Table 8-33a)
+ 0x09, 0x00,
+ 0x98, 0x00, // For WiFi Beacon
+ // WiFi Beacon
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x64, 0x00, // Beacon Interval (8.4.1.3)
+ 0x31, 0x04, // Capability
+
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', '_', '1', 'x', // WDI_ad_1x
+ 0x03, 0x01, // DSS Parameters
+ 0x02,
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x08, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x01, // AKM Suite
+ 0x00, 0x00, // RSN Capability
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11,
+ 0x04, 0xCE, 0x14, 0x07, 0x34, 0x6B, 0x01, 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00,
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xBE, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x00, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x64, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x03, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_BSS_Entry_10_11ad_ProbeResponse_Dmg_1x [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xCB, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEA,
+
+ // WDI_TLV_PROBE_RESPONSE_FRAME (8.3.3.2, Table 8-33a)
+ 0x09, 0x00,
+ 0x98, 0x00, // For WiFi Beacon
+ // Dmg
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x64, 0x00, // Beacon Interval (8.4.1.3)
+ 0x17, 0x00, // Capability
+
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', '_', '1', 'x', // WDI_ad_1x
+ 0x03, 0x01, // DSS Parameters
+ 0x02,
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x08, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x01, // AKM Suite
+ 0x00, 0x00, // RSN Capability
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11,
+ 0x04, 0xCE, 0x14, 0x07, 0x34, 0x6B, 0x01, 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00,
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xBE, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x00, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x64, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x03, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_10_11ad_1x [] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x96, 0x01,
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEA,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm -- RSNA_PSK
+ 0x08, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x08, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x01, // WMM QoS Enabled
+ 0x03, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x03, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x65, 0x00,
+ 0x31, 0x04, // Capabilities
+ 0x01, 0x00, // Listen Interval
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', '_', '1', 'x', // WDI_ad_1x
+ 0x01, 0x08, // Supported Rates
+ 0x0C, 0x12, 0x96, 0x18, 0x24, 0x30, 0x48, 0x60,
+
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x08, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x01, // AKM Suite
+ 0x00, 0x00, // RSN Capability
+ 0x94, 11,
+ 0x04, 0xCE, 0x14, 0x0A, 0x3B, 0x61, 0x01, 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00,
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x47, 0x00,
+ 0x17, 0x00, // Capabilities
+ 0x00, 0x00, // Status code
+ 0x02, 0x00, // Association ID
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x94, 0x11, // DMG Capabilities
+ 0x04, 0xCE, 0x14, 0x07, 0x34, 0x6B, // STA address
+ 0x03, // AID
+ 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, // DOT11_DMG_STA_CAPABILITY_INFO
+ 0x00, 0x00, // DOT11_DMG_PCP_AP_CAPABILITY_INFO
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00,
+ 0x98, 0x00,
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x03, 0x01, // DSS Parameters
+ 0x02,
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x08, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x01, // AKM Suite
+ 0x00, 0x00, // RSN Capability
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11,
+ 0x04, 0xCE, 0x14, 0x07, 0x34, 0x6B, 0x01, 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00,
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xBE, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x00, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x09, 0x00, 0x00, 0x00
+};
+
+
+UCHAR s_TLV_Success_AssociationResult_10_11ad_Dmg_1x [] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x96, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEA,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm -- RSNA_PSK
+ 0x08, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x08, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x01, // WMM QoS Enabled
+ 0x03, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x03, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x65, 0x00,
+ 0x05, 0x00, // Capabilities
+ 0x01, 0x00, // Listen Interval
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x01, 0x08, // Supported Rates
+ 0x0C, 0x12, 0x96, 0x18, 0x24, 0x30, 0x48, 0x60,
+
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x08, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x01, // AKM Suite
+ 0x00, 0x00, // RSN Capability
+ 0x94, 11,
+ 0x04, 0xCE, 0x14, 0x0A, 0x3B, 0x61, 0x01, 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00,
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x47, 0x00,
+ 0x17, 0x00, // Capabilities
+ 0x00, 0x00, // Status code
+ 0x02, 0x00, // Association ID
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x94, 0x11, // DMG Capabilities
+ 0x04, 0xCE, 0x14, 0x07, 0x34, 0x6B, // STA address
+ 0x03, // AID
+ 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, // DOT11_DMG_STA_CAPABILITY_INFO
+ 0x00, 0x00, // DOT11_DMG_PCP_AP_CAPABILITY_INFO
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00,
+ 0x98, 0x00,
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', 'P', 'S', 'K', // WDI_adPSK
+ 0x03, 0x01, // DSS Parameters
+ 0x02,
+ 0x30, 0x14, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x08, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x01, // AKM Suite
+ 0x00, 0x00, // RSN Capability
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11,
+ 0x04, 0xCE, 0x14, 0x07, 0x34, 0x6B, 0x01, 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00,
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xBE, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x00, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+ 0xDD, 0x21,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x09, 0x00, 0x00, 0x00
+};
+
+
+//===============================================================================
+
+WDI_MAC_ADDRESS s_Connect_Addr_11_11ad_Open = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB};
+
+UCHAR s_TLV_BSS_Entry_11_11ad_Beacon_Open [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x3F, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB,
+
+ // WDI_TLV_BEACON_FRAME (8.3.3.2, Table 8-33a)
+ 0x0A, 0x00,
+ 0x0C, 0x00, // For WiFi Beacon
+ // WiFi Beacon
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x64, 0x00, // Beacon Interval (8.4.1.3)
+ 0x05, 0x00, // Capability
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x64, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x03, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_BSS_Entry_11_11ad_Beacon_Dmg_Open [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x47, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB,
+
+ // WDI_TLV_BEACON_FRAME (8.3.3.2, Table 8-33a)
+ 0x0A, 0x00,
+ 0x05, 0x00, // For WiFi Beacon
+ // DMG Beacon
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x00, 0x0c, 0x38, // 3 - Sector Sweep (9.5.1)
+ 0x64, 0x00, // 2 - Beacon Interval (9.4.1.3)
+ 0xc0, 0x7c, 0x18, 0x08, 0x20, 0x18, // 6 - Beacon Interval Control (Fig 9-60)
+ 0x07, // 1 - DMG Parameters (9.4.1.47)
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x64, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x03, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_BSS_Entry_11_11ad_ProbeResponse_Open [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xC9, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB,
+
+ // WDI_TLV_PROBE_RESPONSE_FRAME (8.3.3.2, Table 8-33a)
+ 0x09, 0x00,
+ 0x96, 0x00, // For WiFi Beacon
+ // WiFi Beacon
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x64, 0x00, // Beacon Interval (8.4.1.3)
+ 0x05, 0x00, // Capability
+
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', '_', 'O', 'N', // WDI_ad_ON
+ 0x03, 0x01, // DSS Parameters
+ 0x02,
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB, // STA address
+ 0x00, // AID
+ 0x01, 0xD2, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x10, // DOT11_DMG_STA_CAPABILITY_INFO
+ 0x00, 0x00, // DOT11_DMG_PCP_AP_CAPABILITY_INFO
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xBE, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x12,
+ 0x00, 0x00, 0x03, 0xA4, 0x28, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x40, 0x00, 0x62, 0x32,
+ 0x10, 0x00,
+ 0x2E, 0x01,
+ 0x28,
+ 0xDD, 0x27,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x10, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00, 0x07, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0xDD, 0x0F,
+ 0x50, 0x6F, 0x9A, 0x17, 0x01, 0x09, 0x00, 0x07, 0x04, 0xCE, 0x14, 0x07, 0xA3, 0x66, 0x00,
+
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x64, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x03, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_BSS_Entry_11_11ad_ProbeResponse_Dmg_Open [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xC9, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB,
+
+ // WDI_TLV_PROBE_RESPONSE_FRAME (8.3.3.2, Table 8-33a)
+ 0x09, 0x00,
+ 0x96, 0x00, // For WiFi Beacon
+ // WiFi Beacon
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x64, 0x00, // Beacon Interval (8.4.1.3)
+ 0x05, 0x00, // Capability
+
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', '_', 'O', 'N', // WDI_ad_ON
+ 0x03, 0x01, // DSS Parameters
+ 0x02,
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB, // STA address
+ 0x00, // AID
+ 0x01, 0xD2, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x10, // DOT11_DMG_STA_CAPABILITY_INFO
+ 0x00, 0x00, // DOT11_DMG_PCP_AP_CAPABILITY_INFO
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xBE, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x12,
+ 0x00, 0x00, 0x03, 0xA4, 0x28, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x40, 0x00, 0x62, 0x32,
+ 0x10, 0x00,
+ 0x2E, 0x01,
+ 0x28,
+ 0xDD, 0x27,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x10, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00, 0x07, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0xDD, 0x0F,
+ 0x50, 0x6F, 0x9A, 0x17, 0x01, 0x09, 0x00, 0x07, 0x04, 0xCE, 0x14, 0x07, 0xA3, 0x66, 0x00,
+
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xC1, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x64, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x03, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_11_11ad_Open [] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x71, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x01, 0x00, 0x00, 0x00, //AuthAlgorithm -- RSNA_PSK
+ 0x00, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x03, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x03, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x36, 0x00,
+ 0x05, 0x00, // Capabilities
+ 0x01, 0x00, // Listen Interval
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', '_', 'O', 'N', // WDI_ad_ON
+ 0x2E, 0x01,
+ 0x08,
+ 0x94, 11,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB, // STA address
+ 0x00, // AID
+ 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x10, // DOT11_DMG_STA_CAPABILITY_INFO
+ 0x00, 0x00, // DOT11_DMG_PCP_AP_CAPABILITY_INFO
+ 0xDD, 0x0F,
+ 0x50, 0x6F, 0x9A, 0x17, 0x01, 0x09, 0x00, 0x07, 0x04, 0xCE, 0x14, 0x07, 0x49, 0x2D, 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x53, 0x00,
+ 0x07, 0x00, // Capabilities
+ 0x00, 0x00, // Status code
+ 0x02, 0x00, // Association ID
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11, // DMG Capabilities
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB, // STA address
+ 0x02, // AID
+ 0x01, 0xD2, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x10, // DOT11_DMG_STA_CAPABILITY_INFO
+ 0x00, 0x00, // DOT11_DMG_PCP_AP_CAPABILITY_INFO
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0x0C, 0x12,
+ 0x00, 0x00, 0x03, 0xA4, 0x28, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x40, 0x00, 0x62, 0x32,
+ 0x10, 0x00,
+ 0x2E, 0x01,
+ 0x2C,
+ 0xDD, 0x0F,
+ 0x50, 0x6F, 0x9A, 0x17, 0x01, 0x09, 0x00, 0x07, 0x04, 0xCE, 0x14, 0x07, 0xA3, 0x66, 0x00,
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00,
+ 0x96, 0x00, // For WiFi Beacon
+ // WiFi Beacon
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x64, 0x00, // Beacon Interval (8.4.1.3)
+ 0x05, 0x00, // Capability
+
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', '_', 'O', 'N', // WDI_ad_ON
+ 0x03, 0x01, // DSS Parameters
+ 0x02,
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11,
+ 0x04, 0xCE, 0x14, 0x07, 0xA3, 0x66, 0x00, 0x01, 0xD2, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x10, 0x00,
+ 0x00,
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xBE, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x12,
+ 0x00, 0x00, 0x03, 0xA4, 0x28, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x40, 0x00, 0x62, 0x32,
+ 0x10, 0x00,
+ 0x2E, 0x01,
+ 0x28,
+ 0xDD, 0x27,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x10, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00, 0x07, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0xDD, 0x0F,
+ 0x50, 0x6F, 0x9A, 0x17, 0x01, 0x09, 0x00, 0x07, 0x04, 0xCE, 0x14, 0x07, 0xA3, 0x66, 0x00,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x09, 0x00, 0x00, 0x00
+};
+
+
+UCHAR s_TLV_Success_AssociationResult_11_11ad_Dmg_Open [] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x71, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x01, 0x00, 0x00, 0x00, //AuthAlgorithm -- RSNA_PSK
+ 0x00, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x03, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x03, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x36, 0x00,
+ 0x05, 0x00, // Capabilities
+ 0x01, 0x00, // Listen Interval
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', '_', 'O', 'N', // WDI_ad_ON
+ 0x2E, 0x01,
+ 0x08,
+ 0x94, 11,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB, // STA address
+ 0x00, // AID
+ 0x11, 0xD1, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x10, // DOT11_DMG_STA_CAPABILITY_INFO
+ 0x00, 0x00, // DOT11_DMG_PCP_AP_CAPABILITY_INFO
+ 0xDD, 0x0F,
+ 0x50, 0x6F, 0x9A, 0x17, 0x01, 0x09, 0x00, 0x07, 0x04, 0xCE, 0x14, 0x07, 0x49, 0x2D, 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x53, 0x00,
+ 0x07, 0x00, // Capabilities
+ 0x00, 0x00, // Status code
+ 0x02, 0x00, // Association ID
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11, // DMG Capabilities
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEB, // STA address
+ 0x02, // AID
+ 0x01, 0xD2, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x10, // DOT11_DMG_STA_CAPABILITY_INFO
+ 0x00, 0x00, // DOT11_DMG_PCP_AP_CAPABILITY_INFO
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0x0C, 0x12,
+ 0x00, 0x00, 0x03, 0xA4, 0x28, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x40, 0x00, 0x62, 0x32,
+ 0x10, 0x00,
+ 0x2E, 0x01,
+ 0x2C,
+ 0xDD, 0x0F,
+ 0x50, 0x6F, 0x9A, 0x17, 0x01, 0x09, 0x00, 0x07, 0x04, 0xCE, 0x14, 0x07, 0xA3, 0x66, 0x00,
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00,
+ 0x96, 0x00, // For WiFi Beacon
+ // WiFi Beacon
+ 0x38, 0xE3, 0x3B, 0x64, 0x11, 0x00, 0x00, 0x00, // TimeStamp (9.4.1.10)
+ 0x64, 0x00, // Beacon Interval (8.4.1.3)
+ 0x05, 0x00, // Capability
+
+ 0x00, 0x09, // SSID
+ 'W', 'D', 'I', '_', 'a', 'd', '_', 'O', 'N', // WDI_ad_ON
+ 0x03, 0x01, // DSS Parameters
+ 0x02,
+ 0x7F, 0x04,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x94, 0x11,
+ 0x04, 0xCE, 0x14, 0x07, 0xA3, 0x66, 0x00, 0x01, 0xD2, 0xB7, 0x06, 0x00, 0x00, 0x40, 0x10, 0x00,
+ 0x00,
+ 0x97, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xBE, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x12,
+ 0x00, 0x00, 0x03, 0xA4, 0x28, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x40, 0x00, 0x62, 0x32,
+ 0x10, 0x00,
+ 0x2E, 0x01,
+ 0x28,
+ 0xDD, 0x27,
+ 0x04, 0xCE, 0x14, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x10, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05,
+ 0x00, 0x07, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0xDD, 0x0F,
+ 0x50, 0x6F, 0x9A, 0x17, 0x01, 0x09, 0x00, 0x07, 0x04, 0xCE, 0x14, 0x07, 0xA3, 0x66, 0x00,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x09, 0x00, 0x00, 0x00
+};
+
+
+//===============================================================================
+//
+// 11ax
+//
+//===============================================================================
+
+//
+// Open on 2.4 GHz
+//
+WDI_MAC_ADDRESS s_Connect_Addr_12_11ax_24_Open = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEC};
+
+
+UCHAR s_TLV_BSS_Entry_12_11ax_24_Open [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x78, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEC,
+
+ // WDI_TLV_PROBE_RESPONSE_FRAME
+ 0x09, 0x00, // Type
+ 0x4A, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x11, // SSID
+ 'W', 'D', 'I', '_', 'O', 'P', 'E', 'N', '_', '1', '1', 'a', 'x', '.', '2', '.', '4',
+ 0x01, 0x04,
+ 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01,
+ 0x01, // DSSS Parameter
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x46, 0x05,
+ 0x02, 0x00, 0x00, 0x00, 0x00, // RM Enabled Capabilities
+ 0xFF, 0x13, // Extension IE
+ 0x23, // HE Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, // MAC Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // PHY Capabilities
+ 0x00,
+ 0x00, 0x00, 0x00, 0x00, // HE-MCS and NSS
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x05, 0x06, 0x07,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x06, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // Band ID
+};
+
+UCHAR s_TLV_Success_AssociationResult_12_11ax_24_Open [] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x28, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEC,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x01, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x4E, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x11, // SSID
+ 'W', 'D', 'I', '_', 'O', 'P', 'E', 'N', '_', '1', '1', 'a', 'x', '.', '2', '.', '4',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02,
+ 0x07, 0x12, //Power Capability
+ 0x24, 0x02,
+ 0x01, 0x0B, //Supported Channels
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x08,
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+ 0xFF, 0x13, // Extension IE
+ 0x23, // HE Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, // MAC Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // PHY Capabilities
+ 0x00,
+ 0x00, 0x00, 0x00, 0x00, // HE-MCS and NSS
+
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x45, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+ 0xFF, 0x13, // Extension IE
+ 0x23, // HE Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, // MAC Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // PHY Capabilities
+ 0x00,
+ 0x00, 0x00, 0x00, 0x00, // HE-MCS and NSS
+
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00, // Type
+ 0x43, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x11, // SSID
+ 'W', 'D', 'I', '_', 'O', 'P', 'E', 'N', '_', '1', '1', 'a', 'x', '.', '2', '.', '4',
+ 0x01, 0x04,
+ 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01,
+ 0x01, // DSSS Parameter
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0xFF, 0x13, // Extension IE
+ 0x23, // HE Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, // MAC Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // PHY Capabilities
+ 0x00,
+ 0x00, 0x00, 0x00, 0x00, // HE-MCS and NSS
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0A, 0x00, 0x00, 0x00,
+
+};
+
+
+//===============================================================================
+
+//
+// Open on 5 GHz
+//
+WDI_MAC_ADDRESS s_Connect_Addr_13_11ax_5_Open = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xED};
+
+
+UCHAR s_TLV_BSS_Entry_13_11ax_5_Open [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x76, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xED,
+
+ // WDI_TLV_PROBE_RESPONSE_FRAME
+ 0x09, 0x00, // Type
+ 0x48, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x0F, // SSID
+ 'W', 'D', 'I', '_', 'O', 'P', 'E', 'N', '_', '1', '1', 'a', 'x', '.', '5',
+ 0x01, 0x04,
+ 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01,
+ 0x01, // DSSS Parameter
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x46, 0x05,
+ 0x02, 0x00, 0x00, 0x00, 0x00, // RM Enabled Capabilities
+ 0xFF, 0x13, // Extension IE
+ 0x23, // HE Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, // MAC Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // PHY Capabilities
+ 0x00,
+ 0x00, 0x00, 0x00, 0x00, // HE-MCS and NSS
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x05, 0x06, 0x07,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x24, 0x00, 0x00, 0x00, // Channel 36
+ 0x02, 0x00, 0x00, 0x00 // Band ID
+};
+
+UCHAR s_TLV_Success_AssociationResult_13_11ax_5_Open [] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x0F, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xED,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x01, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x02, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x4C, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0xF, // SSID
+ 'W', 'D', 'I', '_', 'O', 'P', 'E', 'N', '_', '1', '1', 'a', 'x', '.', '5',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02,
+ 0x07, 0x12, //Power Capability
+ 0x24, 0x02,
+ 0x24, 0x30, //Supported Channels
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x08,
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+ 0xFF, 0x13, // Extension IE
+ 0x23, // HE Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, // MAC Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // PHY Capabilities
+ 0x00,
+ 0x00, 0x00, 0x00, 0x00, // HE-MCS and NSS
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x45, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+ 0xFF, 0x13, // Extension IE
+ 0x23, // HE Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, // MAC Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // PHY Capabilities
+ 0x00,
+ 0x00, 0x00, 0x00, 0x00, // HE-MCS and NSS
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00, // Type
+ 0x2C, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0xF, // SSID
+ 'W', 'D', 'I', '_', 'O', 'P', 'E', 'N', '_', '1', '1', 'a', 'x', '.', '5',
+ 0x01, 0x04,
+ 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01,
+ 0x01, // DSSS Parameter
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0A, 0x00, 0x00, 0x00,
+
+};
+
+//
+//===============================================================================
+//
+
+// #define SAE_MIXED_MODE 1
+
+WDI_MAC_ADDRESS s_Connect_Addr_14_WPA3_SAE_CCMP = { 0x34, 0x13, 0xe8, 0xbc, 0x4d, 0x32 };
+
+UCHAR s_TLV_BSS_Entry_14_WPA3_SAE_CCMP [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+#ifdef SAE_MIXED_MODE
+ 0x91, 0x00, //Len
+#else
+ 0x8D, 0x00, //Len
+#endif // SAE_MIXED_MODE
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x34, 0x13, 0xe8, 0xbc, 0x4d, 0x32,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+#ifdef SAE_MIXED_MODE
+ 0x5E, 0x00,
+#else
+ 0x5A, 0x00,
+#endif // SAE_MIXED_MODE
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0C, // SSID
+ 'W', 'D', 'I', '_', 'W', 'P', 'A', '3', '-', 'S', 'A', 'E',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01,
+ 0x06, // DSS Parameters
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01,
+ 0x00, // ERP
+ 0x2F, 0x01,
+ 0x00, // Reserved
+#ifdef SAE_MIXED_MODE
+ 0x30, 0x18,
+#else
+ 0x30, 0x14,
+#endif // SAE_MIXED_MODE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher
+#ifdef SAE_MIXED_MODE
+ 0x02, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x02, // AKM Suite - WPA2PSK
+ 0x00, 0x0F, 0xAC, 0x08, // AKM Suite - WPA3SAE
+ 0x80, 0x00, // RSN Capability - no MFPR or MFPC
+#else
+ 0x01, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x08, // AKM Suite - WPA3SAE
+ 0xC0, 0x00, // RSN Capability = MFP-Capable
+#endif // SAE_MIXED_MODE
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x0B, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // BandId
+
+};
+
+UCHAR s_TLV_Success_AssociationResult_14_WPA3_SAE_CCMP[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+#ifdef SAE_MIXED_MODE
+ 0x2A, 0x01,
+#else
+ 0x26, 0x01,
+#endif // SAE_MIXED_MODE
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x34, 0x13, 0xe8, 0xbc, 0x4d, 0x32,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x4A, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x0C, // SSID
+ 'W', 'D', 'I', '_', 'W', 'P', 'A', '3', '-', 'S', 'A', 'E',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02,
+ 0x07, 0x12, //Power Capability
+ 0x24, 0x02,
+ 0x01, 0x0B, //Supported Channels
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x08,
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+ 0x30, 0x14,
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher
+ 0x01, 0x00, // Pairwise cipher count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher
+ 0x01, 0x00, // AMK Suite Count
+ 0x00, 0x0F, 0xAC, 0x08, // AMK Suite - WPA3SAE
+ 0xC0, 0x00, // RSN Capability = MFP-Capable + MFP-Required
+
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08, // Rates
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C,
+ 0x32, 0x04, // Extended Rates
+ 0x0C, 0x12, 0x18, 0x60,
+ 0xDD, 0x18, // WMM settings
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+#ifdef SAE_MIXED_MODE
+ 0x5E, 0x00,
+#else
+ 0x5A, 0x00,
+#endif // SAE_MIXED_MODE
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0C, // SSID
+ 'W', 'D', 'I', '_', 'W', 'P', 'A', '3', '-', 'S', 'A', 'E',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01,
+ 0x06, // DSS Parameters
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01,
+ 0x00, // ERP
+ 0x2F, 0x01,
+ 0x00, // Reserved
+#ifdef SAE_MIXED_MODE
+ 0x30, 0x18,
+#else
+ 0x30, 0x14,
+#endif // SAE_MIXED_MODE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Multicast Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher
+#ifdef SAE_MIXED_MODE
+ 0x02, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x02, // AKM Suite - WPA2PSK
+ 0x00, 0x0F, 0xAC, 0x08, // AKM Suite - WPA3SAE
+ 0x80, 0x00, // RSN Cap = MFP-Capable
+#else
+ 0x01, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x08, // AKM Suite - WPA3SAE
+ 0xC0, 0x00, // RSN Cap = MFP-Capable + MFP required
+#endif // SAE_MIXED_MODE
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0A, 0x00, 0x00, 0x00,
+
+};
+
+
+//
+// SAE-Specific definitions :: Start
+//
+DWORD g_dwSaeResendConfirmRequested = 0;
+
+UCHAR pucSAECommitResponse [] =
+ {
+ 0x03, 0x00, // [1] usAlgorithmNumber = DOT11_AUTH_SAE (not-IE, 2 octets)
+ 0x01, 0x00, // [2] usXid: Commit=1, Confirm=2 (not-IE, 2 octets)
+ 0x00, 0x00, // [3] usStatusCode = 0 or 76 (ANTI_CLOGGING_TOKEN_REQUIRED) (not-IE, 2 octets)
+ 0x13, 0x00, // [10] FiniteCyclicGroup (not-IE, 2 octets)
+// 0x00, 0x00, 0x00, 0x00, // [11] AntiCloggingToken (not-IE, variable octets)
+ // [13] AP Scalar
+ 0x93, 0x48, 0x89, 0xab, 0x38, 0x6b, 0x72, 0xd5, 0xff, 0x0d, 0x3c, 0xaa, 0x09, 0x56, 0x50, 0x20,
+ 0x2b, 0xd0, 0x3e, 0x26, 0x96, 0xb5, 0x90, 0x5f, 0x7b, 0x49, 0x5f, 0x3b, 0x7d, 0xc3, 0x5b, 0x48,
+
+ // [14] AP Element
+ 0x58, 0x54, 0x5e, 0x6c, 0xa0, 0xe8, 0x86, 0xef, 0xfb, 0x05, 0x2a, 0xfb, 0x63, 0x2c, 0xa2, 0x19,
+ 0x5b, 0xb0, 0xb0, 0xa8, 0x25, 0xe5, 0x9d, 0xba, 0x6b, 0xaa, 0x0e, 0x93, 0xaf, 0x04, 0x6e, 0xf4,
+ 0xc9, 0x45, 0x5f, 0xec, 0x43, 0xfe, 0x5e, 0xb0, 0x2a, 0x6b, 0x8a, 0xbc, 0x8f, 0xd7, 0x07, 0x87,
+ 0x87, 0x3d, 0xd1, 0xd5, 0xd7, 0xfd, 0xe3, 0x07, 0x3a, 0x4c, 0xf3, 0xc2, 0xc7, 0x6f, 0x59, 0x5c,
+ };
+UCHAR pucSAECommitResponseReflection [] =
+ {
+ 0x03, 0x00, // [1] usAlgorithmNumber = DOT11_AUTH_SAE (not-IE, 2 octets)
+ 0x01, 0x00, // [2] usXid: Commit=1, Confirm=2 (not-IE, 2 octets)
+ 0x00, 0x00, // [3] usStatusCode = 0 or 76 (ANTI_CLOGGING_TOKEN_REQUIRED) (not-IE, 2 octets)
+ 0x13, 0x00, // [10] FiniteCyclicGroup (not-IE, 2 octets)
+// 0x00, 0x00, 0x00, 0x00, // [11] AntiCloggingToken (not-IE, variable octets)
+ // [13] AP Scalar
+
+ 0x49, 0x5c, 0x2c, 0xb4, 0x20, 0xec, 0xc9, 0xe8, 0xe8, 0x03, 0x2d, 0x00, 0x8d, 0xab, 0x4d, 0x91,
+ 0x70, 0x16, 0x06, 0x28, 0x40, 0x83, 0xb9, 0x8d, 0x19, 0xc6, 0x43, 0xcb, 0x63, 0x29, 0x9f, 0x03,
+
+ // [14] AP Element
+ 0x13, 0x2e, 0xfc, 0x90, 0xb9, 0xd7, 0xb5, 0xc1, 0x2a, 0x1d, 0xe9, 0x05, 0x9c, 0xb3, 0xba, 0xc8,
+ 0xa6, 0x93, 0xff, 0xbf, 0x23, 0x02, 0x42, 0x3e, 0x58, 0xc2, 0x0d, 0x00, 0x10, 0xe8, 0x44, 0x60,
+ 0x9d, 0xfc, 0x34, 0x5e, 0x98, 0x8e, 0xf2, 0x12, 0x67, 0x24, 0xd0, 0x80, 0xfb, 0x2f, 0x1e, 0x7a,
+ 0xe6, 0x54, 0x01, 0x00, 0x50, 0xd4, 0xfe, 0x66, 0x47, 0x62, 0xc0, 0x3c, 0x9f, 0x7a, 0x10, 0x27,
+ };
+
+UCHAR pucSAEConfirmResponse [] =
+ {
+ 0x03, 0x00, // [1] usAlgorithmNumber = DOT11_AUTH_SAE (not-IE, 2 octets)
+ 0x02, 0x00, // [2] usXid: Commit=1, Confirm=2 (not-IE, 2 octets)
+ 0x00, 0x00, // [3] usStatusCode = 0 or 76 (DOT11_FRAME_STATUS_ANTI_CLOGGING_TOKEN_REQUIRED) (not-Element, 2 octets)
+ 0x00, 0x00, // [12] SendConfirm (not-IE, 2 octets)
+ // [15] Confirm
+ 0xc7, 0xd1, 0x04, 0x94, 0x29, 0xec, 0xdf, 0x25, 0xda, 0xaa, 0x79, 0x6f, 0xda, 0xe9, 0x91, 0x9f,
+ 0x4b, 0x83, 0xad, 0xa3, 0x08, 0xde, 0x62, 0xca, 0xcd, 0x59, 0xfc, 0xf5, 0xc5, 0x4d, 0xeb, 0xd9,
+ };
+
+UCHAR pucM1SaeFrame[] =
+{
+ // DOT11_MGMT_HEADER - DOT11_DATA_SHORT_HEADER
+ 0x88, 0x02, // Frame Control: Version = 0x0, Type = DOT11_FRAME_TYPE_DATA, Subtype = DOT11_DATA_SUBTYPE_DATA
+ 0x30, 0x00, // Duration
+ 0x9c, 0xda, 0x3e, 0xf2, 0x7d, 0xd5, // Address1: Receiver/Destination/STA address
+ 0x34, 0x13, 0xe8, 0xbc, 0x4d, 0x32, // Address2: Transmittor/Bssid address
+ 0x34, 0x13, 0xe8, 0xbc, 0x4d, 0x32, // Address3: Source address
+ 0x00, 0x00, 0x07, 0x00, // Sequence Control
+ // IEEE_8022_LLC_SNAP
+ 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, // NWF_802_LLC_SNAP
+ 0x88, 0x8e, // sh_etype = DOT11_ETH_TYPE_EAPOL
+ // NWF_EAPOL_HEADER
+ 0x02, // Version = NWF_EAPOL_PROTOCOL_VERSION_V1 = 1 OR NWF_EAPOL_PROTOCOL_VERSION_V2 = 2
+ 0x03, // Type = EAPOL_Key = 2
+ 0x00, 0x75, // Length
+ // NWF_EAPOL_RSNA_KEY_DESC
+ 0x02, // Type
+ 0x00, 0x8a, // Info
+ 0x00, 0x10, // Length
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // Replay Counter
+ 0x57, 0x63, 0xf3, 0xb6, 0x6e, 0xc8, 0x90, 0xe4, 0xae, 0xfc, 0x2c, 0x50, 0xb0, 0xa9, 0x04, 0x29, // Nonce
+ 0x97, 0xb9, 0x80, 0x26, 0x13, 0x1a, 0xe2, 0xf0, 0x24, 0x30, 0x4b, 0x87, 0x57, 0x15, 0xcf, 0x87,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // IV
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // RSC
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Reserved
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // MIC
+ 0x00, 0x16, // Key length
+ 0xdd, 0x14, // KeyData -> DOT11_INFO_ELEMENT_ID_VENDOR_SPECIFIC + Len
+ 0x00, 0x0f, 0xac, 0x04, // OUI -> RSN_KEY_DATA_OUI + RSN_KEY_DATA_OUI_TYPE_PMKID -> {0x00,0x0F,0xAC} + {0x04)
+ 0x37, 0xfb, 0x9a, 0x24, 0xc1, 0x57, 0x8c, 0xce, 0xc3, 0x60, 0x6c, 0x6f, 0x39, 0xe0, 0xb7, 0x02, // PMKID
+};
+
+
+UCHAR pucExpectedM2SaeFrame[] =
+{
+ // DOT11_MGMT_HEADER - DOT11_DATA_SHORT_HEADER
+ 0x88, 0x01, // Frame Control
+ 0x2c, 0x00, // Duration
+ 0x34, 0x13, 0xe8, 0xbc, 0x4d, 0x32, // Receiver/Destination/STA address
+ 0x9c, 0xda, 0x3e, 0xf2, 0x7d, 0xd5, // Transmittor/Bssid address
+ 0x34, 0x13, 0xe8, 0xbc, 0x4d, 0x32, // Source address
+ 0x00, 0x00, 0x07, 0x00,
+ // IEEE_8022_LLC_SNAP
+ 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, // NWF_802_LLC_SNAP
+ 0x88, 0x8e, // sh_etype
+ // NWF_EAPOL_HEADER
+ 0x01, // Version = bProtocolVersion = NWF_EAPOL_PROTOCOL_VERSION_V1 = 1
+ 0x03, // Type = EAPOL_Key = 2
+ 0x00, 0x75, // Length
+ // NWF_EAPOL_RSNA_KEY_DESC
+ 0x02, // Type = bKeyDesc = NWF_EAPOL_KEY_DESC_RSNA = 2
+ 0x01, 0x0a, // Info = usKeyInfo, ResponseKeyInfo.Version = KEY_DESC_VERSION_AES, Type=RSN_KEY_TYPE_PAIRWISE, MIC=1, Secure=0
+ 0x00, 0x00, // Length
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // Replay Counter
+ 0x80, 0xf8, 0x10, 0x83, 0x4f, 0x0f, 0x40, 0xa1, 0xe5, 0x5d, 0x51, 0x92, 0x83, 0x4f, 0x8e, 0x98, // Nonce
+ 0x09, 0xca, 0xd5, 0x14, 0xc6, 0x08, 0x4c, 0xa9, 0xed, 0xc3, 0xa8, 0xff, 0xce, 0xc9, 0x36, 0xb6,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // IV
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // RSC
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Reserved
+ 0xa1, 0x79, 0x5f, 0x05, 0xa4, 0x12, 0x84, 0xf2, 0xf9, 0x0c, 0x79, 0x88, 0xeb, 0x92, 0x71, 0x62, // MIC
+ 0x00, 0x16, // Key Length
+ 0x30, 0x14, 0x01, 0x00, 0x00, 0x0f, 0xac, 0x04, 0x01, 0x00, 0x00, 0x0f, 0xac, 0x04, 0x01, 0x00, // Key Data = RSN
+ 0x00, 0x0f, 0xac, 0x08, 0x80, 0x00
+
+};
+
+UCHAR pucM3SaeFrame[] =
+{
+ // DOT11_MGMT_HEADER - DOT11_DATA_SHORT_HEADER
+ 0x88, 0x02, // Frame Control
+ 0x30, 0x00, // Duration
+ 0x9c, 0xda, 0x3e, 0xf2, 0x7d, 0xd5, // Receiver/Destination/STA address
+ 0x34, 0x13, 0xe8, 0xbc, 0x4d, 0x32, // Transmittor/Bssid address
+ 0x34, 0x13, 0xe8, 0xbc, 0x4d, 0x32, // Source address
+ 0x00, 0x00, 0x07, 0x00, // Sequence Control
+ // IEEE_8022_LLC_SNAP
+ 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, // NWF_802_LLC_SNAP
+ 0x88, 0x8e, // sh_etype
+ // NWF_EAPOL_HEADER
+ 0x02, // Version
+ 0x03, // Type
+ 0x00, 0x97, // Length
+ // NWF_EAPOL_RSNA_KEY_DESC
+ 0x02, // Type
+ 0x13, 0xca, // Info
+ 0x00, 0x10, // Length
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // Replay Counter
+ 0x57, 0x63, 0xf3, 0xb6, 0x6e, 0xc8, 0x90, 0xe4, 0xae, 0xfc, 0x2c, 0x50, 0xb0, 0xa9, 0x04, 0x29, // Nonce
+ 0x97, 0xb9, 0x80, 0x26, 0x13, 0x1a, 0xe2, 0xf0, 0x24, 0x30, 0x4b, 0x87, 0x57, 0x15, 0xcf, 0x87,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // IV
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // RSC
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Reserved
+ 0xa5, 0xea, 0xdc, 0xfd, 0x97, 0xc7, 0x72, 0x76, 0x24, 0xe2, 0x7e, 0x71, 0x45, 0x3a, 0x24, 0xca, // MIC
+ 0x00, 0x38, // Key Length
+ 0x6f, 0x39, 0x30, 0x2c, 0x46, 0xb4, 0x3c, 0xf8, 0x42, 0x07, 0x8e, 0xc9, 0x65, 0x05, 0x2c, 0xd0, // Encrypted Key data
+ 0xe1, 0x7b, 0xdd, 0x2e, 0xbd, 0x69, 0x09, 0x1e, 0x39, 0xcc, 0x1a, 0xb3, 0x6e, 0x55, 0xd1, 0xad,
+ 0x5c, 0x45, 0x52, 0x4b, 0x83, 0x5d, 0x39, 0xe3, 0x1c, 0xb6, 0xed, 0x35, 0x52, 0x76, 0xb1, 0xc6,
+ 0x5a, 0x2c, 0x96, 0x07, 0x77, 0x15, 0x15, 0x5c,
+};
+
+
+UCHAR pucExpectedM4SaeFrame[] =
+{
+ // DOT11_MGMT_HEADER - DOT11_DATA_SHORT_HEADER
+ 0x88, 0x01, // Frame Control
+ 0x2c, 0x00, // Duration
+ 0x34, 0x13, 0xe8, 0xbc, 0x4d, 0x32, // Receiver/Destination/STA address
+ 0x9c, 0xda, 0x3e, 0xf2, 0x7d, 0xd5, // Transmittor/Bssid address
+ 0x34, 0x13, 0xe8, 0xbc, 0x4d, 0x32, // Source address
+ 0x10, 0x00, 0x07, 0x00, // Sequence Control
+ // IEEE_8022_LLC_SNAP
+ 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, // NWF_802_LLC_SNAP
+ 0x88, 0x8e, // sh_etype
+ // NWF_EAPOL_HEADER
+ 0x01, // Version
+ 0x03, // Type
+ 0x00, 0x5f, // Length
+ // NWF_EAPOL_RSNA_KEY_DESC
+ 0x02, // Type
+ 0x03, 0x0a, // Info
+ 0x00, 0x00, // Length
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // Replay Counter
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Nonce
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // IV
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // RSC
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Reserved
+ 0x52, 0x97, 0x0f, 0x90, 0x69, 0x7d, 0xcd, 0xeb, 0x98, 0xbf, 0xb1, 0x2a, 0xb2, 0x3e, 0xcc, 0x49, // MIC
+ 0x00, 0x00, // Key Length
+};
+
+//
+// SAE-Specific definitions :: End
+//
+
+//
+//===============================================================================
+//
+
+WDI_MAC_ADDRESS s_Connect_Addr_15_WPA2PSK_SHA256 = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEF};
+
+UCHAR s_TLV_BSS_Entry_15_WPA2PSK_SHA256 [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x91, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEF,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x5e, 0x00,
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0A, // SSID
+ 'W', 'D', 'I', '_', 'S', 'H', 'A', '2', '5', '6',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01, 0x06, // DSS Parameters
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01, 0x00, // ERP
+ 0x2F, 0x01, 0x00, // Reserved
+ 0x30, 0x1a, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x06, // AKM Suite
+ 0xCC, 0x00, // RSN Capability
+ 0x00, 0x00,
+ 0x00, 0x0F, 0xAC, 0x06, // Group Cipher
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09, 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x0B, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_15_WPA2PSK_SHA256[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x28, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xEF,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x48, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x0A, // SSID
+ 'W', 'D', 'I', '_', 'S', 'E', 'C', 'U', 'R', 'E',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02, 0x07, 0x12, //Power Capability
+ 0x24, 0x02, 0x01, 0x0B, //Supported Channels
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x08, 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+ 0x30, 0x14,
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher
+ 0x01, 0x00, // Pairwise cipher count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher
+ 0x01, 0x00, // AMK Suite Count
+ 0x00, 0x0F, 0xAC, 0x06, // AMK Suite - WPA2PSK_SHA256
+ 0xC0, 0x00, // RSN Capability = MFP-Capable + MFP-Required
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18, 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0x5e, 0x00,
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0A, // SSID
+ 'W', 'D', 'I', '_', 'S', 'E', 'C', 'U', 'R', 'E',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01, 0x06, // DSS Parameters
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01, 0x00, // ERP
+ 0x2F, 0x01, 0x00, // Reserved
+ 0x30, 0x1a, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x02, // AKM Suite
+ 0xCC, 0x00, // RSN Capability
+ 0x00, 0x00,
+ 0x00, 0x0F, 0xAC, 0x06, // Group Cipher
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09, 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x00, 0x00, 0x00,
+
+};
+
+
+//
+//===============================================================================
+//
+
+#ifdef WPA3_ARUBA_SIM
+WDI_MAC_ADDRESS s_Connect_Addr_16_WPA3_SUITEB = {0xa8, 0xbd, 0x27, 0xcd, 0xe0, 0xa5}; // For Aruba
+#elif WPA3_INTEL_SIM
+WDI_MAC_ADDRESS s_Connect_Addr_16_WPA3_SUITEB = {0x8c, 0xfd, 0xf0, 0x0f, 0x7f, 0x4a}; // For Intel
+#else
+WDI_MAC_ADDRESS s_Connect_Addr_16_WPA3_SUITEB = {0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xF0};
+#endif
+
+UCHAR s_TLV_BSS_Entry_16_WPA3_SUITEB [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x97, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+#ifdef WPA3_ARUBA_SIM
+ 0xa8, 0xbd, 0x27, 0xcd, 0xe0, 0xa5, // For Aruba
+#elif WPA3_INTEL_SIM
+ 0x8c, 0xfd, 0xf0, 0x0f, 0x7f, 0x4a, // For Intel
+#else
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xF0,
+#endif
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x64, 0x00,
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x10, // SSID
+ 'W', 'D', 'I', '_', 'W', 'P', 'A', '3', '-', 'S', 'U', 'I', 'T', 'E', '_', 'B',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01,
+ 0x06, // DSS Parameters
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01,
+ 0x00, // ERP
+ 0x2F, 0x01,
+ 0x00, // Reserved
+ 0x30, 0x1A,
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x09, // Group Cipher = GCMP
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x09, // Pairwise Cipher = GCMP
+ 0x01, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x0C, // AKM Suite - WPA3-SuiteB
+ 0xC0, 0x00, // RSN Capability = MFPC + MFPR + ...
+ 0x00, 0x00, // PMKID Count
+ 0x00, 0x0F, 0xAC, 0x0C, // Group Mgmt Cipher = GMAC
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x0B, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // BandId
+
+};
+
+UCHAR s_TLV_Success_AssociationResult_16_WPA3_SUITEB[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x3A, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+#ifdef WPA3_ARUBA_SIM
+ 0xa8, 0xbd, 0x27, 0xcd, 0xe0, 0xa5, // For Aruba
+#elif WPA3_INTEL_SIM
+ 0x8c, 0xfd, 0xf0, 0x0f, 0x7f, 0x4a, // For Intel
+#else
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD0, 0xF0,
+#endif
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, // Association Status
+ 0x00, 0x00, 0x00, 0x00, // Status Code
+ 0x00, // ReAssociationRequest
+ 0x08, 0x00, 0x00, 0x00, // AuthAlgorithm = WDI_AUTH_ALGO_WPA3_ENT_192 = 8
+ 0x09, 0x00, 0x00, 0x00, // UnicastCipherAlgorithm = WDI_CIPHER_ALGO_GCMP_256 = 9
+ 0x09, 0x00, 0x00, 0x00, // MulticastDataCipherAlgorithm = WDI_CIPHER_ALGO_GCMP_256 = 9
+ 0x0C, 0x00, 0x00, 0x00, // MulticastMgmtCipherAlgorithm = WDI_CIPHER_ALGO_BIP_GMAC_256 = C
+ 0x00, // FourAddressSupported
+ 0x00, // Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, // DSInfo
+ 0x00, 0x00, 0x00, 0x00, // AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x54, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x10, // SSID
+ 'W', 'D', 'I', '_', 'W', 'P', 'A', '3', '-', 'S', 'U', 'I', 'T', 'E', '_', 'B',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02, 0x07, 0x12, //Power Capability
+ 0x24, 0x02, 0x01, 0x0B, //Supported Channels
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x08, 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+ 0x30, 0x1A,
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x09, // Group Cipher = GCMP
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x09, // Pairwise Cipher = GCMP
+ 0x01, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x0C, // AKM Suite - WPA3-SuiteB
+ 0xC0, 0x00, // RSN Capability = MFPC + MFPR + ...
+ 0x00, 0x00, // PMKID Count
+ 0x00, 0x0F, 0xAC, 0x0C, // Group Mgmt Cipher = GMAC
+
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18, 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0x64, 0x00,
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x10, // SSID
+ 'W', 'D', 'I', '_', 'W', 'P', 'A', '3', '-', 'S', 'U', 'I', 'T', 'E', '_', 'B',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01, 0x06, // DSS Parameters
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01, 0x00, // ERP
+ 0x2F, 0x01, 0x00, // Reserved
+ 0x30, 0x1A,
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x09, // Group Cipher = GCMP
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x09, // Pairwise Cipher = GCMP
+ 0x01, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x0C, // AKM Suite - WPA3-SuiteB
+ 0xC0, 0x00, // RSN Capability = MFPC + MFPR + ...
+ 0x00, 0x00, // PMKID Count
+ 0x00, 0x0F, 0xAC, 0x0C, // Group Mgmt Cipher = GMAC
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x00, 0x00, 0x00,
+
+};
+
+//===============================================================================
+//
+// 6 GHz
+//
+//===============================================================================
+
+//
+// RNR IE has the following format (only care about TBTT length = 8 or 12):
+// 0xc9, 0x<IELength>
+// 0x<TBTTInformationHeader> -> 2 bytes (contains number and size of each element)
+// 0x<OperatingClass>, 0x<Channel> -> 2 bytes (applies to all element in this list)
+// 0x<TBTTOffset> -> 1 byte
+// 0x<Bssid> -> 6 bytes
+// [0x<SHortSsid>] -> 4 bytes
+// 0x<BssParameters> -> 1 byte
+//
+
+//
+// Mac addresses have the following nomenclature for 6GHz Ssids
+//
+// 1st 3 bytes are 0x00 0xA1, 0xB0
+// 4th byte is for SSID:
+// 01 = 6E__1
+// 02 = 6E__2
+// 03 = SSID3
+// 04 = SSID4
+// 5th Byte is for band:
+// 02 = 2.4 GHz
+// 05 = 5 GHz
+// 06 = 6 GHz
+// 6th byte is instance
+// 01 = 1st instance
+// 02 - 2nd instance
+// :
+//
+
+//===============================================================================
+// SIX_G: 6E__1:
+// (1 * 2.4 GHz) + (1 * 5 GHz) + (2 * 6 GHz)
+// 2.4 GHz:
+// S1_24_1: S1_5_1 (In+Out) + S1_6_1 (Out) + S1_6_2 (Out)
+// 5 GHz:
+// S1_5_1: S1_24_1 (In+Out) + S1_6_1 (Out) + S1_6_2 (Out)
+// 6 GHz:
+// S1_6_1: S1_24_1 (In) + S1_5_1 (In)
+// S1_6_2: S1_24_1 (In) + S1_5_1 (In)
+//===============================================================================
+
+//
+// 6E__1: 1 * 2.4 GHz Bss's
+// 1 RNR IE with 3 entries: Band:Channel = [5:36 + 6:101 + 6:133]
+//
+WDI_MAC_ADDRESS s_Connect_Addr_17_6G_S1_2_4_Ghz = {0x00, 0xA1, 0xB0, 0x01, 0x02, 0x01};
+UCHAR s_TLV_BSS_Entry_17_6G_S1_2_4_Ghz [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xE9, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA1, 0xB0, 0x01, 0x02, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0xB6, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter Set
+ 0x01,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0x6c,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbits/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+
+ 0xc9, 0x30, // RNR IE
+ 0x04, 0x0c, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x73, 0x24, // Operating Class = 115 (5 GHz), Channel = 36
+ 0x00, 0x00, 0xA1, 0xB0, 0x01, 0x05, 0x01, 0x18, 0x3a, 0x94, 0x4f, 0x40, // 6E__1 on 5 GHz
+ 0x00, 0x0c, // TBTT: 0x00 => B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x83, 0x65, // Operating Class = 131, Channel = 101
+ 0x00, 0x00, 0xA1, 0xB0, 0x01, 0x06, 0x01, 0x18, 0x3a, 0x94, 0x4f, 0x40, // 6E__1 on 6 Ghz
+ 0x0c, 0x0c, // TBTT: 0x0c => B2:3=1(FilteredAP:Reserved),B4-B7=f(TBTT Information Count=3+1) :: 0x0c = TBTT Length
+ 0x83, 0x85, // Operating Class = 131, Channel = 133
+ 0x00, 0x00, 0xA1, 0xB0, 0x01, 0x06, 0x02, 0x18, 0x3a, 0x94, 0x4f, 0x40, // 6E__1 on 6 GHz
+
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel / Freq = 2412 MHz
+ 0x01, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_17_6G_S1_2_4_Ghz[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x0B, 0x02,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA1, 0xB0, 0x01, 0x02, 0x01,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, // DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x8B, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0xfa, 0x00, // Listen Interval
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x21, 0x02, // Power Capability Min: 0, Max: 15
+ 0x00, 0x0f,
+ 0x24, 0x32, // Supported Channels
+ 0x24, 0x01, 0x28, 0x01, 0x2c, 0x01, 0x30, 0x01, 0x34, 0x01, 0x38, 0x01, 0x3c, 0x01, 0x40, 0x01,
+ 0x64, 0x01, 0x68, 0x01, 0x6c, 0x01, 0x70, 0x01, 0x74, 0x01, 0x78, 0x01, 0x7c, 0x01, 0x80, 0x01,
+ 0x84, 0x01, 0x88, 0x01, 0x8c, 0x01, 0x90, 0x01, 0x95, 0x01, 0x99, 0x01, 0x9d, 0x01, 0xa1, 0x01,
+ 0xa5, 0x01,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0xa5, 0x09, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x7f, 0x0a, // Extended Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+ 0xdd, 0x07, // Vendor Specific: Microsoft Corp.: WMM/WME: Information Element
+ 0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x78, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0x00, 0x00, // Status Code: Successful
+ 0x00, 0xc0, // Association ID: 0x0000
+ 0x00, 0x05, // SSID Parameter set
+ 0x53, 0x53, 0x49, 0x44, 0x31,
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter set: Current Channel: 10
+ 0x01,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbit/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0xb6, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter Set
+ 0x01,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0x6c,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbits/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc9, 0x30, // RNR IE
+ 0x04, 0x0c, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x73, 0x24, // Operating Class = 115 (5 GHz), Channel = 36
+ 0x00, 0x00, 0xA1, 0xB0, 0x01, 0x05, 0x01, 0x18, 0x3a, 0x94, 0x4f, 0x40, // 6E__1 on 5 GHz
+ 0x00, 0x0c, // TBTT: 0x00 => B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x83, 0x65, // Operating Class = 131, Channel = 101
+ 0x00, 0x00, 0xA1, 0xB0, 0x01, 0x06, 0x01, 0x18, 0x3a, 0x94, 0x4f, 0x40, // 6E__1 on 6 Ghz
+ 0x0c, 0x0c, // TBTT: 0x0c => B2:3=1(FilteredAP:Reserved),B4-B7=f(TBTT Information Count=3+1) :: 0x0c = TBTT Length
+ 0x83, 0x85, // Operating Class = 131, Channel = 133
+ 0x00, 0x00, 0xA1, 0xB0, 0x01, 0x06, 0x02, 0x18, 0x3a, 0x94, 0x4f, 0x40, // 6E__1 on 6 GHz
+
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0A, 0x00, 0x00, 0x00,
+
+};
+
+//
+// 6E__1: 1 * 5 GHz Bss's
+// 1 RNR IE with 3 entries: Band:Channel = [2.4:1 + 6:101 + 6:133]
+//
+WDI_MAC_ADDRESS s_Connect_Addr_18_6G_S1_5_Ghz = {0x00, 0xA1, 0xB0, 0x01, 0x05, 0x01};
+UCHAR s_TLV_BSS_Entry_18_6G_S1_5_Ghz [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xe9, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA1, 0xB0, 0x01, 0x05, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0xb6, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter Set
+ 0x24,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0x6c,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbits/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc9, 0x30, // RNR IE
+ 0x04, 0x0c, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x01, // Operating Class = 81 (2.4 GHz), Channel = 1
+ 0x00, 0x00, 0xA1, 0xB0, 0x01, 0x02, 0x01, 0x18, 0x3a, 0x94, 0x4f, 0x40, // 6E__1 on 2.4 GHz
+ 0x00, 0x0c, // TBTT: 0x00 => B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x83, 0x65, // Operating Class = 131, Channel = 101
+ 0x00, 0x00, 0xA1, 0xB0, 0x01, 0x06, 0x01, 0x18, 0x3a, 0x94, 0x4f, 0x40, // 6E__1 on 6 Ghz
+ 0x0c, 0x0c, // TBTT: 0x0c => B2:3=1(FilteredAP:Reserved),B4-B7=f(TBTT Information Count=3+1) :: 0x0c = TBTT Length
+ 0x83, 0x85, // Operating Class = 131, Channel = 133
+ 0x00, 0x00, 0xA1, 0xB0, 0x01, 0x06, 0x02, 0x18, 0x3a, 0x94, 0x4f, 0x40, // 6E__1 on 6 GHz
+
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x24, 0x00, 0x00, 0x00, // Channel / Freq = 36 / 5180 MHz
+ 0x02, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_18_6G_S1_5_Ghz[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x0B, 0x02,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA1, 0xB0, 0x01, 0x05, 0x01,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x02, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, // DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x8B, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0xfa, 0x00, // Listen Interval
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x21, 0x02, // Power Capability Min: 0, Max: 15
+ 0x00, 0x0f,
+ 0x24, 0x32, // Supported Channels
+ 0x24, 0x01, 0x28, 0x01, 0x2c, 0x01, 0x30, 0x01, 0x34, 0x01, 0x38, 0x01, 0x3c, 0x01, 0x40, 0x01,
+ 0x64, 0x01, 0x68, 0x01, 0x6c, 0x01, 0x70, 0x01, 0x74, 0x01, 0x78, 0x01, 0x7c, 0x01, 0x80, 0x01,
+ 0x84, 0x01, 0x88, 0x01, 0x8c, 0x01, 0x90, 0x01, 0x95, 0x01, 0x99, 0x01, 0x9d, 0x01, 0xa1, 0x01,
+ 0xa5, 0x01,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0xa5, 0x09, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x7f, 0x0a, // Extended Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+ 0xdd, 0x07, // Vendor Specific: Microsoft Corp.: WMM/WME: Information Element
+ 0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x78, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0x00, 0x00, // Status Code: Successful
+ 0x00, 0xc0, // Association ID: 0x0000
+ 0x00, 0x05, // SSID Parameter set
+ 0x53, 0x53, 0x49, 0x44, 0x31,
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter set: Current Channel: 10
+ 0x24,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbit/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0xb6, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter Set
+ 0x24,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0x6c,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbits/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc9, 0x30, // RNR IE
+ 0x04, 0x0c, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x01, // Operating Class = 81 (2.4 GHz), Channel = 1
+ 0x00, 0x00, 0xA1, 0xB0, 0x01, 0x02, 0x01, 0x18, 0x3a, 0x94, 0x4f, 0x40, // 6E__1 on 2.4 GHz
+ 0x00, 0x0c, // TBTT: 0x00 => B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x83, 0x65, // Operating Class = 131, Channel = 101
+ 0x00, 0x00, 0xA1, 0xB0, 0x01, 0x06, 0x01, 0x18, 0x3a, 0x94, 0x4f, 0x40, // 6E__1 on 6 Ghz
+ 0x0c, 0x0c, // TBTT: 0x0c => B2:3=1(FilteredAP:Reserved),B4-B7=f(TBTT Information Count=3+1) :: 0x0c = TBTT Length
+ 0x83, 0x85, // Operating Class = 131, Channel = 133
+ 0x00, 0x00, 0xA1, 0xB0, 0x01, 0x06, 0x02, 0x18, 0x3a, 0x94, 0x4f, 0x40, // 6E__1 on 6 GHz
+
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0A, 0x00, 0x00, 0x00,
+
+};
+
+//
+// 6E__1: 1/2 * 6 GHz Bss's
+//
+WDI_MAC_ADDRESS s_Connect_Addr_19_6G_S1a_6_Ghz = {0x00, 0xA1, 0xB0, 0x01, 0x06, 0x01};
+UCHAR s_TLV_BSS_Entry_19_6G_S1a_6_Ghz [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xC6, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA1, 0xB0, 0x01, 0x06, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x93, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0xa4,
+ 0x0b, 0x05,
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0xbd, 0x02,
+ 0xff, 0x27, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0xf7, 0x70, 0x99, 0x16, 0x64, 0x00, 0x0e, 0x30, 0x0c, 0xb6, 0x02, 0x1b, 0xb4, 0x0c, 0xcf, 0x30,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x7b, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0xff, 0x0c, // Ext Tag: HE Operation (802.11ax/D3.0)
+ 0x24,
+ 0xf4, 0x3f, 0x02, 0x00, 0xf0, 0xff, 0x05, 0x03, 0x07, 0x0f, 0x00,
+ 0xff, 0x0e, // Ext Tag: MU EDCA Parameter Set
+ 0x26,
+ 0xc0, 0x07, 0xa4, 0x01, 0x23, 0xa4, 0x01, 0x42, 0x43, 0x01, 0x62, 0x32, 0x01,
+
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x65, 0x00, 0x00, 0x00, // Channel / Freq = 101 / 6445 MHz
+ 0x05, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_19_6G_S1a_6_Ghz[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xfD, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA1, 0xB0, 0x01, 0x06, 0x01,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x05, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, // DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x8E, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0xfa, 0x00, // Listen Interval
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x21, 0x02, // Power Capability Min: 0, Max: 15
+ 0x00, 0x0f,
+ 0x24, 0x32, // Supported Channels
+ 0x24, 0x01, 0x28, 0x01, 0x2c, 0x01, 0x30, 0x01, 0x34, 0x01, 0x38, 0x01, 0x3c, 0x01, 0x40, 0x01,
+ 0x64, 0x01, 0x68, 0x01, 0x6c, 0x01, 0x70, 0x01, 0x74, 0x01, 0x78, 0x01, 0x7c, 0x01, 0x80, 0x01,
+ 0x84, 0x01, 0x88, 0x01, 0x8c, 0x01, 0x90, 0x01, 0x95, 0x01, 0x99, 0x01, 0x9d, 0x01, 0xa1, 0x01,
+ 0xa5, 0x01,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x7f, 0x0a, // Extended Capabilities
+ 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xdd, 0x07, // Vendor Specific: Microsoft Corp.: WMM/WME: Information Element
+ 0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00,
+ 0xff, 0x1e, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0x01, 0x78, 0x20, 0x0a, 0xc0, 0x8b, 0x0e, 0x30, 0x02, 0x00, 0xfd, 0x09, 0x8c, 0x0e, 0xcf, 0xf2,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x61, 0x1c, 0xc7, 0x71,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0x7d, 0x02,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x8A, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0x00, 0x00, // Status Code: Successful
+ 0x00, 0xc0, // Association ID: 0x0000
+ 0x00, 0x05, // SSID Parameter set
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x03, 0x01, // DS Parameter set: Current Channel: 10
+ 0x65,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0xbd, 0x02,
+ 0xff, 0x27, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0xf7, 0x70, 0x99, 0x16, 0x64, 0x00, 0x0e, 0x30, 0x0c, 0xb6, 0x02, 0x1b, 0xb4, 0x0c, 0xcf, 0x30,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x7b, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0xff, 0x0c, // Ext Tag: HE Operation (802.11ax/D3.0)
+ 0x24,
+ 0xf4, 0x3f, 0x02, 0x00, 0xf0, 0xff, 0x05, 0x03, 0x07, 0x0f, 0x00,
+ 0xff, 0x0e, // Ext Tag: MU EDCA Parameter Set
+ 0x26,
+ 0xc0, 0x07, 0xa4, 0x01, 0x23, 0xa4, 0x01, 0x42, 0x43, 0x01, 0x62, 0x32, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x93, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0xa4,
+ 0x0b, 0x05,
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x65,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0xbd, 0x02,
+ 0xff, 0x27, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0xf7, 0x70, 0x99, 0x16, 0x64, 0x00, 0x0e, 0x30, 0x0c, 0xb6, 0x02, 0x1b, 0xb4, 0x0c, 0xcf, 0x30,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x7b, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0xff, 0x0c, // Ext Tag: HE Operation (802.11ax/D3.0)
+ 0x24,
+ 0xf4, 0x3f, 0x02, 0x00, 0xf0, 0xff, 0x05, 0x03, 0x07, 0x0f, 0x00,
+ 0xff, 0x0e, // Ext Tag: MU EDCA Parameter Set
+ 0x26,
+ 0xc0, 0x07, 0xa4, 0x01, 0x23, 0xa4, 0x01, 0x42, 0x43, 0x01, 0x62, 0x32, 0x01,
+
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0A, 0x00, 0x00, 0x00,
+
+};
+
+//
+// 6E__1: 2/2 * 6 GHz Bss's
+//
+WDI_MAC_ADDRESS s_Connect_Addr_20_6G_S1b_6_Ghz = {0x00, 0xA1, 0xB0, 0x01, 0x06, 0x02};
+UCHAR s_TLV_BSS_Entry_20_6G_S1b_6_Ghz [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xC6, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA1, 0xB0, 0x01, 0x06, 0x02,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x93, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0xa4,
+ 0x0b, 0x05,
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0xbd, 0x02,
+ 0xff, 0x27, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0xf7, 0x70, 0x99, 0x16, 0x64, 0x00, 0x0e, 0x30, 0x0c, 0xb6, 0x02, 0x1b, 0xb4, 0x0c, 0xcf, 0x30,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x7b, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0xff, 0x0c, // Ext Tag: HE Operation (802.11ax/D3.0)
+ 0x24,
+ 0xf4, 0x3f, 0x02, 0x00, 0xf0, 0xff, 0x05, 0x03, 0x07, 0x0f, 0x00,
+ 0xff, 0x0e, // Ext Tag: MU EDCA Parameter Set
+ 0x26,
+ 0xc0, 0x07, 0xa4, 0x01, 0x23, 0xa4, 0x01, 0x42, 0x43, 0x01, 0x62, 0x32, 0x01,
+
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x85, 0x00, 0x00, 0x00, // Channel / Freq = 133 / 6605 MHz
+ 0x05, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_20_6G_S1b_6_Ghz[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xFD, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA1, 0xB0, 0x01, 0x06, 0x02,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x05, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, // DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x8E, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0xfa, 0x00, // Listen Interval
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x21, 0x02, // Power Capability Min: 0, Max: 15
+ 0x00, 0x0f,
+ 0x24, 0x32, // Supported Channels
+ 0x24, 0x01, 0x28, 0x01, 0x2c, 0x01, 0x30, 0x01, 0x34, 0x01, 0x38, 0x01, 0x3c, 0x01, 0x40, 0x01,
+ 0x64, 0x01, 0x68, 0x01, 0x6c, 0x01, 0x70, 0x01, 0x74, 0x01, 0x78, 0x01, 0x7c, 0x01, 0x80, 0x01,
+ 0x84, 0x01, 0x88, 0x01, 0x8c, 0x01, 0x90, 0x01, 0x95, 0x01, 0x99, 0x01, 0x9d, 0x01, 0xa1, 0x01,
+ 0xa5, 0x01,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x7f, 0x0a, // Extended Capabilities
+ 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xdd, 0x07, // Vendor Specific: Microsoft Corp.: WMM/WME: Information Element
+ 0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00,
+ 0xff, 0x1e, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0x01, 0x78, 0x20, 0x0a, 0xc0, 0x8b, 0x0e, 0x30, 0x02, 0x00, 0xfd, 0x09, 0x8c, 0x0e, 0xcf, 0xf2,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x61, 0x1c, 0xc7, 0x71,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0x7d, 0x02,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x8A, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0x00, 0x00, // Status Code: Successful
+ 0x00, 0xc0, // Association ID: 0x0000
+ 0x00, 0x05, // SSID Parameter set
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x03, 0x01, // DS Parameter set: Current Channel: 10
+ 0x85,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0xbd, 0x02,
+ 0xff, 0x27, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0xf7, 0x70, 0x99, 0x16, 0x64, 0x00, 0x0e, 0x30, 0x0c, 0xb6, 0x02, 0x1b, 0xb4, 0x0c, 0xcf, 0x30,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x7b, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0xff, 0x0c, // Ext Tag: HE Operation (802.11ax/D3.0)
+ 0x24,
+ 0xf4, 0x3f, 0x02, 0x00, 0xf0, 0xff, 0x05, 0x03, 0x07, 0x0f, 0x00,
+ 0xff, 0x0e, // Ext Tag: MU EDCA Parameter Set
+ 0x26,
+ 0xc0, 0x07, 0xa4, 0x01, 0x23, 0xa4, 0x01, 0x42, 0x43, 0x01, 0x62, 0x32, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x93, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '1',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0xa4,
+ 0x0b, 0x05,
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0xbd, 0x02,
+ 0xff, 0x27, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0xf7, 0x70, 0x99, 0x16, 0x64, 0x00, 0x0e, 0x30, 0x0c, 0xb6, 0x02, 0x1b, 0xb4, 0x0c, 0xcf, 0x30,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x7b, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0xff, 0x0c, // Ext Tag: HE Operation (802.11ax/D3.0)
+ 0x24,
+ 0xf4, 0x3f, 0x02, 0x00, 0xf0, 0xff, 0x05, 0x03, 0x07, 0x0f, 0x00,
+ 0xff, 0x0e, // Ext Tag: MU EDCA Parameter Set
+ 0x26,
+ 0xc0, 0x07, 0xa4, 0x01, 0x23, 0xa4, 0x01, 0x42, 0x43, 0x01, 0x62, 0x32, 0x01,
+
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0A, 0x00, 0x00, 0x00,
+
+};
+
+//===============================================================================
+// SIX_G: 6E__2:
+// (1 * 2.4 GHz) + (1 * 5 GHz) + (1 * 6 GHz)
+// 2.4 GHz:
+// S2_24_1: S2_5_1 (In+Out) + [S2_6_2 (Out)]
+// 5 GHz:
+// S2_5_1: S2_24_1 (In+Out) + S2_6_1 (Out) + [S2_6_2 (Out)]
+// 6 GHz:
+// S2_6_1: S2_5_1 (In)
+//===============================================================================
+
+//
+// 6E__2: 1 * 2.4 GHz Bss's
+// 2 RNR IEs with 1 entry each: Band:Channel = [5:44] + [6:101]
+//
+WDI_MAC_ADDRESS s_Connect_Addr_21_6G_S2_2_4_Ghz = {0x00, 0xA1, 0xB0, 0x02, 0x24, 0x01};
+UCHAR s_TLV_BSS_Entry_21_6G_S2_2_4_Ghz [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xD3, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA1, 0xB0, 0x02, 0x02, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0xA0, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '2',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter Set
+ 0x06,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0x6c,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbits/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+
+ 0xc9, 0x0c, // RNR IE
+ 0x04, 0x08, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x08 = TBTT Length
+ 0x73, 0x2e, // Operating Class = 115 (5 GHz), Channel = 44
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x05, 0x01, 0x40, // 6E__2 on 5 GHz
+ 0xc9, 0x0c, // RNR IE
+ 0x00, 0x08, // TBTT: 0x00 => B4-B7=0(TBTT Information Count=0+1) :: 0x08 = TBTT Length
+ 0x83, 0x65, // Operating Class = 131, Channel = 101
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x06, 0x02, 0x42, // 6E__2 on 6 Ghz (Sabe Ssid)
+
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x06, 0x00, 0x00, 0x00, // Channel / Freq = 2437 MHz
+ 0x01, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_21_6G_S2_2_4_Ghz[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xF5, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA1, 0xB0, 0x02, 0x02, 0x01,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, // DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x8B, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0xfa, 0x00, // Listen Interval
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '2',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x21, 0x02, // Power Capability Min: 0, Max: 15
+ 0x00, 0x0f,
+ 0x24, 0x32, // Supported Channels
+ 0x24, 0x01, 0x28, 0x01, 0x2c, 0x01, 0x30, 0x01, 0x34, 0x01, 0x38, 0x01, 0x3c, 0x01, 0x40, 0x01,
+ 0x64, 0x01, 0x68, 0x01, 0x6c, 0x01, 0x70, 0x01, 0x74, 0x01, 0x78, 0x01, 0x7c, 0x01, 0x80, 0x01,
+ 0x84, 0x01, 0x88, 0x01, 0x8c, 0x01, 0x90, 0x01, 0x95, 0x01, 0x99, 0x01, 0x9d, 0x01, 0xa1, 0x01,
+ 0xa5, 0x01,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0xa5, 0x09, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x7f, 0x0a, // Extended Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+ 0xdd, 0x07, // Vendor Specific: Microsoft Corp.: WMM/WME: Information Element
+ 0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x78, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0x00, 0x00, // Status Code: Successful
+ 0x00, 0xc0, // Association ID: 0x0000
+ 0x00, 0x05, // SSID Parameter set
+ 0x53, 0x53, 0x49, 0x44, 0x31,
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter set: Current Channel: 10
+ 0x06,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbit/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0xa0, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '2',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter Set
+ 0x06,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0x6c,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbits/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+
+ 0xc9, 0x0c, // RNR IE
+ 0x04, 0x08, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x08 = TBTT Length
+ 0x73, 0x2e, // Operating Class = 115 (5 GHz), Channel = 44
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x05, 0x01, 0x40, // 6E__2 on 5 GHz
+ 0xc9, 0x0c, // RNR IE
+ 0x00, 0x08, // TBTT: 0x00 => B4-B7=0(TBTT Information Count=0+1) :: 0x08 = TBTT Length
+ 0x83, 0x65, // Operating Class = 131, Channel = 101
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x06, 0x02, 0x42, // 6E__2 on 6 Ghz (Sabe Ssid)
+
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0A, 0x00, 0x00, 0x00,
+
+};
+
+//
+// 6E__2: 1 * 5 GHz Bss's
+// 3 RNR IEs with 1 entry each: Band:Channel = [2.4:6] + [6:101] + [6:133]
+//
+WDI_MAC_ADDRESS s_Connect_Addr_22_6G_S2_5_Ghz = {0x00, 0xA1, 0xB0, 0x02, 0x05, 0x01};
+UCHAR s_TLV_BSS_Entry_22_6G_S2_5_Ghz [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xed, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA1, 0xB0, 0x02, 0x05, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0xba, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '2',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter Set
+ 0x2c,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0x6c,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbits/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+
+ 0xc9, 0x10, // RNR IE
+ 0x04, 0x0c, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x02, 0x01, 0xa2, 0x6b, 0x9d, 0xd6, 0x40, // 6E__2 on 2.4 GHz
+ 0xc9, 0x10, // RNR IE
+ 0x00, 0x0c, // TBTT: 0x00 => B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x83, 0x65, // Operating Class = 131, (6 GHz) Channel = 101
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x06, 0x01, 0xa2, 0x6b, 0x9d, 0xd6, 0x42, // 6E__2 on 6 Ghz
+ 0xc9, 0x10, // RNR IE
+ 0x0c, 0x0c, // TBTT: 0x0c => B2:3=1(FilteredAP:Reserved),B4-B7=f(TBTT Information Count=3+1) :: 0x0c = TBTT Length
+ 0x83, 0x85, // Operating Class = 131, (6 GHz) Channel = 133
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x06, 0x02, 0xa2, 0x6b, 0x9d, 0xd6, 0x00, // 6E__2 on 6 GHz
+
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x2c, 0x00, 0x00, 0x00, // Channel / Freq = 44 / 5220 MHz
+ 0x02, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_22_6G_S2_5_Ghz[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x0F, 0x02,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA1, 0xB0, 0x02, 0x05, 0x01,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x02, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, // DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x8B, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0xfa, 0x00, // Listen Interval
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '2',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x21, 0x02, // Power Capability Min: 0, Max: 15
+ 0x00, 0x0f,
+ 0x24, 0x32, // Supported Channels
+ 0x24, 0x01, 0x28, 0x01, 0x2c, 0x01, 0x30, 0x01, 0x34, 0x01, 0x38, 0x01, 0x3c, 0x01, 0x40, 0x01,
+ 0x64, 0x01, 0x68, 0x01, 0x6c, 0x01, 0x70, 0x01, 0x74, 0x01, 0x78, 0x01, 0x7c, 0x01, 0x80, 0x01,
+ 0x84, 0x01, 0x88, 0x01, 0x8c, 0x01, 0x90, 0x01, 0x95, 0x01, 0x99, 0x01, 0x9d, 0x01, 0xa1, 0x01,
+ 0xa5, 0x01,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0xa5, 0x09, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x7f, 0x0a, // Extended Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+ 0xdd, 0x07, // Vendor Specific: Microsoft Corp.: WMM/WME: Information Element
+ 0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x78, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0x00, 0x00, // Status Code: Successful
+ 0x00, 0xc0, // Association ID: 0x0000
+ 0x00, 0x05, // SSID Parameter set
+ 0x53, 0x53, 0x49, 0x44, 0x31,
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter set: Current Channel: 10
+ 0x2c,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbit/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0xba, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '2',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter Set
+ 0x2c,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0x6c,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbits/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc9, 0x10, // RNR IE
+ 0x04, 0x0c, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x02, 0x01, 0xa2, 0x6b, 0x9d, 0xd6, 0x40, // 6E__2 on 2.4 GHz
+ 0xc9, 0x10, // RNR IE
+ 0x00, 0x0c, // TBTT: 0x00 => B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x83, 0x65, // Operating Class = 131, (6 GHz) Channel = 101
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x06, 0x01, 0xa2, 0x6b, 0x9d, 0xd6, 0x42, // 6E__2 on 6 Ghz
+ 0xc9, 0x10, // RNR IE
+ 0x0c, 0x0c, // TBTT: 0x0c => B2:3=1(FilteredAP:Reserved),B4-B7=f(TBTT Information Count=3+1) :: 0x0c = TBTT Length
+ 0x83, 0x85, // Operating Class = 131, (6 GHz) Channel = 133
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x06, 0x02, 0xa2, 0x6b, 0x9d, 0xd6, 0x00, // 6E__2 on 6 GHz
+
+
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0A, 0x00, 0x00, 0x00,
+
+};
+
+//
+// 6E__2: 1 * 6 GHz Bss's
+//
+WDI_MAC_ADDRESS s_Connect_Addr_23_6G_S2_6_Ghz = {0x00, 0xA1, 0xB0, 0x02, 0x06, 0x01};
+UCHAR s_TLV_BSS_Entry_23_6G_S2_6_Ghz [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xC6, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA1, 0xB0, 0x02, 0x06, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x93, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '2',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0xa4,
+ 0x0b, 0x05,
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0xbd, 0x02,
+ 0xff, 0x27, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0xf7, 0x70, 0x99, 0x16, 0x64, 0x00, 0x0e, 0x30, 0x0c, 0xb6, 0x02, 0x1b, 0xb4, 0x0c, 0xcf, 0x30,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x7b, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0xff, 0x0c, // Ext Tag: HE Operation (802.11ax/D3.0)
+ 0x24,
+ 0xf4, 0x3f, 0x02, 0x00, 0xf0, 0xff, 0x05, 0x03, 0x07, 0x0f, 0x00,
+ 0xff, 0x0e, // Ext Tag: MU EDCA Parameter Set
+ 0x26,
+ 0xc0, 0x07, 0xa4, 0x01, 0x23, 0xa4, 0x01, 0x42, 0x43, 0x01, 0x62, 0x32, 0x01,
+
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x79, 0x00, 0x00, 0x00, // Channel / Freq = 121 / 6545 MHz
+ 0x05, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_23_6G_S2_6_Ghz[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xFD, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA1, 0xB0, 0x02, 0x06, 0x01,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x05, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, // DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x8E, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0xfa, 0x00, // Listen Interval
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '2',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x21, 0x02, // Power Capability Min: 0, Max: 15
+ 0x00, 0x0f,
+ 0x24, 0x32, // Supported Channels
+ 0x24, 0x01, 0x28, 0x01, 0x2c, 0x01, 0x30, 0x01, 0x34, 0x01, 0x38, 0x01, 0x3c, 0x01, 0x40, 0x01,
+ 0x64, 0x01, 0x68, 0x01, 0x6c, 0x01, 0x70, 0x01, 0x74, 0x01, 0x78, 0x01, 0x7c, 0x01, 0x80, 0x01,
+ 0x84, 0x01, 0x88, 0x01, 0x8c, 0x01, 0x90, 0x01, 0x95, 0x01, 0x99, 0x01, 0x9d, 0x01, 0xa1, 0x01,
+ 0xa5, 0x01,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x7f, 0x0a, // Extended Capabilities
+ 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xdd, 0x07, // Vendor Specific: Microsoft Corp.: WMM/WME: Information Element
+ 0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00,
+ 0xff, 0x1e, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0x01, 0x78, 0x20, 0x0a, 0xc0, 0x8b, 0x0e, 0x30, 0x02, 0x00, 0xfd, 0x09, 0x8c, 0x0e, 0xcf, 0xf2,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x61, 0x1c, 0xc7, 0x71,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0x7d, 0x02,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x8A, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0x00, 0x00, // Status Code: Successful
+ 0x00, 0xc0, // Association ID: 0x0000
+ 0x00, 0x05, // SSID Parameter set
+ '6', 'E', '_', '_', '2',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x03, 0x01, // DS Parameter set: Current Channel: 10
+ 0x79,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0xbd, 0x02,
+ 0xff, 0x27, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0xf7, 0x70, 0x99, 0x16, 0x64, 0x00, 0x0e, 0x30, 0x0c, 0xb6, 0x02, 0x1b, 0xb4, 0x0c, 0xcf, 0x30,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x7b, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0xff, 0x0c, // Ext Tag: HE Operation (802.11ax/D3.0)
+ 0x24,
+ 0xf4, 0x3f, 0x02, 0x00, 0xf0, 0xff, 0x05, 0x03, 0x07, 0x0f, 0x00,
+ 0xff, 0x0e, // Ext Tag: MU EDCA Parameter Set
+ 0x26,
+ 0xc0, 0x07, 0xa4, 0x01, 0x23, 0xa4, 0x01, 0x42, 0x43, 0x01, 0x62, 0x32, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x93, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '2',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0xa4,
+ 0x0b, 0x05,
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0xbd, 0x02,
+ 0xff, 0x27, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0xf7, 0x70, 0x99, 0x16, 0x64, 0x00, 0x0e, 0x30, 0x0c, 0xb6, 0x02, 0x1b, 0xb4, 0x0c, 0xcf, 0x30,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x7b, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0xff, 0x0c, // Ext Tag: HE Operation (802.11ax/D3.0)
+ 0x24,
+ 0xf4, 0x3f, 0x02, 0x00, 0xf0, 0xff, 0x05, 0x03, 0x07, 0x0f, 0x00,
+ 0xff, 0x0e, // Ext Tag: MU EDCA Parameter Set
+ 0x26,
+ 0xc0, 0x07, 0xa4, 0x01, 0x23, 0xa4, 0x01, 0x42, 0x43, 0x01, 0x62, 0x32, 0x01,
+
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0A, 0x00, 0x00, 0x00,
+
+};
+
+//===============================================================================
+// SIX_G: SSID3:
+// (1 * 2.4 GHz)
+// 2.4 GHz:
+// S3_24_1: *S2_5_1 (Out)*
+//===============================================================================
+
+//
+// SSID3: 1 * 2.4 GHz Bss's
+// 2 RNR IEs with 1 entry each Band:Channel = [5:44 + 6:133]
+//
+WDI_MAC_ADDRESS s_Connect_Addr_24_6G_S3_2_4_Ghz = {0x00, 0xA1, 0xB0, 0x03, 0x02, 0x01};
+UCHAR s_TLV_BSS_Entry_24_6G_S3_2_4_Ghz [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xDB, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA1, 0xB0, 0x03, 0x02, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0xa8, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '3',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter Set
+ 0x0a,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0x6c,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbits/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+
+ 0xc9, 0x10, // RNR IE
+ 0x00, 0x0c, // TBTT: 0x00,B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x73, 0x2e, // Operating Class = 115 (5 GHz), Channel = 44
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x05, 0x01, 0xa2, 0x6b, 0x9d, 0xd6, 0x40, // 6E__2 on 5 GHz
+ 0xc9, 0x10, // RNR IE
+ 0x00, 0x0c, // TBTT: 0x00,B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x83, 0x85, // Operating Class = 131 (6 GHz), Channel = 133
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x06, 0x02, 0xa2, 0x6b, 0x9d, 0xd6, 0x40, // 6E__2 on 6 GHz
+
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x0B, 0x00, 0x00, 0x00, // Channel / Freq = 2457 MHz
+ 0x01, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_24_6G_S3_2_4_Ghz[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xFD, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA1, 0xB0, 0x03, 0x02, 0x01,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, // DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x8B, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0xfa, 0x00, // Listen Interval
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '3',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x21, 0x02, // Power Capability Min: 0, Max: 15
+ 0x00, 0x0f,
+ 0x24, 0x32, // Supported Channels
+ 0x24, 0x01, 0x28, 0x01, 0x2c, 0x01, 0x30, 0x01, 0x34, 0x01, 0x38, 0x01, 0x3c, 0x01, 0x40, 0x01,
+ 0x64, 0x01, 0x68, 0x01, 0x6c, 0x01, 0x70, 0x01, 0x74, 0x01, 0x78, 0x01, 0x7c, 0x01, 0x80, 0x01,
+ 0x84, 0x01, 0x88, 0x01, 0x8c, 0x01, 0x90, 0x01, 0x95, 0x01, 0x99, 0x01, 0x9d, 0x01, 0xa1, 0x01,
+ 0xa5, 0x01,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0xa5, 0x09, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x7f, 0x0a, // Extended Capabilities
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
+ 0xdd, 0x07, // Vendor Specific: Microsoft Corp.: WMM/WME: Information Element
+ 0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x78, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0x00, 0x00, // Status Code: Successful
+ 0x00, 0xc0, // Association ID: 0x0000
+ 0x00, 0x05, // SSID Parameter set
+ 0x53, 0x53, 0x49, 0x44, 0x31,
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter set: Current Channel: 10
+ 0x0a,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbit/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0xa8, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '3',
+ 0x01, 0x08, // Supported Rates
+ 0x82, 0x84, 0x0b, 0x16, 0x8c, 0x12, 0x98, 0xa4,
+ 0x03, 0x01, // DS Parameter Set
+ 0x0a,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0x6c,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0x2d, 0x1a, // HT Capabilities (802.11n D1.10)
+ 0x76, 0x08, 0x17, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x32, 0x04, // Extended Supported Rates 24, 36, 48, 54 [Mbits/sec]
+ 0x30, 0x48, 0x60, 0x6c,
+ 0x3d, 0x16, // HT Information (802.11n D1.10)
+ 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+
+ 0xc9, 0x10, // RNR IE
+ 0x00, 0x0c, // TBTT: 0x00,B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x73, 0x2e, // Operating Class = 115 (5 GHz), Channel = 44
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x05, 0x01, 0xa2, 0x6b, 0x9d, 0xd6, 0x40, // 6E__2 on 5 GHz
+ 0xc9, 0x10, // RNR IE
+ 0x00, 0x0c, // TBTT: 0x00,B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x83, 0x85, // Operating Class = 131 (6 GHz), Channel = 133
+ 0x00, 0x00, 0xA1, 0xB0, 0x02, 0x06, 0x02, 0xa2, 0x6b, 0x9d, 0xd6, 0x40, // 6E__2 on 6 GHz
+
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0A, 0x00, 0x00, 0x00,
+
+};
+
+
+//===============================================================================
+// SIX_G: SSID4 (non-colocated AP):
+// (1 * 6 GHz)
+// 6 GHz:
+// S4_6_1:
+//===============================================================================
+
+//
+// SSID4: 1 * 6 GHz Bss's
+//
+WDI_MAC_ADDRESS s_Connect_Addr_25_6G_S4_6_Ghz = {0x00, 0xA1, 0xB0, 0x04, 0x06, 0x01};
+UCHAR s_TLV_BSS_Entry_25_6G_S4_6_Ghz [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xC6, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA1, 0xB0, 0x04, 0x06, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x93, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '4',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0xa4,
+ 0x0b, 0x05,
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0xbd, 0x02,
+ 0xff, 0x27, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0xf7, 0x70, 0x99, 0x16, 0x64, 0x00, 0x0e, 0x30, 0x0c, 0xb6, 0x02, 0x1b, 0xb4, 0x0c, 0xcf, 0x30,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x7b, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0xff, 0x0c, // Ext Tag: HE Operation (802.11ax/D3.0)
+ 0x24,
+ 0xf4, 0x3f, 0x02, 0x00, 0xf0, 0xff, 0x05, 0x03, 0x07, 0x0f, 0x00,
+ 0xff, 0x0e, // Ext Tag: MU EDCA Parameter Set
+ 0x26,
+ 0xc0, 0x07, 0xa4, 0x01, 0x23, 0xa4, 0x01, 0x42, 0x43, 0x01, 0x62, 0x32, 0x01,
+
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0xe5, 0x00, 0x00, 0x00, // Channel / Freq = 229 / 7085 MHz
+ 0x05, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_25_6G_S4_6_Ghz[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xFD, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA1, 0xB0, 0x04, 0x06, 0x01,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x07, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x04, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x05, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, // DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x8E, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0xfa, 0x00, // Listen Interval
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '4',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x21, 0x02, // Power Capability Min: 0, Max: 15
+ 0x00, 0x0f,
+ 0x24, 0x32, // Supported Channels
+ 0x24, 0x01, 0x28, 0x01, 0x2c, 0x01, 0x30, 0x01, 0x34, 0x01, 0x38, 0x01, 0x3c, 0x01, 0x40, 0x01,
+ 0x64, 0x01, 0x68, 0x01, 0x6c, 0x01, 0x70, 0x01, 0x74, 0x01, 0x78, 0x01, 0x7c, 0x01, 0x80, 0x01,
+ 0x84, 0x01, 0x88, 0x01, 0x8c, 0x01, 0x90, 0x01, 0x95, 0x01, 0x99, 0x01, 0x9d, 0x01, 0xa1, 0x01,
+ 0xa5, 0x01,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x72, 0x00, 0x00, 0x00, 0x00,
+ 0x7f, 0x0a, // Extended Capabilities
+ 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xdd, 0x07, // Vendor Specific: Microsoft Corp.: WMM/WME: Information Element
+ 0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00,
+ 0xff, 0x1e, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0x01, 0x78, 0x20, 0x0a, 0xc0, 0x8b, 0x0e, 0x30, 0x02, 0x00, 0xfd, 0x09, 0x8c, 0x0e, 0xcf, 0xf2,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x61, 0x1c, 0xc7, 0x71,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0x7d, 0x02,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x8A, 0x00,
+
+ 0x01, 0x11, // Capabilities
+ 0x00, 0x00, // Status Code: Successful
+ 0x00, 0xc0, // Association ID: 0x0000
+ 0x00, 0x05, // SSID Parameter set
+ '6', 'E', '_', '_', '2',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x03, 0x01, // DS Parameter set: Current Channel: 10
+ 0xe5,
+ 0x0b, 0x05, // QBSS Load Element 802.11e CCA Version
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0xbd, 0x02,
+ 0xff, 0x27, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0xf7, 0x70, 0x99, 0x16, 0x64, 0x00, 0x0e, 0x30, 0x0c, 0xb6, 0x02, 0x1b, 0xb4, 0x0c, 0xcf, 0x30,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x7b, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0xff, 0x0c, // Ext Tag: HE Operation (802.11ax/D3.0)
+ 0x24,
+ 0xf4, 0x3f, 0x02, 0x00, 0xf0, 0xff, 0x05, 0x03, 0x07, 0x0f, 0x00,
+ 0xff, 0x0e, // Ext Tag: MU EDCA Parameter Set
+ 0x26,
+ 0xc0, 0x07, 0xa4, 0x01, 0x23, 0xa4, 0x01, 0x42, 0x43, 0x01, 0x62, 0x32, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x93, 0x00,
+
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Inteval
+ 0x01, 0x00, // Capabilities
+ 0x00, 0x05, // SSID
+ '6', 'E', '_', '_', '4',
+ 0x01, 0x08, // Supported Rates
+ 0x8c, 0x12, 0x98, 0xa4, 0x30, 0x48, 0x60, 0x6c,
+ 0x05, 0x04, // TIM - DTIM 0 of 0
+ 0x00, 0x02, 0x00, 0xa4,
+ 0x0b, 0x05,
+ 0x00, 0x00, 0x00, 0x12, 0x7a,
+ 0x2a, 0x01, // ERP Information
+ 0x00,
+ 0xdd, 0x18, // Vendor Specific: Microsoft Corp.: WMM/WME: Parameter Element
+ 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xa4, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00,
+ 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00,
+ 0xff, 0x03, // Ext Tag: HE Extended Capabilities (802.11ax/D3.0)
+ 0x3b,
+ 0xbd, 0x02,
+ 0xff, 0x27, // Ext Tag: HE Capabilities (802.11ax/D3.0)
+ 0x23,
+ 0xf7, 0x70, 0x99, 0x16, 0x64, 0x00, 0x0e, 0x30, 0x0c, 0xb6, 0x02, 0x1b, 0xb4, 0x0c, 0xcf, 0x30,
+ 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x7b, 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0x1c, 0xc7, 0x71, 0x1c, 0xc7, 0x71,
+ 0xff, 0x0c, // Ext Tag: HE Operation (802.11ax/D3.0)
+ 0x24,
+ 0xf4, 0x3f, 0x02, 0x00, 0xf0, 0xff, 0x05, 0x03, 0x07, 0x0f, 0x00,
+ 0xff, 0x0e, // Ext Tag: MU EDCA Parameter Set
+ 0x26,
+ 0xc0, 0x07, 0xa4, 0x01, 0x23, 0xa4, 0x01, 0x42, 0x43, 0x01, 0x62, 0x32, 0x01,
+
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0A, 0x00, 0x00, 0x00,
+
+};
+
+//===============================================================================
+// WDI_OWE_RNR
+//===============================================================================
+
+
+/// WDI_OWE_RNR
+///
+/// Description
+/// - Non-Transition mode OWE network
+/// - Advertises Reduced Neighbor Reports (RNRs) for the OWE Transition Mode BSSes WDI_OWE_TM_OWE and WDI_OWE_TM_OPEN
+/// - Note: The OWE TM BSSes do not advertise RNR IEs
+/// - Definitions for these two Transition Mode networks follows this one
+///
+/// Intention
+/// - Test Non-Transition Mode OWE networks
+/// - Test discovery of OWE Transition Mode network via RNR prior to receiving beacon or probe
+/// - Since the networks are indicated in order during scans (i.e. the OWE TM networks will be indicated after this one)
+/// it is expected that RNR for the OWE TM networks will be received before their beacons and probes.
+///
+/// Expectation
+/// - Scan results display WDI_OWE_RNR as an Enhanced Open network to which connections are supported
+/// - The RNR will not effect connections to or display of OWE Transition Mode networks that it contains
+///
+/// Limitations
+/// - Connections to this network will fail because the driver does not OWE DH Handshake
+WDI_MAC_ADDRESS s_ConnectAddr_26_OWE_With_RNR = {00, 0xA0, 0xB0, 0xC0, 0xD1, 0xFF};
+UCHAR s_TLV_BSS_Entry_26_OWE_With_RNR [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xB6, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0xFF,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x83, 0x00,
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0B, // SSID
+ 'W', 'D', 'I', '_', 'O', 'W', 'E', '_', 'R', 'N', 'R',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01, 0x06, // DSS Parameters
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01, 0x00, // ERP
+ 0x2F, 0x01, 0x00, // Reserved
+ 0x30, 0x1a, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x12, // AKM Suite - OWE
+ 0xC0, 0x00, // RSN Capability - MFP Req + Capable
+ 0x00, 0x00,
+ 0x00, 0x0F, 0xAC, 0x06, // Group Cipher
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+
+ 0xc9, 0x10, // RNR IE
+ 0x00, 0x0c, // TBTT: 0x00,B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x0B, // Operating Class = 81 (2.4 GHz), Channel = B
+ 0x00, // TBTT Offset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x00, // MAC Address --> OWE Transition Mode OWE (Defined below)
+ 0xFD, 0x1F, 0x3F, 0x49, // Short SSID for WDI_OWE_TM_OWE
+ 0x00, // BssParameters
+
+ 0xc9, 0x10, // RNR IE
+ 0x00, 0x0c, // TBTT: 0x00,B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x0B, // Operating Class = 81 (2.4 GHz), Channel = B
+ 0x00, // TBTT Offset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x01, // MAC Address --> OWE Transition Mode Open (Defined below)
+ 0x21, 0x24, 0x6C, 0x85, // Short SSID for WDI_OWE_TM_OPEN
+ 0x00, // BssParameters
+
+ 0xDD, 0x09, 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x0B, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // BandId
+};
+
+// Test client hasn't implemented OWE DH handshake, so just indicate assoc failure
+UCHAR s_TLV_Failure_AssociationResult_26_OWE_With_RNR [] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x46, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA1, 0xB0, 0xC0, 0xD1, 0xFF,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Association Status: WDI_ASSOC_STATUS_FAILURE
+ 0x00, 0x00, 0x00, 0x00, // Status Code
+ 0x00, // ReAssociationRequest
+ 0x00, 0x00, 0x00, 0x00, // AuthAlgorithm
+ 0x00, 0x00, 0x00, 0x00, // UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, // MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, // MulticastMgmtCipherAlgorithm
+ 0x00, // FourAddressSupported
+ 0x00, // Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, // DSInfo
+ 0x00, 0x00, 0x00, 0x00, // AssociationComebackTime
+ 0x00, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, // DisableDataPathOffloadsScenario
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+};
+
+/// WDI_OWE_TM_OWE
+/// Description
+/// - OWE BSS of OWE Transition Mode network
+/// - Auth Type is OWE
+/// - Partner BSS is the OWE Transition Mode Open BSS "WDI_OWE_TM_OPEN"
+/// - Per the spec, this network is hidden and contains an OWE TM element listing information about the partner BSS
+/// - Listed in RNR of BSS WDI_OWE_RNR
+/// - RNR IEs are not avertised by this BSS
+///
+/// Intention
+/// - Test OWE Transition Mode
+/// - Test discovery of OWE Transition Mode network via RNR prior to receiving a beacon or probe
+/// - Since the networks are indicated in order during scans, the RNR for this network will be received before its beacon.
+///
+/// Expectation
+/// - The OWE spec requires the STA to display the SSID of the Open BSS to the user for interoperability. User initiated connections to the SSID of the Open BSS
+/// will initiate a connection to the OWE BSS and this is reflected in the security type in the UI. This allows STAs to view the same network SSID regardless of their
+/// support for OWE, while also allowing the most secure connection to be made.
+///
+/// - The UI will display:
+/// - SSID: "WDI_OWE_TM_OPEN" (The SSID of the Open BSS)
+/// - A hidden BSS may also be displayed, but only a single entry with an SSID is expected
+/// - Security Description: "Enhanced Open"
+/// - "Secured" or a lock icon should not be displayed
+/// - No password prompt on connect
+/// - "Connect" will initiate a connection to the OWE Transition Mode BSS Entry
+/// - In the entry containing the BSSID of the OWE TM OWE BSS, "netsh wlan show networks mode=bss" displays
+/// - SSID: "WDI_OWE_TM_OPEN"
+/// - Authentication: OWE
+/// - Encryption: CCMP
+/// - MFP Required: 1
+///
+/// Limitations
+/// - Connections to this network will fail because the driver does not OWE DH Handshake
+WDI_MAC_ADDRESS s_ConnectAddr_27_OWE_TM_OWE = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x00};
+UCHAR s_TLV_BSS_Entry_27_OWE_TM_OWE [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xA1, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x00,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x6e, 0x00,
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01, 0x06, // DSS Parameters
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01, 0x00, // ERP
+ 0x2F, 0x01, 0x00, // Reserved
+ 0x30, 0x1a, // RSN IE
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher
+ 0x01, 0x00, // AKM Suite count
+ 0x00, 0x0F, 0xAC, 0x12, // AKM Suite - OWE
+ 0xC0, 0x00, // RSN Capability - MFP Req + Capable
+ 0x00, 0x00,
+ 0x00, 0x0F, 0xAC, 0x06, // Group Cipher
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09, 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ 0xDD, 0x1A, // Vendor specific - OWE Transition Mode
+ 0x50, 0x6F, 0x9A, 0x1C, // WFA OUI + OWE TM OUI (0x1C)
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x01, // Partner BSS BSSID
+ 0x0F, // Partner BSS SSID Length
+ 'W', 'D', 'I', '_', 'O', 'W', 'E', '_', 'T', 'M', '_', 'O', 'P', 'E', 'N', // Partner BSS SSID
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x0B, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // BandId
+};
+
+// Test client hasn't implemented simulated OWE DH handshake, so just indicate assoc failure
+UCHAR s_TLV_Failure_AssociationResult_27_OWE_TM_OWE [] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x46, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA1, 0xB0, 0xC0, 0xD1, 0x00,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x00, 0x00, 0x00, //Association Status: WDI_ASSOC_STATUS_FAILURE
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x00, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x00, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, // DisableDataPathOffloadsScenario
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+};
+
+/// WDI_OWE_TM_OPEN
+/// Description
+/// - Open BSS of OWE Transition Mode network
+/// - Open network
+/// - Partner BSS is the OWE Transition Mode OWE BSS "WDI_OWE_TM_OWE"
+/// - Per the spec, this network is hidden and contains an OWE TM element listing information about the partner BSS
+/// - Listed in RNR of BSS WDI_OWE_RNR
+/// - RNR IEs are not avertised by this BSS
+///
+/// Intention
+/// - Test OWE Transition Mode
+/// - Test discovery of OWE Transition Mode network via RNR prior to receiving a beacon or probe
+/// - Since the networks are indicated in order during scans, the RNR for this network will be received before its beacon.
+///
+/// Expectation
+/// - The OWE spec requires the STA to display the SSID of the Open BSS to the user for interoperability. User initiated connections to the SSID of the Open BSS
+/// will initiate a connection to the OWE BSS and this is reflected in the security type in the UI. This allows STAs to view the same network SSID regardless of their
+/// support for OWE, while also allowing the most secure connection to be made.
+///
+/// - The UI will display:
+/// - SSID: "WDI_OWE_TM_OPEN" (The SSID of the Open BSS)
+/// - A hidden BSS may also be displayed, but only a single entry with an SSID is expected
+/// - Security Description: "Enhanced Open"
+/// - "Secured" or a lock icon should not be displayed
+/// - No password prompt on connect
+/// - "Connect" will initiate a connection to the OWE Transition Mode BSS Entry
+/// - In the entry containing the BSSID of this BSS, "netsh wlan show networks mode=bss" displays
+/// - SSID: (Hidden)
+/// - Authentication: Open
+/// - Encryption: None
+///
+/// Limitations
+/// - Connections to this network will fail because the driver does not OWE DH Handshake
+WDI_MAC_ADDRESS s_ConnectAddr_28_OWE_TM_Open = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x01};
+UCHAR s_TLV_BSS_Entry_28_OWE_TM_Open_Beacon [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x95, 0x00, // Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x01,
+
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x62, 0x00, // Length
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x0F, // SSID
+ 'W', 'D', 'I', '_', 'O', 'W', 'E', '_', 'T', 'M', '_', 'O', 'P', 'E', 'N',
+ 0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01, 0x06, // DSS Parameters
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01, 0x00, // ERP
+ 0x2F, 0x01, 0x00, // Reserved
+ 0x32, 0x04, 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09, 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ 0xDD, 0x19, // Vendor specific - OWE Transition Mode
+ 0x50, 0x6F, 0x9A, 0x1C, // WFA OUI + OWE TM OUI (0x1C)
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x00, // Partner BSS BSSID
+ 0x0E, // Partner BSS SSID Length
+ 'W', 'D', 'I', '_', 'O', 'W', 'E', '_', 'T', 'M', '_', 'O', 'W', 'E', // Partner BSS SSID
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x0B, 0x00, 0x00, 0x00, // Channel
+ 0x01, 0x00, 0x00, 0x00 // BandId
+};
+
+// Test client hasn't implemented OWE DH handshake, so just indicate assoc failure
+UCHAR s_TLV_Failure_AssociationResult_28_OWE_TM_Open [] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0x46, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x01,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x00, 0x00, 0x00, //Association Status: WDI_ASSOC_STATUS_FAILURE
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x00, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x00, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, // DisableDataPathOffloadsScenario
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+};
+
+//===============================================================================
+//
+// Wi-Fi 7
+//
+//===============================================================================
+
+WDI_MAC_ADDRESS s_Connect_Addr_29_WiFi7_Mixed_MLD = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x02};
+WDI_MAC_ADDRESS s_Connect_Addr_30_WiFi7_Mixed_Link_1 = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x03};
+WDI_MAC_ADDRESS s_Connect_Addr_31_WiFi7_Mixed_Link_2 = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x04};
+WDI_MAC_ADDRESS s_Connect_Addr_32_WiFi7_Mixed_Link_3 = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x05};
+
+UCHAR s_TLV_BSS_Entry_30_WiFi7_Mixed_Link_1 [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xfa, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x03, // Link 1 MAC address
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0xc7, 0x00,
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0f, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'M', 'i', 'x', 'e', 'd',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01,
+ 0x06, // DSS Parameters
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01,
+ 0x00, // ERP
+ 0x2F, 0x01,
+ 0x00, // Reserved
+ 0x32, 0x01, // DOT11_INFO_ELEMENT_ID_EXTD_SUPPORTED_RATES
+ 0xFB, // BSS_MEMBERSHIP_SELECTOR_SAE_H2E_ONLY
+ 0x30, 0x2a,
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher = CCMP
+ 0x03, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher = CCMP-128
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher = GCMP-128
+ 0x00, 0x0F, 0xAC, 0x09, // Pairwise Cipher = GCMP-256
+ 0x03, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x02, // AKM Suite - PSK
+ 0x00, 0x0F, 0xAC, 0x08, // AKM Suite - SAE-256
+ 0x00, 0x0F, 0xAC, 0x18, // AKM Suite - SAE-384 (Wi-Fi 7)
+ 0xCC, 0x00, // RSN Capability = MFPC + MFPR + ...
+ 0x00, 0x00, // PMKID Count
+ 0x00, 0x0F, 0xAC, 0x0C, // Group Mgmt Cipher = GMAC
+
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ // [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ // [EML=0 + Medium=0 + BSS=1 + LinkID=1] [Reserved=0 + Basic=0] [Reserved=0000] [Reserved=000 MLD=0]
+ 0x20, 0x00, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x02, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x33, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x04, // STA Info : AP Link 1 MAC address
+ // Remaining STA Profile for Link 2
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x33, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x05, // STA Info : AP Link 2 MAC address
+ // Remaining STA Profile for Link 3
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x04, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x03, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x05, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x07, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x24, 0x00, 0x00, 0x00, // Channel
+ 0x02, 0x00, 0x00, 0x00 // BandId
+
+};
+
+UCHAR s_TLV_Success_AssociationResult_30_WiFi7_Mixed_Link_1[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xc0, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x03, // AP Link 1 Mac Address
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, // Association Status
+ 0x00, 0x00, 0x00, 0x00, // Status Code
+ 0x00, // ReAssociationRequest
+ 0x08, 0x00, 0x00, 0x00, // AuthAlgorithm = WDI_AUTH_ALGO_WPA3_SAE = 9
+ 0x09, 0x00, 0x00, 0x00, // UnicastCipherAlgorithm = WDI_CIPHER_ALGO_GCMP_256 = 9
+ 0x09, 0x00, 0x00, 0x00, // MulticastDataCipherAlgorithm = WDI_CIPHER_ALGO_GCMP_256 = 9
+ 0x0C, 0x00, 0x00, 0x00, // MulticastMgmtCipherAlgorithm = WDI_CIPHER_ALGO_BIP_GMAC_256 = C
+ 0x00, // FourAddressSupported
+ 0x00, // Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, // DSInfo
+ 0x00, 0x00, 0x00, 0x00, // AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x7e, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x0f, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'M', 'i', 'x', 'e', 'd',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02,
+ 0x07, 0x12, //Power Capability
+ 0x24, 0x02,
+ 0x01, 0x0B, //Supported Channels
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x08,
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+ 0x30, 0x1A,
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher = CCMP
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x09, // Pairwise Cipher = GCMP-256
+ 0x01, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x18, // AKM Suite - SAE-384 (Wi-Fi 7)
+ 0xC0, 0x00, // RSN Capability = MFPC + MFPR + ...
+ 0x00, 0x00, // PMKID Count
+ 0x00, 0x0F, 0xAC, 0x0C, // Group Mgmt Cipher = GMAC
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ 0x01, 0x10, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, // Sta MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x22, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x11, 0x01, 0x02, 0x03, 0x04, 0x21, // STA Info : STA Link 1 MAC address
+ // STA Profile
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x23, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x11, 0x01, 0x02, 0x03, 0x04, 0x22, // STA Info : Sta Link 2 MAC address
+ // STA Profile
+
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x55, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00,
+ 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ 0x01, 0x10, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x02, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x22, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x04, // STA Info : AP Link 1 MAC address
+ // STA Profile
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x23, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x05, // STA Info : AP Link 2 MAC address
+ // STA Profile
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0x9b, 0x00,
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0f, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'M', 'i', 'x', 'e', 'd',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01, 0x06, // DSS Parameters
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01, 0x00, // ERP
+ 0x2F, 0x01, 0x00, // Reserved
+ 0x32, 0x01,
+ 0xFB, // H2E Only
+ 0x30, 0x2a,
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x09, // Group Cipher = GCMP
+ 0x03, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x04, // Pairwise Cipher = CCMP-128
+ 0x00, 0x0F, 0xAC, 0x08, // Pairwise Cipher = GCMP-128
+ 0x00, 0x0F, 0xAC, 0x09, // Pairwise Cipher = GCMP-256
+ 0x03, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x02, // AKM Suite - PSK
+ 0x00, 0x0F, 0xAC, 0x08, // AKM Suite - SAE-256
+ 0x00, 0x0F, 0xAC, 0x18, // AKM Suite - SAE-384 (Wi-Fi 7)
+ 0xC0, 0x00, // RSN Capability = MFPC + MFPR + ...
+ 0x00, 0x00, // PMKID Count
+ 0x00, 0x0F, 0xAC, 0x0C, // Group Mgmt Cipher = GMAC
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ 0x01, 0x10, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x02, // MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x22, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x04, // STA Info : MAC address
+ // STA Profile
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x23, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x05, // STA Info : MAC address
+ // STA Profile
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0b, 0x00, 0x00, 0x00, // dot11_phy_type_eht
+
+};
+
+//===============================================================================
+
+WDI_MAC_ADDRESS s_Connect_Addr_33_WiFi7_Open_MLD = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x06};
+WDI_MAC_ADDRESS s_Connect_Addr_34_WiFi7_Open_Link_1 = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x07};
+WDI_MAC_ADDRESS s_Connect_Addr_35_WiFi7_Open_Link_2 = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08};
+WDI_MAC_ADDRESS s_Connect_Addr_36_WiFi7_Open_Link_3 = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09};
+
+UCHAR s_TLV_BSS_Entry_34_WiFi7_Open_Link_1 [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xca, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x07, // AP Link 1 address
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x97, 0x00,
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x01, 0x00, // Capability
+ 0x00, 0x0e, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'O', 'p', 'e', 'n',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01,
+ 0x06, // DSS Parameters
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01,
+ 0x00, // ERP
+ 0x2F, 0x01,
+ 0x00, // Reserved
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ // [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ // [EML=0 + Medium=0 + BSS=1 + LinkID=1] [Reserved=0 + Basic=0] [Reserved=0000] [Reserved=000 MLD=0]
+ 0x20, 0x00, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x06, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x33, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // STA Info : AP Link2 MAC address
+ // Remaining STA Profile for Link 2
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x37, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09, // STA Info : AP Link 3 MAC address
+ // Remaining STA Profile for Link 3
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x03, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x07, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x9d, 0x00, 0x00, 0x00, // Channel
+ 0x02, 0x00, 0x00, 0x00 // BandId
+
+};
+
+UCHAR s_TLV_Success_AssociationResult_34_WiFi7_Open_Link_1[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xb3, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x07, // AP Link 1 Mac Address
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, // Association Status
+ 0x00, 0x00, 0x00, 0x00, // Status Code
+ 0x00, // ReAssociationRequest
+ 0x00, 0x00, 0x00, 0x00, // AuthAlgorithm = WDI_CIPHER_ALGO_NONE = 0
+ 0x00, 0x00, 0x00, 0x00, // UnicastCipherAlgorithm = WDI_AUTH_ALGO_80211_OPEN = 0
+ 0x00, 0x00, 0x00, 0x00, // MulticastDataCipherAlgorithm = WDI_AUTH_ALGO_80211_OPEN = 0
+ 0x00, 0x00, 0x00, 0x00, // MulticastMgmtCipherAlgorithm = WDI_AUTH_ALGO_80211_OPEN = 0
+ 0x00, // FourAddressSupported
+ 0x00, // Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, // DSInfo
+ 0x00, 0x00, 0x00, 0x00, // AssociationComebackTime
+ 0x02, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x75, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x0e, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'O', 'p', 'e', 'n',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02,
+ 0x07, 0x12, //Power Capability
+ 0x24, 0x02,
+ 0x01, 0x0B, //Supported Channels
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x08,
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+ 0xff, 0x3d, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ // Multi-Link Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x80, 0x01, // [EML=1 + Medium=0 + BSS=0 + LinkID=0] [Reserved=0 + Basic=0] [Reserved=0000] [Reserved=000 MLD=1]
+ 0x0b, // Common Info length
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, // Local STA MLD Mac address (required for Basic)
+ // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ 0x81, 0x00, 0x00, // [ EML Capabilities (3 octets) ]
+ 0x02, 0x00, // [ MLD Capabilities (2 octets) - (2 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x15, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x32, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0010] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // Length
+ 0x11, 0x01, 0x02, 0x03, 0x04, 0x21, // STA Info : Local Link 1 MAC address
+ // STA Profile
+ // Remaining STA Profile for Link 2
+ 0x11, 0x15, 0x21, 0x02, 0x00, 0x0e, 0xff, 0x03, 0x38, 0x01, 0x30, 0x00,
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x15, // Length = 21
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x33, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // Length
+ 0x11, 0x01, 0x02, 0x03, 0x04, 0x22, // STA Info : Local Sta Link 2 MAC address
+ // STA Profile
+ // Remaining STA Profile for Link 3
+ 0x11, 0x15, 0x21, 0x02, 0x00, 0x0e, 0xff, 0x03, 0x38, 0x01, 0x30, 0x00,
+
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x55, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ 0x01, 0x10, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x06, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x22, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x07, // STA Info : AP Link 1 MAC address
+ // STA Profile
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x23, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // STA Info : AP Link 2 MAC address
+ // STA Profile
+
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0x97, 0x00,
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x01, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0e, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'O', 'p', 'e', 'n',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01,
+ 0x06, // DSS Parameters
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01,
+ 0x00, // ERP
+ 0x2F, 0x01,
+ 0x00, // Reserved
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ 0x01, 0x10, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x06, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x22, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // STA Info : AP Link 1 MAC address
+ // STA Profile
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x23, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09, // STA Info : AP Link 2 MAC address
+ // STA Profile
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x03, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x07, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0b, 0x00, 0x00, 0x00, // dot11_phy_type_eht
+
+};
+
+//===============================================================================
+
+WDI_MAC_ADDRESS s_Connect_Addr_37_WiFi7_Only_MLD = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0a};
+WDI_MAC_ADDRESS s_Connect_Addr_38_WiFi7_Only_Link_1 = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0b};
+WDI_MAC_ADDRESS s_Connect_Addr_39_WiFi7_Only_Link_2 = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0c};
+WDI_MAC_ADDRESS s_Connect_Addr_40_WiFi7_Only_Link_3 = {0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0d};
+
+UCHAR s_TLV_BSS_Entry_38_WiFi7_Only_Link_1 [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xe8, 0x00, //Len
+
+ // WDI_TLV_BSSID = 10 = 0xa
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0b, // Link 1 MAC address
+
+ // WDI_TLV_BEACON_FRAME = 143 = 0x8f
+ 0x0a, 0x00,
+ 0xb5, 0x00,
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x10, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'a', 'k', 'm', ':', '2', '4',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01,
+ 0x06, // DSS Parameters
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01,
+ 0x00, // ERP
+ 0x2F, 0x01,
+ 0x00, // Reserved
+ 0x30, 0x1a,
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher = CCMP
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x09, // Pairwise Cipher = GCMP-256
+ 0x01, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x18, // AKM Suite - SAE-384 (Wi-Fi 7)
+ 0xCC, 0x00, // RSN Capability = MFPC + MFPR + ...
+ 0x00, 0x00, // PMKID Count
+ 0x00, 0x0F, 0xAC, 0x0C, // Group Mgmt Cipher = GMAC
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ // [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ // [EML=0 + Medium=0 + BSS=1 + LinkID=1] [Reserved=0 + Basic=0] [Reserved=0000] [Reserved=000 MLD=0]
+ 0x20, 0x00, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0a, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x33, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0c, // STA Info : AP Link 1 MAC address
+ // Remaining STA Profile for Link 2
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x33, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0d, // STA Info : AP Link 2 MAC address
+ // Remaining STA Profile for Link 3
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0c, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x32, 0x01, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0d, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x32, 0x03, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+
+ 0x32, 0x04, // Extended Supported Rates: DOT11_INFO_ELEMENT_ID_EXTD_SUPPORTED_RATES
+ 0x0C, 0x12, 0x18, 0xFB, // 0xFB = BSS_MEMBERSHIP_SELECTOR_SAE_H2E_ONLY
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, // Channel
+ 0x05, 0x00, 0x00, 0x00 // BandId
+};
+
+UCHAR s_TLV_Success_AssociationResult_38_WiFi7_Only_Link_1[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xaf, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0b, // AP Link 1 Mac Address
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, // Association Status
+ 0x00, 0x00, 0x00, 0x00, // Status Code
+ 0x00, // ReAssociationRequest
+ 0x08, 0x00, 0x00, 0x00, // AuthAlgorithm = WDI_AUTH_ALGO_WPA3_SAE = 9
+ 0x09, 0x00, 0x00, 0x00, // UnicastCipherAlgorithm = WDI_CIPHER_ALGO_GCMP_256 = 9
+ 0x09, 0x00, 0x00, 0x00, // MulticastDataCipherAlgorithm = WDI_CIPHER_ALGO_GCMP_256 = 9
+ 0x0C, 0x00, 0x00, 0x00, // MulticastMgmtCipherAlgorithm = WDI_CIPHER_ALGO_BIP_GMAC_256 = C
+ 0x00, // FourAddressSupported
+ 0x00, // Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, // DSInfo
+ 0x00, 0x00, 0x00, 0x00, // AssociationComebackTime
+ 0x01, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x7f, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x10, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'a', 'k', 'm', ':', '2', '4',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02,
+ 0x07, 0x12, //Power Capability
+ 0x24, 0x02,
+ 0x01, 0x0B, //Supported Channels
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x08,
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+ 0x30, 0x1A,
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x04, // Group Cipher = CCMP
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x09, // Pairwise Cipher = GCMP
+ 0x01, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x18, // AKM Suite - SAE-384 (Wi-Fi 7)
+ 0xC0, 0x00, // RSN Capability = MFPC + MFPR + ...
+ 0x00, 0x00, // PMKID Count
+ 0x00, 0x0F, 0xAC, 0x0C, // Group Mgmt Cipher = GMAC
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ 0x01, 0x10, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, // Sta MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x22, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x11, 0x01, 0x02, 0x03, 0x04, 0x21, // STA Info : STA Link 1 MAC address
+ // STA Profile
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x23, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x11, 0x01, 0x02, 0x03, 0x04, 0x22, // STA Info : Sta Link 2 MAC address
+ // STA Profile
+
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x55, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00,
+ 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ 0x01, 0x10, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0a, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x22, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0c, // STA Info : AP Link 1 MAC address
+ // STA Profile
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x23, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0d, // STA Info : AP Link 2 MAC address
+ // STA Profile
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0x89, 0x00,
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x10, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'a', 'k', 'm', ':', '2', '4',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01, 0x06, // DSS Parameters
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01, 0x00, // ERP
+ 0x2F, 0x01, 0x00, // Reserved
+ 0x30, 0x1a,
+ 0x01, 0x00, // Version
+ 0x00, 0x0F, 0xAC, 0x09, // Group Cipher = GCMP
+ 0x01, 0x00, // Pairwise Cipher Count
+ 0x00, 0x0F, 0xAC, 0x09, // Pairwise Cipher = GCMP
+ 0x01, 0x00, // AKM Suite Count
+ 0x00, 0x0F, 0xAC, 0x18, // AKM Suite - SAE-384 (Wi-Fi 7)
+ 0xC0, 0x00, // RSN Capability = MFPC + MFPR + ...
+ 0x00, 0x00, // PMKID Count
+ 0x00, 0x0F, 0xAC, 0x0C, // Group Mgmt Cipher = GMAC
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ 0x01, 0x10, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0a, // MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x22, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0c, // STA Info : MAC address
+ // STA Profile
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x23, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x0d, // STA Info : MAC address
+ // STA Profile
+ 0x32, 0x04, // Extended Supported Rates: DOT11_INFO_ELEMENT_ID_EXTD_SUPPORTED_RATES
+ 0x0C, 0x12, 0x18, 0xFB, // 0xFB = BSS_MEMBERSHIP_SELECTOR_SAE_H2E_ONLY
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0b, 0x00, 0x00, 0x00, // dot11_phy_type_eht
+
+};
+
+//===============================================================================
+// DualSta networks
+//===============================================================================
+//
+
+WDI_MAC_ADDRESS s_Connect_Addr_41_DualSta_5Ghz = {0x00, 0x51, 0x30, 0x40, 0x50, 0x60};
+UCHAR s_TLV_BSS_Entry_41_DualSta_5Ghz [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x63, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0x51, 0x30, 0x40, 0x50, 0x60,
+
+ // WDI_TLV_PROBE_RESPONSE_FRAME
+ 0x09, 0x00, // Type
+ 0x35, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x08,
+ 'D', 'u', 'a', 'l', '-', 'S', 't', 'a', // SSID
+ 0x01, 0x04, // Supported Rates
+ 0x02, 0x04, 0x0B, 0x16,
+ 0x03, 0x01, // DSSS Parameter
+ 0x01,
+ 0x05, 0x04, // TIM
+ 0x00, 0x01, 0x00, 0x00,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0xDD, 0x07, // Vendor specific - MBO-OCE IE
+ 0x50, 0x6F, 0x9A, // WFA OUI
+ 0x16, // MBO-OCE IE OUI Type
+ 0x01, // Attribute ID - AP capability
+ 0x01, // Attrib length
+ 0x00, // Not cellular data aware
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x05, 0x06, 0x07,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x24, 0x00, 0x00, 0x00, // Channel
+ 0x02, 0x00, 0x00, 0x00 // Band ID
+};
+
+UCHAR s_TLV_SuccessOpenAssociationResult_41_DualSta_5Ghz[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xD7, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0x51, 0x30, 0x40, 0x50, 0x60,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x01, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x02, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x30, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x08,
+ 'D', 'u', 'a', 'l', '-', 'S', 't', 'a', // SSID
+ 0x01, 0x08, // Rates
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C,
+ 0x21, 0x02, // Power Capability
+ 0x07, 0x12,
+ 0x24, 0x02, // Supported Channels
+ 0x01, 0x0B,
+ 0x32, 0x04, // Extended Rates
+ 0x0C, 0x12, 0x18, 0x60,
+ 0xDD, 0x07, // WMM settings
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08, //Rates
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C,
+ 0x32, 0x04, //Extended Rates
+ 0x0C, 0x12, 0x18, 0x60,
+ 0xDD, 0x18, //WMM settings
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00, // Type
+ 0x25, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x08,
+ 'D', 'u', 'a', 'l', '-', 'S', 't', 'a', // SSID
+ 0x01, 0x04, 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01, 0x01, // DSSS Parameter
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x07, 0x00, 0x00, 0x00,
+
+};
+
+// -----
+
+WDI_MAC_ADDRESS s_Connect_Addr_42_DualSta_6Ghz = {0x00, 0x52, 0x30, 0x40, 0x50, 0x60};
+UCHAR s_TLV_BSS_Entry_42_DualSta_6Ghz [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0x63, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x00, 0x52, 0x30, 0x40, 0x50, 0x60,
+
+ // WDI_TLV_PROBE_RESPONSE_FRAME
+ 0x09, 0x00, // Type
+ 0x35, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x08,
+ 'D', 'u', 'a', 'l', '-', 'S', 't', 'a', // SSID
+ 0x01, 0x04, // Supported Rates
+ 0x02, 0x04, 0x0B, 0x16,
+ 0x03, 0x01, // DSSS Parameter
+ 0x01,
+ 0x05, 0x04, // TIM
+ 0x00, 0x01, 0x00, 0x00,
+ 0x46, 0x05, // RM Enabled Capabilities
+ 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0xDD, 0x07, // Vendor specific - MBO-OCE IE
+ 0x50, 0x6F, 0x9A, // WFA OUI
+ 0x16, // MBO-OCE IE OUI Type
+ 0x01, // Attribute ID - AP capability
+ 0x01, // Attrib length
+ 0x00, // Not cellular data aware
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x04, 0x00,
+ 0x04, 0x05, 0x06, 0x07,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_CHANNEL_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x09, 0x00, 0x00, 0x00, // Channel
+ 0x05, 0x00, 0x00, 0x00 // Band ID
+};
+
+UCHAR s_TLV_SuccessOpenAssociationResult_42_DualSta_6Ghz[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xD7, 0x00,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x00, 0x52, 0x30, 0x40, 0x50, 0x60,
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, //Association Status
+ 0x00, 0x00, 0x00, 0x00, //Status Code
+ 0x00, //ReAssociationRequest
+ 0x01, 0x00, 0x00, 0x00, //AuthAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //UnicastCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastDataCipherAlgorithm
+ 0x00, 0x00, 0x00, 0x00, //MulticastMgmtCipherAlgorithm
+ 0x00, //FourAddressSupported
+ 0x00, //Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, //DSInfo
+ 0x00, 0x00, 0x00, 0x00, //AssociationComebackTime
+ 0x05, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x30, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x08,
+ 'D', 'u', 'a', 'l', '-', 'S', 't', 'a', // SSID
+ 0x01, 0x08, // Rates
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C,
+ 0x21, 0x02, // Power Capability
+ 0x07, 0x12,
+ 0x24, 0x02, // Supported Channels
+ 0x01, 0x0B,
+ 0x32, 0x04, // Extended Rates
+ 0x0C, 0x12, 0x18, 0x60,
+ 0xDD, 0x07, // WMM settings
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03,
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x30, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08, //Rates
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C,
+ 0x32, 0x04, //Extended Rates
+ 0x0C, 0x12, 0x18, 0x60,
+ 0xDD, 0x18, //WMM settings
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00,
+ 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00,
+
+ // WDI_TLV_BEACON_PROBE_RESPONSE
+ 0x30, 0x00, // Type
+ 0x25, 0x00, // Length
+ 0x00, 0x11, 0x22, 0x33, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x00, 0x04, // Capability
+ 0x00, 0x08,
+ 'D', 'u', 'a', 'l', '-', 'S', 't', 'a', // SSID
+ 0x01, 0x04, 0x02, 0x04, 0x0B, 0x16, // Supported Rates
+ 0x03, 0x01, 0x01, // DSSS Parameter
+ 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, // TIM
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x07, 0x00, 0x00, 0x00,
+
+};
+
+//===============================================================================
+// Data throughput test networks
+//===============================================================================
+//
+
+__declspec(selectany) WDI_MAC_ADDRESS s_Connect_Addr_43_Speed_01_WiFi7_Open_Link_1 = {0x22, 0x22, 0x22, 0x22, 0x00, 0x01};
+__declspec(selectany) WDI_MAC_ADDRESS s_Connect_Addr_44_Speed_02_WiFi7_Open_Link_1 = {0x22, 0x22, 0x22, 0x22, 0x00, 0x02};
+__declspec(selectany) UCHAR s_TLV_BSS_Entry_43_WiFi7_Open_Link_1 [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xca, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x22, 0x22, 0x22, 0X22, 0x00, 0x01, // AP Link 1 address
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x97, 0x00,
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x01, 0x00, // Capability
+ 0x00, 0x0e, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'D', 'T', '0', '1',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01,
+ 0x06, // DSS Parameters
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01,
+ 0x00, // ERP
+ 0x2F, 0x01,
+ 0x00, // Reserved
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ // [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ // [EML=0 + Medium=0 + BSS=1 + LinkID=1] [Reserved=0 + Basic=0] [Reserved=0000] [Reserved=000 MLD=0]
+ 0x20, 0x00, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x06, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x33, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // STA Info : AP Link2 MAC address
+ // Remaining STA Profile for Link 2
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x37, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09, // STA Info : AP Link 3 MAC address
+ // Remaining STA Profile for Link 3
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x03, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x07, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x9d, 0x00, 0x00, 0x00, // Channel
+ 0x02, 0x00, 0x00, 0x00 // BandId
+
+};
+
+__declspec(selectany) UCHAR s_TLV_Success_AssociationResult_43_WiFi7_Open_Link_1[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xb3, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x22, 0x22, 0x22, 0x22, 0x00, 0x01, // AP Link 1 Mac Address
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, // Association Status
+ 0x00, 0x00, 0x00, 0x00, // Status Code
+ 0x00, // ReAssociationRequest
+ 0x00, 0x00, 0x00, 0x00, // AuthAlgorithm = WDI_CIPHER_ALGO_NONE = 0
+ 0x00, 0x00, 0x00, 0x00, // UnicastCipherAlgorithm = WDI_AUTH_ALGO_80211_OPEN = 0
+ 0x00, 0x00, 0x00, 0x00, // MulticastDataCipherAlgorithm = WDI_AUTH_ALGO_80211_OPEN = 0
+ 0x00, 0x00, 0x00, 0x00, // MulticastMgmtCipherAlgorithm = WDI_AUTH_ALGO_80211_OPEN = 0
+ 0x00, // FourAddressSupported
+ 0x00, // Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, // DSInfo
+ 0x00, 0x00, 0x00, 0x00, // AssociationComebackTime
+ 0x02, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x75, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x0e, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'D', 'T', '0', '1',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02,
+ 0x07, 0x12, //Power Capability
+ 0x24, 0x02,
+ 0x01, 0x0B, //Supported Channels
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x08,
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+ 0xff, 0x3d, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ // Multi-Link Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x80, 0x01, // [EML=1 + Medium=0 + BSS=0 + LinkID=0] [Reserved=0 + Basic=0] [Reserved=0000] [Reserved=000 MLD=1]
+ 0x0b, // Common Info length
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, // Local STA MLD Mac address (required for Basic)
+ // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ 0x81, 0x00, 0x00, // [ EML Capabilities (3 octets) ]
+ 0x02, 0x00, // [ MLD Capabilities (2 octets) - (2 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x15, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x32, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0010] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // Length
+ 0x11, 0x01, 0x02, 0x03, 0x04, 0x21, // STA Info : Local Link 1 MAC address
+ // STA Profile
+ // Remaining STA Profile for Link 2
+ 0x11, 0x15, 0x21, 0x02, 0x00, 0x0e, 0xff, 0x03, 0x38, 0x01, 0x30, 0x00,
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x15, // Length = 21
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x33, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // Length
+ 0x11, 0x01, 0x02, 0x03, 0x04, 0x22, // STA Info : Local Sta Link 2 MAC address
+ // STA Profile
+ // Remaining STA Profile for Link 3
+ 0x11, 0x15, 0x21, 0x02, 0x00, 0x0e, 0xff, 0x03, 0x38, 0x01, 0x30, 0x00,
+
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x55, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ 0x01, 0x10, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x06, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x22, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x22, 0x22, 0x22, 0x22, 0x00, 0x01, // STA Info : AP Link 1 MAC address
+ // STA Profile
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x23, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x22, 0x22, 0x22, 0x22, 0x00, 0x02, // STA Info : AP Link 2 MAC address
+ // STA Profile
+
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0x97, 0x00,
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x01, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0e, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'D', 'T', '0', '1',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01,
+ 0x06, // DSS Parameters
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01,
+ 0x00, // ERP
+ 0x2F, 0x01,
+ 0x00, // Reserved
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ 0x01, 0x10, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x06, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x22, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // STA Info : AP Link 1 MAC address
+ // STA Profile
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x23, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09, // STA Info : AP Link 2 MAC address
+ // STA Profile
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x03, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x07, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0b, 0x00, 0x00, 0x00, // dot11_phy_type_eht
+
+};
+
+
+__declspec(selectany) UCHAR s_TLV_BSS_Entry_44_WiFi7_Open_Link_1 [] =
+{
+ // WDI_TLV_BSS_ENTRY
+ 0x08, 0x00, //Type
+ 0xca, 0x00, //Len
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00, // Type
+ 0x06, 0x00, // Length
+ 0x22, 0x22, 0x22, 0x22, 0x00, 0x02, // AP Link 1 address
+ // WDI_TLV_BEACON_FRAME
+ 0x0a, 0x00,
+ 0x97, 0x00,
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x64, 0x00, // Beacon Interval
+ 0x01, 0x00, // Capability
+ 0x00, 0x0e, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'D', 'T', '0', '2',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01,
+ 0x06, // DSS Parameters
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01,
+ 0x00, // ERP
+ 0x2F, 0x01,
+ 0x00, // Reserved
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ // [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ // [EML=0 + Medium=0 + BSS=1 + LinkID=1] [Reserved=0 + Basic=0] [Reserved=0000] [Reserved=000 MLD=0]
+ 0x20, 0x00, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x06, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x33, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // STA Info : AP Link2 MAC address
+ // Remaining STA Profile for Link 2
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x37, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09, // STA Info : AP Link 3 MAC address
+ // Remaining STA Profile for Link 3
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x03, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x07, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_BSS_ENTRY_DEVICE_CONTEXT
+ 0x0d, 0x00,
+ 0x09, 0x00,
+ 0x04, 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 0x00,
+
+ // WDI_TLV_BSS_ENTRY_SIGNAL_INFO
+ 0x0b, 0x00,
+ 0x08, 0x00,
+ 0xCE, 0xFF, 0xFF, 0xFF, // RSSI
+ 0x5A, 0x00, 0x00, 0x00, // Link Quality
+
+ // WDI_TLV_BSS_ENTRY_PHY_INFO
+ 0x3a, 0x00,
+ 0x08, 0x00,
+ 0x9d, 0x00, 0x00, 0x00, // Channel
+ 0x02, 0x00, 0x00, 0x00 // BandId
+
+};
+
+__declspec(selectany) UCHAR s_TLV_Success_AssociationResult_44_WiFi7_Open_Link_1[] =
+{
+ // WDI_TLV_ASSOCIATION_RESULT
+ 0x35, 0x00,
+ 0xb3, 0x01,
+
+ // WDI_TLV_BSSID
+ 0x02, 0x00,
+ 0x06, 0x00,
+ 0x22, 0x22, 0x22, 0x22, 0x00, 0x02, // AP Link 1 Mac Address
+
+ // WDI_TLV_ASSOCIATION_RESULT_PARAMETERS
+ 0x2D, 0x00,
+ 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, // Association Status
+ 0x00, 0x00, 0x00, 0x00, // Status Code
+ 0x00, // ReAssociationRequest
+ 0x00, 0x00, 0x00, 0x00, // AuthAlgorithm = WDI_CIPHER_ALGO_NONE = 0
+ 0x00, 0x00, 0x00, 0x00, // UnicastCipherAlgorithm = WDI_AUTH_ALGO_80211_OPEN = 0
+ 0x00, 0x00, 0x00, 0x00, // MulticastDataCipherAlgorithm = WDI_AUTH_ALGO_80211_OPEN = 0
+ 0x00, 0x00, 0x00, 0x00, // MulticastMgmtCipherAlgorithm = WDI_AUTH_ALGO_80211_OPEN = 0
+ 0x00, // FourAddressSupported
+ 0x00, // Port Authorized
+ 0x00, // WMM QoS Enabled
+ 0x00, 0x00, 0x00, 0x00, // DSInfo
+ 0x00, 0x00, 0x00, 0x00, // AssociationComebackTime
+ 0x02, 0x00, 0x00, 0x00, // Band ID
+ 0x00, 0x00, 0x00, 0x00, // IHV Association Status
+ 0x00, 0x00, 0x00, 0x00, //DisableDataPathOffloadsScenario
+
+ // WDI_TLV_ASSOCIATION_REQUEST_FRAME
+ 0x2E, 0x00,
+ 0x75, 0x00,
+ 0x21, 0x04, // Capabilities
+ 0x0A, 0x00, // Listen Interval
+ 0x00, 0x0e, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'D', 'T', '0', '2',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Rates
+ 0x21, 0x02,
+ 0x07, 0x12, //Power Capability
+ 0x24, 0x02,
+ 0x01, 0x0B, //Supported Channels
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x08,
+ 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x03, // WMM settings
+ 0xff, 0x3d, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ // Multi-Link Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x80, 0x01, // [EML=1 + Medium=0 + BSS=0 + LinkID=0] [Reserved=0 + Basic=0] [Reserved=0000] [Reserved=000 MLD=1]
+ 0x0b, // Common Info length
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, // Local STA MLD Mac address (required for Basic)
+ // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ 0x81, 0x00, 0x00, // [ EML Capabilities (3 octets) ]
+ 0x02, 0x00, // [ MLD Capabilities (2 octets) - (2 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x15, // Length
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x32, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0010] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // Length
+ 0x11, 0x01, 0x02, 0x03, 0x04, 0x21, // STA Info : Local Link 1 MAC address
+ // STA Profile
+ // Remaining STA Profile for Link 2
+ 0x11, 0x15, 0x21, 0x02, 0x00, 0x0e, 0xff, 0x03, 0x38, 0x01, 0x30, 0x00,
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x15, // Length = 21
+ // STA Control = [B7-B4] [B3-B0] [B15-B12] [b11-B8]
+ 0x33, 0x00, // [DTIM=0 + BeaconInt=0 + MAC=1 + Complete=1] [LinkID=0011] [Reserved=0000] [Reserved=0 + BSS=0 + NTSRBit=0 + NTSRPres=0]
+ 0x06, // Length
+ 0x11, 0x01, 0x02, 0x03, 0x04, 0x22, // STA Info : Local Sta Link 2 MAC address
+ // STA Profile
+ // Remaining STA Profile for Link 3
+ 0x11, 0x15, 0x21, 0x02, 0x00, 0x0e, 0xff, 0x03, 0x38, 0x01, 0x30, 0x00,
+
+
+ // WDI_TLV_ASSOCIATION_RESPONSE_FRAME
+ 0x2F, 0x00,
+ 0x55, 0x00,
+ 0x01, 0x04, //Capability
+ 0x00, 0x00, //Status
+ 0x01, 0xC0, //Association ID
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, //Rates
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, //Extended Rates
+ 0xDD, 0x18,
+ 0x00, 0x50, 0xF2, 0x02, 0x01, 0x01, 0x80, 0x00, 0x03, 0xA4, 0x00, 0x00, 0x27, 0xA4, 0x00, 0x00, 0x42, 0x43, 0x5E, 0x00, 0x62, 0x32, 0x2F, 0x00, //WMM settings
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ 0x01, 0x10, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x06, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x22, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x22, 0x22, 0x22, 0x22, 0x00, 0x01, // STA Info : AP Link 1 MAC address
+ // STA Profile
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x23, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x22, 0x22, 0x22, 0x22, 0x00, 0x02, // STA Info : AP Link 2 MAC address
+ // STA Profile
+
+
+ // WDI_TLV_BEACON_FRAME
+ 0x30, 0x00,
+ 0x97, 0x00,
+
+ 0x22, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x00, 0x00, // Timestamp
+ 0x01, 0x00, // Beacon Interval
+ 0x31, 0x04, // Capability
+ 0x00, 0x0e, // SSID
+ 'W', 'i', '-', 'F', 'i', ' ', '7', ' ', '-', ' ', 'D', 'T', '0', '2',
+ 0x01, 0x08,
+ 0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, // Supported Rates
+ 0x03, 0x01,
+ 0x06, // DSS Parameters
+ 0x05, 0x04,
+ 0x00, 0x01, 0x00, 0x00, // TIM
+ 0x2A, 0x01,
+ 0x00, // ERP
+ 0x2F, 0x01,
+ 0x00, // Reserved
+ 0xff, 0x23, // Multilink Extension Element
+ 0x6B, // Multilink Extension ID
+ 0x01, 0x10, // MultiLink Control ([Reserved=0000000 + MLDCapabilities=1 + 000 + LinkID=1 + Reserved=0 + Basic=000] = 0000000 1 000 1 0 000 = 0x0110)
+ 0x09, // Common Info length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x06, // AP MLD Mac address (required for Basic)
+ 0x01, // [ Link ID (1 octet) - in Beacon/ProbeResp/(Re)AssocResp frames ]
+ // [ BSS Parameters Change Count (1 octet) - from AP only ]
+ // [ Medium Synchronization delay (2 octets) - from AP only]
+ // [ EML Capabilities (2 octets) ]
+ 0x00, 0x03, // [ MLD Capabilities (2 octets) - (3 links max) in Beacon/ProbeResp/(Re)AssocReq/(Re)AssocResp frames ]
+ // Per-Sta profile - 1/2 (Link 2)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x22, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // STA Info : AP Link 1 MAC address
+ // STA Profile
+ // Per-Sta profile - 2/2 (Link 3)
+ 0x00, // Subelement ID = 0 for Per-Sta Profile Element
+ 0x09, // Length
+ 0x00, 0x23, // STA Control = (Reserved=00000+BSSParam=0+NTSRBS=0+NTSRLP=0+DTIM=0+BeaconInt=0+MAC=1+CompleteP=0+LinkID=0001) = 0x0021
+ 0x00, // STA Info : Length
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09, // STA Info : AP Link 2 MAC address
+ // STA Profile
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x08, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x03, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0xc9, 0x14, // RNR IE
+ 0x04, 0x10, // TBTT: 0x04 => B2=1(FilteredAP),B4-B7=0(TBTT Information Count=0+1) :: 0x0c = TBTT Length
+ 0x51, 0x06, // Operating Class = 81 (2.4 GHz), Channel = 6
+ 0x00, // TBTTOffset
+ 0x00, 0xA0, 0xB0, 0xC0, 0xD1, 0x09, // Bssid
+ 0x1d, 0xc5, 0x3b, 0x12, // ShortSsid
+ 0x40, // BssParameters
+ 0x00, // 20 MHz
+ 0x12, 0x07, 0x56, // Mld Parameters: MLD ID(8 bits) : LinkID (4 bits) + ...
+ 0x32, 0x04,
+ 0x0C, 0x12, 0x18, 0x60, // Extended Supported Rates
+ 0xDD, 0x09,
+ 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Vendor Specific
+
+ // WDI_TLV_PHY_TYPE_LIST
+ 0x19, 0x00,
+ 0x04, 0x00,
+ 0x0b, 0x00, 0x00, 0x00, // dot11_phy_type_eht
+
+};
+
+//===============================================================================
+//===============================================================================
+
+typedef struct
+{
+ UINT32 BandId;
+ WDI_MAC_ADDRESS* pMacAddress;
+ PUCHAR pTlvBssEntry;
+ UINT32 TlvBssEntrySize;
+ PUCHAR pTlvAssociationResult;
+ UINT32 TlvAssociationResultSize;
+
+} WdiTestConnectEntry, * PWdiTestConnectEntry;
+
+WdiTestConnectEntry g_ConnectEntries[] =
+{
+ // 0
+ { // 0th Entry is disconnected state
+ 0,
+ nullptr,
+ nullptr, 0,
+ nullptr, 0,
+ },
+
+ // 1 - WFC_OPEN
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr,
+ s_TLV_BSS_Entry_1, sizeof(s_TLV_BSS_Entry_1),
+ s_TLV_SuccessOpenAssociationResult, sizeof(s_TLV_SuccessOpenAssociationResult),
+ },
+
+ // 2 - WFC_OPEN
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr_2_Open,
+ s_TLV_BSS_Entry_2_Open, sizeof(s_TLV_BSS_Entry_2_Open),
+ s_TLV_Success_AssociationResult_2_Open, sizeof(s_TLV_Success_AssociationResult_2_Open),
+ },
+
+ // 3 - WDI__WEP
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr_3_WEP,
+ s_TLV_BSS_Entry_3_WEP, sizeof(s_TLV_BSS_Entry_3_WEP),
+ s_TLV_Success_AssociationResult_3_WEP, sizeof(s_TLV_Success_AssociationResult_3_WEP),
+ },
+
+ // 4 - WDI_SECURE
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr_4_RSNA_CCMP,
+ s_TLV_BSS_Entry_4_RSNA_CCMP, sizeof(s_TLV_BSS_Entry_4_RSNA_CCMP),
+ s_TLV_Success_AssociationResult_4_RSNA_CCMP, sizeof(s_TLV_Success_AssociationResult_4_RSNA_CCMP),
+ },
+
+ // 5 - WDI__IHV
+ {
+ TESTMP_BAND_IHV,
+ &s_Connect_Addr_5_IHV,
+ s_TLV_BSS_Entry_5_IHV, sizeof(s_TLV_BSS_Entry_5_IHV),
+ s_TLV_Success_AssociationResult_5_IHV, sizeof(s_TLV_Success_AssociationResult_5_IHV),
+ },
+
+ // 6 - WDI__FT
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr_6_FT_CCMP,
+ s_TLV_BSS_Entry_6_FT_CCMP, sizeof(s_TLV_BSS_Entry_6_FT_CCMP),
+ s_TLV_Success_AssociationResult_6_FT_CCMP, sizeof(s_TLV_Success_AssociationResult_6_FT_CCMP),
+ },
+
+ // 7 - WDI__FTPSK
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr_7_FT_PSK_CCMP,
+ s_TLV_BSS_Entry_7_FT_PSK_CCMP, sizeof(s_TLV_BSS_Entry_7_FT_PSK_CCMP),
+ s_TLV_Success_AssociationResult_7_FT_PSK_CCMP, sizeof(s_TLV_Success_AssociationResult_7_FT_PSK_CCMP),
+ },
+
+ // 8 -
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr_8_Hidden,
+ s_TLV_BSS_Entry_Beacon_8_Hidden, sizeof(s_TLV_BSS_Entry_Beacon_8_Hidden),
+ s_TLV_Success_AssociationResult_8_Hidden, sizeof(s_TLV_Success_AssociationResult_8_Hidden),
+ },
+
+ // 9 - WDI_adPSK
+ {
+ WDI_BAND_ID_60000,
+ &s_Connect_Addr_9_11ad_PSK,
+ s_TLV_BSS_Entry_9_11ad_ProbeResponse_PSK, sizeof(s_TLV_BSS_Entry_9_11ad_ProbeResponse_PSK),
+ s_TLV_Success_AssociationResult_9_11ad_PSK, sizeof(s_TLV_Success_AssociationResult_9_11ad_PSK),
+ },
+
+ // 10 - WDI_ad_1x
+ {
+ WDI_BAND_ID_60000,
+ &s_Connect_Addr_10_11ad_1x,
+ s_TLV_BSS_Entry_10_11ad_ProbeResponse_1x, sizeof(s_TLV_BSS_Entry_10_11ad_ProbeResponse_1x),
+ s_TLV_Success_AssociationResult_10_11ad_1x, sizeof(s_TLV_Success_AssociationResult_10_11ad_1x),
+ },
+
+ // 11 - WDI_ad_ON
+ {
+ WDI_BAND_ID_60000,
+ &s_Connect_Addr_11_11ad_Open,
+ s_TLV_BSS_Entry_11_11ad_ProbeResponse_Open, sizeof(s_TLV_BSS_Entry_11_11ad_ProbeResponse_Open),
+ s_TLV_Success_AssociationResult_11_11ad_Open, sizeof(s_TLV_Success_AssociationResult_11_11ad_Open),
+ },
+
+ // 12 - WDI_OPEN_11ax.2.4
+ {
+ WDI_BAND_ID_60000,
+ &s_Connect_Addr_12_11ax_24_Open,
+ s_TLV_BSS_Entry_12_11ax_24_Open, sizeof(s_TLV_BSS_Entry_12_11ax_24_Open),
+ s_TLV_Success_AssociationResult_12_11ax_24_Open, sizeof(s_TLV_Success_AssociationResult_12_11ax_24_Open),
+ },
+
+ // 13 - WDI_OPEN_11ax.5
+ {
+ WDI_BAND_ID_5000,
+ &s_Connect_Addr_13_11ax_5_Open,
+ s_TLV_BSS_Entry_13_11ax_5_Open, sizeof(s_TLV_BSS_Entry_13_11ax_5_Open),
+ s_TLV_Success_AssociationResult_13_11ax_5_Open, sizeof(s_TLV_Success_AssociationResult_13_11ax_5_Open),
+ },
+
+ // 14 - WDI_WPA3-SAE
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr_14_WPA3_SAE_CCMP,
+ s_TLV_BSS_Entry_14_WPA3_SAE_CCMP, sizeof(s_TLV_BSS_Entry_14_WPA3_SAE_CCMP),
+ s_TLV_Success_AssociationResult_14_WPA3_SAE_CCMP, sizeof(s_TLV_Success_AssociationResult_14_WPA3_SAE_CCMP),
+ },
+
+ // 15 - WDI_SHA256
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr_15_WPA2PSK_SHA256,
+ s_TLV_BSS_Entry_15_WPA2PSK_SHA256, sizeof(s_TLV_BSS_Entry_15_WPA2PSK_SHA256),
+ s_TLV_Success_AssociationResult_15_WPA2PSK_SHA256, sizeof(s_TLV_Success_AssociationResult_15_WPA2PSK_SHA256),
+ },
+
+ // 16 - WDI_WPA3-SUITE_B
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr_16_WPA3_SUITEB,
+ s_TLV_BSS_Entry_16_WPA3_SUITEB, sizeof(s_TLV_BSS_Entry_16_WPA3_SUITEB),
+ s_TLV_Success_AssociationResult_16_WPA3_SUITEB, sizeof(s_TLV_Success_AssociationResult_16_WPA3_SUITEB),
+ },
+
+ // 17 - 6E__1
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr_17_6G_S1_2_4_Ghz,
+ s_TLV_BSS_Entry_17_6G_S1_2_4_Ghz, sizeof(s_TLV_BSS_Entry_17_6G_S1_2_4_Ghz),
+ s_TLV_Success_AssociationResult_17_6G_S1_2_4_Ghz, sizeof(s_TLV_Success_AssociationResult_17_6G_S1_2_4_Ghz),
+ },
+
+ // 18 - 6E__1
+ {
+ WDI_BAND_ID_5000,
+ &s_Connect_Addr_18_6G_S1_5_Ghz,
+ s_TLV_BSS_Entry_18_6G_S1_5_Ghz, sizeof(s_TLV_BSS_Entry_18_6G_S1_5_Ghz),
+ s_TLV_Success_AssociationResult_18_6G_S1_5_Ghz, sizeof(s_TLV_Success_AssociationResult_18_6G_S1_5_Ghz),
+ },
+
+ // 19 - 6E__1
+ {
+ WDI_BAND_ID_6000,
+ &s_Connect_Addr_19_6G_S1a_6_Ghz,
+ s_TLV_BSS_Entry_19_6G_S1a_6_Ghz, sizeof(s_TLV_BSS_Entry_19_6G_S1a_6_Ghz),
+ s_TLV_Success_AssociationResult_19_6G_S1a_6_Ghz, sizeof(s_TLV_Success_AssociationResult_19_6G_S1a_6_Ghz),
+ },
+
+ // 20 - 6E__1
+ {
+ WDI_BAND_ID_6000,
+ &s_Connect_Addr_20_6G_S1b_6_Ghz,
+ s_TLV_BSS_Entry_20_6G_S1b_6_Ghz, sizeof(s_TLV_BSS_Entry_20_6G_S1b_6_Ghz),
+ s_TLV_Success_AssociationResult_20_6G_S1b_6_Ghz, sizeof(s_TLV_Success_AssociationResult_20_6G_S1b_6_Ghz),
+ },
+
+ // 21 - 6E__2
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr_21_6G_S2_2_4_Ghz,
+ s_TLV_BSS_Entry_21_6G_S2_2_4_Ghz, sizeof(s_TLV_BSS_Entry_21_6G_S2_2_4_Ghz),
+ s_TLV_Success_AssociationResult_21_6G_S2_2_4_Ghz, sizeof(s_TLV_Success_AssociationResult_21_6G_S2_2_4_Ghz),
+ },
+
+ // 22 - 6E__2
+ {
+ WDI_BAND_ID_5000,
+ &s_Connect_Addr_22_6G_S2_5_Ghz,
+ s_TLV_BSS_Entry_22_6G_S2_5_Ghz, sizeof(s_TLV_BSS_Entry_22_6G_S2_5_Ghz),
+ s_TLV_Success_AssociationResult_22_6G_S2_5_Ghz, sizeof(s_TLV_Success_AssociationResult_22_6G_S2_5_Ghz),
+ },
+
+ // 23 - 6E__2
+ {
+ WDI_BAND_ID_6000,
+ &s_Connect_Addr_23_6G_S2_6_Ghz,
+ s_TLV_BSS_Entry_23_6G_S2_6_Ghz, sizeof(s_TLV_BSS_Entry_23_6G_S2_6_Ghz),
+ s_TLV_Success_AssociationResult_23_6G_S2_6_Ghz, sizeof(s_TLV_Success_AssociationResult_23_6G_S2_6_Ghz),
+ },
+
+ // 24 - 6E__3
+ {
+ WDI_BAND_ID_2400,
+ &s_Connect_Addr_24_6G_S3_2_4_Ghz,
+ s_TLV_BSS_Entry_24_6G_S3_2_4_Ghz, sizeof(s_TLV_BSS_Entry_24_6G_S3_2_4_Ghz),
+ s_TLV_Success_AssociationResult_24_6G_S3_2_4_Ghz, sizeof(s_TLV_Success_AssociationResult_24_6G_S3_2_4_Ghz),
+ },
+
+ // 25 - 6E__4
+ {
+ WDI_BAND_ID_6000,
+ &s_Connect_Addr_25_6G_S4_6_Ghz,
+ s_TLV_BSS_Entry_25_6G_S4_6_Ghz, sizeof(s_TLV_BSS_Entry_25_6G_S4_6_Ghz),
+ s_TLV_Success_AssociationResult_25_6G_S4_6_Ghz, sizeof(s_TLV_Success_AssociationResult_25_6G_S4_6_Ghz),
+ },
+
+ // 26 - WDI_OWE_RNR
+ {
+ WDI_BAND_ID_2400,
+ &s_ConnectAddr_26_OWE_With_RNR,
+ s_TLV_BSS_Entry_26_OWE_With_RNR, sizeof(s_TLV_BSS_Entry_26_OWE_With_RNR),
+ s_TLV_Failure_AssociationResult_26_OWE_With_RNR, sizeof(s_TLV_Failure_AssociationResult_26_OWE_With_RNR)
+ },
+ // 27 - <WDI_OWE_TM_OPEN>
+ {
+ WDI_BAND_ID_2400,
+ &s_ConnectAddr_27_OWE_TM_OWE,
+ s_TLV_BSS_Entry_27_OWE_TM_OWE, sizeof(s_TLV_BSS_Entry_27_OWE_TM_OWE),
+ s_TLV_Failure_AssociationResult_27_OWE_TM_OWE, sizeof(s_TLV_Failure_AssociationResult_27_OWE_TM_OWE)
+ },
+ // 28 - WDI_OWE_TM_OPEN
+ {
+ WDI_BAND_ID_2400,
+ &s_ConnectAddr_28_OWE_TM_Open,
+ s_TLV_BSS_Entry_28_OWE_TM_Open_Beacon, sizeof(s_TLV_BSS_Entry_28_OWE_TM_Open_Beacon),
+ s_TLV_Failure_AssociationResult_28_OWE_TM_Open, sizeof(s_TLV_Failure_AssociationResult_28_OWE_TM_Open)
+ },
+
+ // 29 is only MLD address for Wi-Fi 7
+ // 30 - Wi-Fi 7 - Mixed
+ {
+ WDI_BAND_ID_5000,
+ &s_Connect_Addr_30_WiFi7_Mixed_Link_1,
+ s_TLV_BSS_Entry_30_WiFi7_Mixed_Link_1, sizeof(s_TLV_BSS_Entry_30_WiFi7_Mixed_Link_1),
+ s_TLV_Success_AssociationResult_30_WiFi7_Mixed_Link_1, sizeof(s_TLV_Success_AssociationResult_30_WiFi7_Mixed_Link_1),
+ },
+ // 34 - Wi-Fi 7 - Open
+ {
+ WDI_BAND_ID_5000,
+ &s_Connect_Addr_34_WiFi7_Open_Link_1,
+ s_TLV_BSS_Entry_34_WiFi7_Open_Link_1, sizeof(s_TLV_BSS_Entry_34_WiFi7_Open_Link_1),
+ s_TLV_Success_AssociationResult_34_WiFi7_Open_Link_1, sizeof(s_TLV_Success_AssociationResult_34_WiFi7_Open_Link_1),
+ },
+ // 38 - Wi-Fi 7 - Only
+ {
+ WDI_BAND_ID_6000,
+ &s_Connect_Addr_38_WiFi7_Only_Link_1,
+ s_TLV_BSS_Entry_38_WiFi7_Only_Link_1, sizeof(s_TLV_BSS_Entry_38_WiFi7_Only_Link_1),
+ s_TLV_Success_AssociationResult_38_WiFi7_Only_Link_1, sizeof(s_TLV_Success_AssociationResult_38_WiFi7_Only_Link_1),
+ },
+
+ // 41 - Dual-Sta
+ {
+ WDI_BAND_ID_5000,
+ &s_Connect_Addr_41_DualSta_5Ghz,
+ s_TLV_BSS_Entry_41_DualSta_5Ghz, sizeof(s_TLV_BSS_Entry_41_DualSta_5Ghz),
+ s_TLV_SuccessOpenAssociationResult_41_DualSta_5Ghz, sizeof(s_TLV_SuccessOpenAssociationResult_41_DualSta_5Ghz),
+ },
+
+ // 42 - Dual-Sta
+ {
+ WDI_BAND_ID_6000,
+ &s_Connect_Addr_42_DualSta_6Ghz,
+ s_TLV_BSS_Entry_42_DualSta_6Ghz, sizeof(s_TLV_BSS_Entry_42_DualSta_6Ghz),
+ s_TLV_SuccessOpenAssociationResult_42_DualSta_6Ghz, sizeof(s_TLV_SuccessOpenAssociationResult_42_DualSta_6Ghz),
+ },
+
+ // 43 - Speed Test(01)
+ {
+ WDI_BAND_ID_5000,
+ &s_Connect_Addr_43_Speed_01_WiFi7_Open_Link_1,
+ s_TLV_BSS_Entry_43_WiFi7_Open_Link_1, sizeof(s_TLV_BSS_Entry_43_WiFi7_Open_Link_1),
+ s_TLV_Success_AssociationResult_43_WiFi7_Open_Link_1, sizeof(s_TLV_Success_AssociationResult_43_WiFi7_Open_Link_1),
+ },
+
+ // 44 - Speed Test(02)
+ {
+ WDI_BAND_ID_5000,
+ &s_Connect_Addr_44_Speed_02_WiFi7_Open_Link_1,
+ s_TLV_BSS_Entry_44_WiFi7_Open_Link_1, sizeof(s_TLV_BSS_Entry_44_WiFi7_Open_Link_1),
+ s_TLV_Success_AssociationResult_44_WiFi7_Open_Link_1, sizeof(s_TLV_Success_AssociationResult_44_WiFi7_Open_Link_1),
+ },
+};
+
+// clang-format on
diff --git a/network/wlan/wificx/drivercode/wifirequest.cpp b/network/wlan/wificx/drivercode/wifirequest.cpp
new file mode 100644
index 00000000..c84c1d97
--- /dev/null
+++ b/network/wlan/wificx/drivercode/wifirequest.cpp
@@ -0,0 +1,98 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+
+#include "precomp.h"
+#include "wifitransition.h"
+#include "wifirequest.h"
+#include "wifirequest.tmh"
+
+_Use_decl_annotations_
+void EvtWifiDeviceSendCommand(WDFDEVICE Device, WIFIREQUEST SendRequest)
+{
+ UINT InBufferLen = 0;
+ UINT OutBufferLen = 0;
+ void* Buffer = WifiRequestGetInOutBuffer(SendRequest, &InBufferLen, &OutBufferLen);
+ UINT16 MessageId = WifiRequestGetMessageId(SendRequest);
+
+ TransitionContext tctx{
+ Device,
+ WifiGetIhvDeviceContext(Device),
+ SendRequest,
+ static_cast<PWDI_MESSAGE_HEADER>(Buffer),
+ Buffer,
+ InBufferLen,
+ OutBufferLen
+ };
+
+ if(!NT_SUCCESS(RunTransitionByMessage(tctx, MessageId)))
+ {
+ WFCError("RunTransitionByMessage failed for MessageId: 0x%04X", MessageId);
+ return;
+ }
+}
+
+void WifiIhvSendIndicationToOs(
+ _In_ WDFDEVICE Device,
+ _In_ const PWDI_MESSAGE_HEADER pOriginalWdiHeader,
+ _In_ UINT16 WifiRequestMessageId,
+ _In_ UINT32 WifiRequestTransactionId,
+ _In_ NTSTATUS WifiRquestM4Status,
+ _In_opt_bytecount_(TlvDataSize) PUCHAR pTlvData,
+ _In_ UINT32 TlvDataSize)
+{
+ WDFMEMORY data = WDF_NO_HANDLE;
+ PUCHAR pIndicationBuffer = nullptr;
+ PWDI_MESSAGE_HEADER pIndicationHeader = nullptr;
+ SIZE_T indicationSize = sizeof(WDI_MESSAGE_HEADER) + TlvDataSize;
+ WDF_OBJECT_ATTRIBUTES objectAttribs;
+
+ WDF_OBJECT_ATTRIBUTES_INIT(&objectAttribs);
+ objectAttribs.ParentObject = Device;
+
+ if(!NT_SUCCESS(WdfMemoryCreate(&objectAttribs, NonPagedPoolNx, 0, indicationSize, &data, reinterpret_cast<void**>(&pIndicationBuffer))))
+ {
+ WFCError("Failed to create indication buffer");
+ return;
+ }
+
+ RtlZeroMemory(pIndicationBuffer, indicationSize);
+ pIndicationHeader = reinterpret_cast<PWDI_MESSAGE_HEADER>(pIndicationBuffer);
+ pIndicationHeader->PortId = pOriginalWdiHeader->PortId;
+ pIndicationHeader->Reserved = pOriginalWdiHeader->Reserved;
+ pIndicationHeader->Status = Wifi::ConvertNDISSTATUSToNTSTATUS(WifiRquestM4Status);
+ pIndicationHeader->TransactionId = WifiRequestTransactionId;
+ pIndicationHeader->IhvSpecificId = pOriginalWdiHeader->IhvSpecificId;
+
+ if (TlvDataSize > 0 && pTlvData != nullptr)
+ {
+ RtlCopyMemory(pIndicationBuffer + sizeof(WDI_MESSAGE_HEADER), pTlvData, TlvDataSize);
+ }
+
+ // Send the indication up to WifiCx
+ WifiDeviceReceiveIndication(Device, WifiRequestMessageId, data);
+
+ // Don't need to keep this around
+ WdfObjectDelete(data);
+}
+
+_Use_decl_annotations_
+void WifiIhvSendUnsolicitedIndicationToOs(WDFDEVICE Device, PWDI_MESSAGE_HEADER pWdiHeader, UINT16 MessageId, PUCHAR pTlvData, UINT32 TlvDataSize)
+{
+ WifiIhvSendIndicationToOs(Device, pWdiHeader, MessageId, 0, STATUS_SUCCESS, pTlvData, TlvDataSize); //TransactionId required to be 0 for unsolicited indications.
+}
+_Use_decl_annotations_
+void WifiIhvNotifyM3Completion(WIFIREQUEST Request, NTSTATUS WifiRequestM3Status, UINT BytesWritten)
+{
+ if(!NT_SUCCESS(WifiRequestM3Status))
+ {
+ WFCError("WifiRequest M3 failed: %!STATUS!, BytesWritten: %d\n", WifiRequestM3Status, BytesWritten);
+ }
+ // Report the M3 status back to OS
+ // OS expects M3 before the M4
+ WifiRequestComplete(Request, WifiRequestM3Status, BytesWritten);
+}
+
+_Use_decl_annotations_
+void WifiIhvSendM4IndicationToOs(WDFDEVICE Device, UINT16 WifiRequestMessageId, const PWDI_MESSAGE_HEADER pWdiHeader, NTSTATUS WifiRequestM4Status)
+{
+ WifiIhvSendIndicationToOs(Device, pWdiHeader, WifiRequestMessageId, pWdiHeader->TransactionId, WifiRequestM4Status, nullptr, 0);
+}
diff --git a/network/wlan/wificx/drivercode/wifirequest.h b/network/wlan/wificx/drivercode/wifirequest.h
new file mode 100644
index 00000000..74380548
--- /dev/null
+++ b/network/wlan/wificx/drivercode/wifirequest.h
@@ -0,0 +1,23 @@
+// Copyright (C) Microsoft Corporation. All rights reserved.
+#pragma once
+#include "device.h"
+
+EVT_WIFI_DEVICE_SEND_COMMAND EvtWifiDeviceSendCommand;
+
+void WifiIhvSendUnsolicitedIndicationToOs(
+ _In_ WDFDEVICE Device,
+ _In_ PWDI_MESSAGE_HEADER pWdiHeader,
+ _In_ UINT16 MessageId,
+ _In_opt_bytecount_(TlvDataSize) PUCHAR pTlvData,
+ _In_ UINT32 TlvDataSize);
+
+void WifiIhvNotifyM3Completion(
+ _In_ WIFIREQUEST Request,
+ _In_ NTSTATUS WifiRequestM3Status,
+ _In_ UINT BytesWritten);
+
+void WifiIhvSendM4IndicationToOs(
+ _In_ WDFDEVICE Device,
+ _In_ UINT16 WifiRequestMessageId,
+ _In_ const PWDI_MESSAGE_HEADER pOriginalWdiHeader,
+ _In_ NTSTATUS WifiRequestM4Status); \ No newline at end of file
diff --git a/network/wlan/wificx/drivercode/wifitransition.cpp b/network/wlan/wificx/drivercode/wifitransition.cpp
new file mode 100644
index 00000000..2e1b7ef2
--- /dev/null
+++ b/network/wlan/wificx/drivercode/wifitransition.cpp
@@ -0,0 +1,466 @@
+// Copyright (C) Microsoft Corporation. All rights reserved.
+
+#include "wifitransition.h"
+
+// Common TLV parsing helper: computes TLV span, optional dump, calls a parser, converts status.
+template<typename Param, typename ParserFn>
+NTSTATUS ParseTlvCommon(TransitionContext& ctx,
+ UINT16 messageId,
+ ParserFn parser,
+ Param& outParams,
+ bool dumpStream = true)
+{
+ if (ctx.InLen < sizeof(WDI_MESSAGE_HEADER))
+ {
+ return STATUS_INVALID_PARAMETER;
+ }
+
+ auto* tlvBytes = static_cast<UCHAR*>(ctx.RawBuffer) + sizeof(WDI_MESSAGE_HEADER);
+ auto tlvLen = static_cast<ULONG>(ctx.InLen - sizeof(WDI_MESSAGE_HEADER));
+
+ if (dumpStream)
+ {
+ DumpMessageTlvByteStream(
+ messageId,
+ TRUE,
+ ctx.DevCtx->TlvContext.PeerVersion,
+ tlvLen,
+ tlvBytes,
+ 0,
+ nullptr);
+ }
+
+ auto ndisStatus = parser(tlvLen, tlvBytes, &ctx.DevCtx->TlvContext, &outParams);
+ return Wifi::ConvertNDISSTATUSToNTSTATUS(ndisStatus);
+}
+
+
+// Primary traits template (specialize per MessageId)
+template<UINT16 MsgId>
+struct TransitionTraits;
+
+// --- Generic pure-type traits template (add before existing specializations) ---
+// WIFIREQUEST always needs M3 notification, so TPreM3Fn is mandatory.
+// and WIFICX expectes the M3 then M4 order, so we always execute M3 then M4.
+// using template parameters to configure parsing, cleanup, M3/M4 steps.
+// to make sure that all transitions have consistent implementations.
+template<
+ UINT16 TMsgId,
+ typename TParam,
+ UINT16 TCompleteIndication,
+ bool TDumpTlvStream,
+ NDIS_STATUS (*TParseFn)(ULONG, const UINT8*, PCTLV_CONTEXT, TParam*),
+ void (*TCleanupFn)(TParam*),
+ NTSTATUS (WifiHAL::*TPreM3Fn)(), // mandatory pre-M3 hook
+ NTSTATUS (WifiHAL::*THalM3Fn)(const TParam&, const PWDI_MESSAGE_HEADER, UINT BytesWriten), // optional HAL M3 (may be nullptr)
+ NTSTATUS (WifiHAL::*TPreM4Fn)(), // optional pre-M4 hook (may be nullptr)
+ NTSTATUS (WifiHAL::*THalM4Fn)(const PWDI_MESSAGE_HEADER) // optional HAL M4 (may be nullptr)
+>
+struct GenericTransitionTraits
+{
+ using ParamType = TParam;
+ enum : UINT16 { CompleteIndication = TCompleteIndication };
+
+ NTSTATUS Parse(TransitionContext& ctx, ParamType& p)
+ {
+ if (ctx.InLen < sizeof(WDI_MESSAGE_HEADER))
+ {
+ return STATUS_INVALID_PARAMETER;
+ }
+
+ auto* tlvBytes = static_cast<UCHAR*>(ctx.RawBuffer) + sizeof(WDI_MESSAGE_HEADER);
+ auto tlvLen = static_cast<ULONG>(ctx.InLen - sizeof(WDI_MESSAGE_HEADER));
+
+ if (TDumpTlvStream)
+ {
+ DumpMessageTlvByteStream(
+ TMsgId,
+ TRUE,
+ ctx.DevCtx->TlvContext.PeerVersion,
+ tlvLen,
+ tlvBytes,
+ 0,
+ nullptr);
+ }
+
+ auto ndisStatus = TParseFn(tlvLen, tlvBytes, &ctx.DevCtx->TlvContext, &p);
+ return Wifi::ConvertNDISSTATUSToNTSTATUS(ndisStatus);
+ }
+
+ void Cleanup(ParamType& p) { TCleanupFn(&p); }
+
+ // Make static so pointer matches ExecuteSteps expected callable type (no implicit this)
+ static NTSTATUS StepM3(TransitionContext& c, ParamType& p, UINT& bytesWritten)
+ {
+ bytesWritten = sizeof(WDI_MESSAGE_HEADER);
+ ASSERT(TPreM3Fn);
+
+ if (TPreM3Fn)
+ {
+ // Call member function pointer on WifiHAL instance
+ NTSTATUS preStatus = (GetWifiHalFromHandle(c.DevCtx->WdfDevice)->*TPreM3Fn)();
+ if (!NT_SUCCESS(preStatus))
+ {
+ return preStatus;
+ }
+ }
+
+ if (THalM3Fn)
+ {
+ // Pass required third argument (BytesWriten) to HAL M3 function
+ return (GetWifiHalFromHandle(c.DevCtx->WdfDevice)->*THalM3Fn)(p, c.Header, bytesWritten);
+ }
+
+ return STATUS_SUCCESS;
+ }
+
+ static NTSTATUS StepM4(TransitionContext& c, ParamType&)
+ {
+ if (TPreM4Fn)
+ {
+ NTSTATUS preStatus = (GetWifiHalFromHandle(c.DevCtx->WdfDevice)->*TPreM4Fn)();
+ if (!NT_SUCCESS(preStatus))
+ {
+ return preStatus;
+ }
+ }
+
+ if (THalM4Fn)
+ {
+ return (GetWifiHalFromHandle(c.DevCtx->WdfDevice)->*THalM4Fn)(c.Header);
+ }
+
+ return (TPreM4Fn == nullptr && THalM4Fn == nullptr) ? STATUS_PENDING : STATUS_SUCCESS;
+ }
+
+ NTSTATUS Handle(TransitionContext& ctx, ParamType& p)
+ {
+ return ExecuteSteps(ctx, p, &GenericTransitionTraits::StepM3, &GenericTransitionTraits::StepM4);
+ }
+
+ bool ShouldSendComplete(NTSTATUS s) const { return s != STATUS_PENDING; }
+};
+
+// Execute two step callables.
+// StepM3Fn signature: NTSTATUS (TransitionContext&, Param&, UINT& bytesWritten)
+// StepM4Fn signature: NTSTATUS (TransitionContext&, Param&)
+// Always calls WifiRequestComplete after StepM3 with the bytesWritten produced by StepM3.
+// Skips StepM4 if StepM3 failed
+template<typename Param, typename StepM3Fn, typename StepM4Fn>
+NTSTATUS ExecuteSteps(TransitionContext& ctx, Param& p, StepM3Fn stepM3, StepM4Fn stepM4)
+{
+ UINT bytesWritten = sizeof(WDI_MESSAGE_HEADER); // default minimum
+ NTSTATUS m3Status = stepM3(ctx, p, bytesWritten);
+ // Report the M3 status back to OS
+ // OS expects M3 before the M4
+ WifiIhvNotifyM3Completion(ctx.WifiRequest, m3Status, bytesWritten);
+ if (!NT_SUCCESS(m3Status))
+ {
+ return m3Status;
+ }
+ return stepM4(ctx, p);
+}
+
+// -------- Generic runner (compile-time) --------
+template<UINT16 MsgId>
+NTSTATUS RunTransition(TransitionContext& ctx)
+{
+ TransitionTraits<MsgId> traits;
+ typename TransitionTraits<MsgId>::ParamType params{};
+ NTSTATUS parseStatus = traits.Parse(ctx, params);
+ if (!NT_SUCCESS(parseStatus))
+ {
+ traits.Cleanup(params);
+ // Report Failed M3 to OS
+ // Note: No M4 indication on parse failure
+ WifiIhvNotifyM3Completion(ctx.WifiRequest, parseStatus, 0);
+ return parseStatus;
+ }
+
+ NTSTATUS m4Status = traits.Handle(ctx, params);
+
+ if (traits.ShouldSendComplete(m4Status))
+ {
+ WifiIhvSendM4IndicationToOs(
+ ctx.Device,
+ TransitionTraits<MsgId>::CompleteIndication,
+ ctx.Header,
+ m4Status);
+ }
+
+ traits.Cleanup(params);
+ return m4Status;
+}
+
+// ============================================================================
+// Property GET/SET messages (single M3 completion)
+// ----------------------------------------------------------------------------
+// Unlike the M3/M4 task flow above, a property GET/SET is a single M3 step that
+// returns its result synchronously in the request's in/out buffer. The HAL
+// handler writes the response TLV stream and reports the real number of bytes
+// written (by reference); the request is completed (M3) with that length.
+// No M4 indication.
+// ============================================================================
+template<
+ UINT16 TMsgId,
+ typename TParam,
+ bool TDumpTlvStream,
+ NDIS_STATUS (*TParseFn)(ULONG, const UINT8*, PCTLV_CONTEXT, TParam*),
+ void (*TCleanupFn)(TParam*),
+ NTSTATUS (WifiHAL::*TPreFn)(), // optional pre-check hook (may be nullptr)
+ NTSTATUS (WifiHAL::*TPropertyFn)(const TParam&, void*, ULONG, ULONG&) // mandatory property HAL handler
+>
+struct PropertyM3Traits
+{
+ using ParamType = TParam;
+
+ NTSTATUS Parse(TransitionContext& ctx, ParamType& p)
+ {
+ if (ctx.InLen < sizeof(WDI_MESSAGE_HEADER))
+ {
+ return STATUS_INVALID_PARAMETER;
+ }
+
+ auto* tlvBytes = static_cast<UCHAR*>(ctx.RawBuffer) + sizeof(WDI_MESSAGE_HEADER);
+ auto tlvLen = static_cast<ULONG>(ctx.InLen - sizeof(WDI_MESSAGE_HEADER));
+
+ if (TDumpTlvStream)
+ {
+ DumpMessageTlvByteStream(TMsgId, TRUE, ctx.DevCtx->TlvContext.PeerVersion, tlvLen, tlvBytes, 0, nullptr);
+ }
+
+ auto ndisStatus = TParseFn(tlvLen, tlvBytes, &ctx.DevCtx->TlvContext, &p);
+ return Wifi::ConvertNDISSTATUSToNTSTATUS(ndisStatus);
+ }
+
+ void Cleanup(ParamType& p) { TCleanupFn(&p); }
+
+ // Runs the optional pre-check then the property handler. The handler writes the
+ // out-buffer and reports the number of bytes written.
+ NTSTATUS Handle(TransitionContext& ctx, ParamType& p, ULONG& bytesWritten)
+ {
+ bytesWritten = sizeof(WDI_MESSAGE_HEADER);
+
+ WifiHAL* hal = GetWifiHalFromHandle(ctx.Device);
+
+ if (TPreFn)
+ {
+ NTSTATUS preStatus = (hal->*TPreFn)();
+ if (!NT_SUCCESS(preStatus))
+ {
+ return preStatus;
+ }
+ }
+
+ return (hal->*TPropertyFn)(p, ctx.RawBuffer, ctx.OutLen, bytesWritten);
+ }
+};
+
+// Primary traits template for property GET/SET messages (specialize per MessageId)
+template<UINT16 MsgId>
+struct PropertyTraits;
+
+// Generic runner for property GET/SET messages: parse -> handle -> complete (M3).
+// Completes the request synchronously with the number of bytes the HAL wrote.
+template<UINT16 MsgId>
+NTSTATUS RunPropertyM3(TransitionContext& ctx)
+{
+ PropertyTraits<MsgId> traits;
+ typename PropertyTraits<MsgId>::ParamType params{};
+
+ NTSTATUS status = traits.Parse(ctx, params);
+ if (!NT_SUCCESS(status))
+ {
+ traits.Cleanup(params);
+ WifiRequestComplete(ctx.WifiRequest, status, sizeof(WDI_MESSAGE_HEADER));
+ return status;
+ }
+
+ ULONG bytesWritten = sizeof(WDI_MESSAGE_HEADER);
+ status = traits.Handle(ctx, params, bytesWritten);
+
+ traits.Cleanup(params);
+ WifiRequestComplete(ctx.WifiRequest, status, bytesWritten);
+ return status;
+}
+
+//// -------- SCENARIO: [Connect with a SAE WI-FI7 network --------
+/// Demo: Handle WDI_TASK_CONNECT + WDI_SET_SAE_AUTH_PARAMS then WDI_TASK_DISCONNECT
+/// Scope:
+/// -WifiRequest WDI_TASK_CONNECT & WDI_TASK_DISCONNECT are both WIFICX task commands, which is a two step M3/M4 transition
+/// -The direct WifiRequest WDI_SET_SAE_AUTH_PARAMS, which is a single step transition but
+/// is logically part of the connect scenario. since WDI_SET_SAE_AUTH_PARAMS is WIFICX property command,
+/// it only has M3 step, no M4 step.
+/// - The WifiCx unsolicited indication e.g. WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED is sent from the HAL during the connect process,
+/// Notes:
+/// - M3 and M4 status mainly used for WifiCx to track progress of the transition. e.g. the hung detection and trigger recovery.
+/// - The actual scenario result is reported through unsolicited indication.
+///
+
+// -------- WDI_TASK_CONNECT --------
+template<>
+struct TransitionTraits<WDI_TASK_CONNECT>
+ : GenericTransitionTraits <
+ WDI_TASK_CONNECT,
+ WDI_TASK_CONNECT_PARAMETERS,
+ WDI_INDICATION_CONNECT_COMPLETE,
+ true, // dump TLV stream? (was true in original)
+ ParseWdiTaskConnect,
+ CleanupParsedWdiTaskConnect,
+ &WifiHAL::WifiIhvIsDeviceReadyForRequest, // pre-M3
+ &WifiHAL::WifiIhvConnect, // HAL M3
+ &WifiHAL::WifiIhvGetPendingTransitionStatus, // pre-M4
+ nullptr
+ >
+{
+};
+
+// --- WDI_SET_SAE_AUTH_PARAMS ---
+template<>
+struct TransitionTraits<WDI_SET_SAE_AUTH_PARAMS>
+ : GenericTransitionTraits<
+ WDI_SET_SAE_AUTH_PARAMS,
+ WDI_SET_SAE_AUTH_PARAMS_COMMAND,
+ WDI_INDICATION_CONNECT_COMPLETE,
+ false, // dump TLV stream? (was false in original)
+ ParseWdiSetSaeAuthParams,
+ CleanupParsedWdiSetSaeAuthParams,
+ &WifiHAL::WifiIhvIsDeviceReadyForRequest, // pre-M3
+ &WifiHAL::WifiIhvSetSaeAuthParams, // HAL M3
+ &WifiHAL::WifiIhvGetPendingTransitionStatus, // pre-M4
+ nullptr// HAL M4
+ >
+{};
+
+// -------- WDI_TASK_DISCONNECT --------
+template<>
+struct TransitionTraits<WDI_TASK_DISCONNECT>
+ : GenericTransitionTraits<
+ WDI_TASK_DISCONNECT,
+ WDI_TASK_DISCONNECT_PARAMETERS,
+ WDI_INDICATION_DISCONNECT_COMPLETE,
+ false, // dump TLV stream? (was false in original)
+ ParseWdiTaskDisconnect,
+ CleanupParsedWdiTaskDisconnect,
+ &WifiHAL::WifiIhvIsDeviceReadyForRequest, // pre-M3
+ &WifiHAL::WifiIhvDisconnect, // HAL M3
+ &WifiHAL::WifiIhvGetPendingTransitionStatus, // pre-M4
+ nullptr // HAL M4
+ >
+{
+};
+/// ----- End of scenario [Connect with a SAE WI-FI7 network]-----
+
+// -------- WDI_TASK_DOT11_RESET --------
+template<>
+struct TransitionTraits<WDI_TASK_DOT11_RESET>
+ : GenericTransitionTraits <
+ WDI_TASK_DOT11_RESET,
+ WDI_TASK_DOT11_RESET_PARAMETERS,
+ WDI_INDICATION_DOT11_RESET_COMPLETE,
+ false, // dump TLV stream? (was false in original)
+ ParseWdiTaskDot11Reset,
+ CleanupParsedWdiTaskDot11Reset,
+ &WifiHAL::WifiIhvIsDeviceReadyForRequest, // pre-M3
+ &WifiHAL::WifiIhvReset, // HAL M3
+ &WifiHAL::WifiIhvGetPendingTransitionStatus, // pre-M4
+ nullptr // HAL M4
+ >
+{
+};
+
+// -------- WDI_TASK_SCAN --------
+template<>
+struct TransitionTraits<WDI_TASK_SCAN>
+ : GenericTransitionTraits <
+ WDI_TASK_SCAN,
+ WDI_SCAN_PARAMETERS,
+ WDI_INDICATION_SCAN_COMPLETE,
+ true, // dump TLV stream? (was true in original)
+ ParseWdiTaskScan,
+ CleanupParsedWdiTaskScan,
+ &WifiHAL::WifiIhvIsDeviceReadyForRequest, // pre-M3
+ &WifiHAL::WifiIhvScan, // HAL M3
+ &WifiHAL::WifiIhvGetPendingTransitionStatus, // pre-M4
+ nullptr // HAL M4
+ >
+{
+};
+
+// -------- WDI_TASK_SET_RADIO_STATE --------
+template<>
+struct TransitionTraits<WDI_TASK_SET_RADIO_STATE>
+ : GenericTransitionTraits <
+ WDI_TASK_SET_RADIO_STATE,
+ WDI_SET_RADIO_STATE_PARAMETERS,
+ WDI_INDICATION_SET_RADIO_STATE_COMPLETE,
+ true, // dump TLV stream? (was true in original)
+ ParseWdiTaskSetRadioState,
+ CleanupParsedWdiTaskSetRadioState,
+ &WifiHAL::WifiIhvIsDeviceReadyForRequest, // pre-M3
+ &WifiHAL::WifiIhvSetRadioState, // HAL M3
+ &WifiHAL::WifiIhvGetPendingTransitionStatus, // pre-M4
+ nullptr // HAL M4
+ >
+{
+};
+
+// -------- WDI_GET_SUPPORTED_DEVICE_SERVICES (property GET) --------
+// Request body is empty (header sufficient); the HAL produces the
+// WDI_TLV_DEVICE_SERVICE_GUID_LIST result into the out-buffer.
+template<>
+struct PropertyTraits<WDI_GET_SUPPORTED_DEVICE_SERVICES>
+ : PropertyM3Traits<
+ WDI_GET_SUPPORTED_DEVICE_SERVICES,
+ WDI_GET_SUPPORTED_DEVICE_SERVICES_INPUTS,
+ true, // dump TLV stream
+ ParseWdiGetSupportedDeviceServices,
+ CleanupParsedWdiGetSupportedDeviceServices,
+ &WifiHAL::WifiIhvIsDeviceReadyForRequest, // pre-check
+ &WifiHAL::WifiIhvGetSupportedDeviceServices // property handler
+ >
+{};
+
+// -------- WDI_DEVICE_SERVICE_COMMAND (property SET/GET) --------
+// Reads the request data blob (WDI_TLV_DEVICE_SERVICE_PARAMS_*) and the HAL writes
+// the response data blob into the out-buffer.
+template<>
+struct PropertyTraits<WDI_DEVICE_SERVICE_COMMAND>
+ : PropertyM3Traits<
+ WDI_DEVICE_SERVICE_COMMAND,
+ WDI_DEVICE_SERVICE_COMMAND_INPUTS,
+ true, // dump TLV stream
+ ParseWdiDeviceServiceCommand,
+ CleanupParsedWdiDeviceServiceCommand,
+ &WifiHAL::WifiIhvIsDeviceReadyForRequest, // pre-check
+ &WifiHAL::WifiIhvDeviceServiceCommand // property handler
+ >
+{};
+
+// Runtime dispatcher switches on MessageId and invokes the matching compile-time runner.
+NTSTATUS RunTransitionByMessage(TransitionContext& ctx, UINT16 messageId)
+{
+ switch (messageId)
+ {
+ case WDI_TASK_SET_RADIO_STATE:
+ return RunTransition<WDI_TASK_SET_RADIO_STATE>(ctx);
+ case WDI_TASK_SCAN:
+ return RunTransition<WDI_TASK_SCAN>(ctx);
+ case WDI_TASK_DOT11_RESET:
+ return RunTransition<WDI_TASK_DOT11_RESET>(ctx);
+ case WDI_TASK_CONNECT:
+ return RunTransition<WDI_TASK_CONNECT>(ctx);
+ case WDI_TASK_DISCONNECT:
+ return RunTransition<WDI_TASK_DISCONNECT>(ctx);
+ case WDI_SET_SAE_AUTH_PARAMS:
+ return RunTransition<WDI_SET_SAE_AUTH_PARAMS>(ctx);
+ case WDI_GET_SUPPORTED_DEVICE_SERVICES:
+ return RunPropertyM3<WDI_GET_SUPPORTED_DEVICE_SERVICES>(ctx);
+ case WDI_DEVICE_SERVICE_COMMAND:
+ return RunPropertyM3<WDI_DEVICE_SERVICE_COMMAND>(ctx);
+ default:
+ UINT bytesWritten = sizeof(WDI_MESSAGE_HEADER);
+ WifiRequestComplete(ctx.WifiRequest, STATUS_NOT_SUPPORTED, bytesWritten);
+ return STATUS_NOT_SUPPORTED;
+ }
+} \ No newline at end of file
diff --git a/network/wlan/wificx/drivercode/wifitransition.h b/network/wlan/wificx/drivercode/wifitransition.h
new file mode 100644
index 00000000..c48d4a78
--- /dev/null
+++ b/network/wlan/wificx/drivercode/wifitransition.h
@@ -0,0 +1,20 @@
+// Copyright (C) Microsoft Corporation. All rights reserved.
+#pragma once
+#include "precomp.h"
+#include "wifiHAL.h"
+#include "wifirequest.h"
+
+// Generic execution context passed between steps and parse/handle
+struct TransitionContext
+{
+ WDFDEVICE Device;
+ PWIFI_IHV_DEVICE_CONTEXT DevCtx;
+ WIFIREQUEST WifiRequest;
+ PWDI_MESSAGE_HEADER Header;
+ void* RawBuffer; // from WifiRequestGetInOutBuffer in EvtWifiDeviceSendCommand
+ UINT InLen;
+ UINT OutLen;
+};
+
+// -------- Runtime dispatcher (decl) --------
+NTSTATUS RunTransitionByMessage(TransitionContext& ctx, UINT16 messageId); \ No newline at end of file