diff options
| author | Yang You (UU) <[email protected]> | 2025-11-10 12:29:39 -0800 |
|---|---|---|
| committer | Yang You (UU) <[email protected]> | 2025-11-10 12:29:39 -0800 |
| commit | bddbce760509546060b3ccc28a9891b2412d2824 (patch) | |
| tree | caa3a743eea9f388e5e4eb4258416259a22834e3 | |
| parent | af60c12439cf289a8fcb670abc4e7cca76e32a4f (diff) | |
have the buildable KM and UM solutions for Wifi only scenarios.
20 files changed, 10579 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..237f5997 --- /dev/null +++ b/network/wlan/WIFICX/drivercode/SharedTypes.h @@ -0,0 +1,82 @@ +// 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 + +// ============================= +// WDF Object Context Types +// ============================= + +typedef struct _WIFI_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; + UCHAR CurrentRadioState; + WDI_GET_ADAPTER_CAPABILITIES_PARAMETERS AdapterCapabilities; + TLV_CONTEXT TlvContext; + UINT32 LastConnectEntryId; + UINT32 LastConnectTransactionId; + WDI_AUTH_ALGORITHM LastAuthAlgo; + DOT11_MAC_ADDRESS ConnectedPeer; + NETADAPTER primaryStaAdapter; +} WIFI_DEVICE_CONTEXT, * PWIFI_DEVICE_CONTEXT; + +WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(WIFI_DEVICE_CONTEXT, WifiGetDeviceContext); +static_assert(FIELD_OFFSET(WIFI_DEVICE_CONTEXT, WdfTriageInfoPtr) == 0); + +// Context for each NetAdapter instance. +// Each NetAdapter instance corresponds to an IP interface +// +typedef struct _WIFI_NETADAPTER_CONTEXT +{ + PWIFI_DEVICE_CONTEXT WifiDeviceContext; // Wdf device context + NETADAPTER NetAdapter; // NetAdapter object + + LIST_ENTRY ReceiveList; + NETPACKETQUEUE TxQueue; // Tx Queue object + NETPACKETQUEUE RxQueue; // Rx Queue object + bool CanReportWifiWakeSourceTypeClientDriverDiagnostic; +} WIFI_NETADAPTER_CONTEXT, * PWIFI_NETADAPTER_CONTEXT; + +WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(WIFI_NETADAPTER_CONTEXT, WifiGetNetAdapterContext); + +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); diff --git a/network/wlan/WIFICX/drivercode/adapter.cpp b/network/wlan/WIFICX/drivercode/adapter.cpp new file mode 100644 index 00000000..e0ea86e6 --- /dev/null +++ b/network/wlan/WIFICX/drivercode/adapter.cpp @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +#include "precomp.h" + +#include "device.h" + +#include "adapter.h" +#include "adapter.tmh" + +_Use_decl_annotations_ +NTSTATUS WifiCxTestAdapterStart(NETADAPTER netAdapter) +{ + TraceEntry(); + + ULONG64 maxXmitLinkSpeed = WIFI_MEDIA_MAX_SPEED; + ULONG64 maxRcvLinkSpeed = WIFI_MEDIA_MAX_SPEED; + + NET_ADAPTER_LINK_LAYER_CAPABILITIES linkLayerCapabilities; + NET_ADAPTER_LINK_LAYER_CAPABILITIES_INIT(&linkLayerCapabilities, maxXmitLinkSpeed, maxRcvLinkSpeed); + + NetAdapterSetLinkLayerCapabilities(netAdapter, &linkLayerCapabilities); + + NetAdapterSetLinkLayerMtuSize(netAdapter, WIFI_MAX_PACKET_SIZE); + + static WDI_MAC_ADDRESS STAAddress = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05}; + NET_ADAPTER_LINK_LAYER_ADDRESS permanentLinkLayerAddress; + NET_ADAPTER_LINK_LAYER_ADDRESS_INIT(&permanentLinkLayerAddress, sizeof(WDI_MAC_ADDRESS), STAAddress.Address); + NetAdapterSetPermanentLinkLayerAddress(netAdapter, &permanentLinkLayerAddress); + + 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(netAdapter, &wakeCap); + + NTSTATUS status = NetAdapterStart(netAdapter); + ASSERT(STATUS_SUCCESS == status); + + TraceExit(status); + + return status; +} diff --git a/network/wlan/WIFICX/drivercode/adapter.h b/network/wlan/WIFICX/drivercode/adapter.h new file mode 100644 index 00000000..33a886f0 --- /dev/null +++ b/network/wlan/WIFICX/drivercode/adapter.h @@ -0,0 +1,21 @@ +// Copyright (C) Microsoft Corporation. All rights reserved. +#pragma once + +#include "device.h" + +// packet and header sizes +#define WIFI_MAX_PACKET_SIZE (1514) + +// maximum link speed for send and recv in bps +#define WIFI_MEDIA_MAX_SPEED 1'000'000'000 + +// +// NetAdapter functions +// + +EVT_NET_ADAPTER_CREATE_TXQUEUE EvtAdapterCreateTxQueue; +EVT_NET_ADAPTER_CREATE_RXQUEUE EvtAdapterCreateRxQueue; + +EVT_WDF_DEVICE_CONTEXT_DESTROY MbbDestroyAdapterContext; + +NTSTATUS WifiCxTestAdapterStart(_In_ NETADAPTER netAdapter); diff --git a/network/wlan/WIFICX/drivercode/device.cpp b/network/wlan/WIFICX/drivercode/device.cpp new file mode 100644 index 00000000..dbd03566 --- /dev/null +++ b/network/wlan/WIFICX/drivercode/device.cpp @@ -0,0 +1,125 @@ +//------------------------------------------------------------------------------- +// Net Adapter source file +// +// 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); + UNREFERENCED_PARAMETER(device); + NTSTATUS status = STATUS_SUCCESS; + + //status = WifiCxTestSetDeviceCapabilities(device); + + if (!NT_SUCCESS(status)) + { + WFCError("%!FUNC!: WifiCxTestSetDeviceCapabilities failed with %!STATUS!", status); + return status; + } + + WFCInfo("Device=0x%p", device); + return status; +} + +_Use_decl_annotations_ +NTSTATUS EvtDeviceReleaseHardware(WDFDEVICE device, WDFCMRESLIST resourcesTranslated) +{ + UNREFERENCED_PARAMETER(device); + UNREFERENCED_PARAMETER(resourcesTranslated); + + WFCInfo("Device=0x%p", device); + + return STATUS_SUCCESS; +} + +_Use_decl_annotations_ +void EvtDeviceSurpriseRemoval(WDFDEVICE device) +{ + UNREFERENCED_PARAMETER(device); + WFCInfo("Device=0x%p is surprise removed", device); +} + +static NTSTATUS WifiInitAdapterContext(_In_ WDFDEVICE Device, _In_ NETADAPTER NetAdapter) +{ + PWIFI_DEVICE_CONTEXT deviceContext = WifiGetDeviceContext(Device); + PWIFI_NETADAPTER_CONTEXT netAdapterContext = WifiGetNetAdapterContext(NetAdapter); + NTSTATUS status = STATUS_SUCCESS; + + deviceContext->LastConnectEntryId = 0; // Disconnected State + deviceContext->LastConnectTransactionId = 0; + deviceContext->CurrentRadioState = TRUE; + if (deviceContext->primaryStaAdapter == WDF_NO_HANDLE) + { + deviceContext->primaryStaAdapter = NetAdapter; + } + + InitializeListHead(&netAdapterContext->ReceiveList); + netAdapterContext->WifiDeviceContext = deviceContext; + netAdapterContext->NetAdapter = NetAdapter; + return status; +} + +_Use_decl_annotations_ +NTSTATUS EvtWifiDeviceCreateAdapter(WDFDEVICE Device, NETADAPTER_INIT* AdapterInit) +{ + + //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, WIFI_NETADAPTER_CONTEXT); + adapterAttributes.EvtCleanupCallback = EvtAdapterCleanup; + + 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; + } + + ntStatus = WifiInitAdapterContext(Device, netAdapter); + ASSERT(NT_SUCCESS(ntStatus)); + if (!NT_SUCCESS(ntStatus)) + { + WFCError("%!FUNC!: WifiInitAdapterContext failed with %!STATUS!", ntStatus); + return ntStatus; + } + + ntStatus = WifiCxTestAdapterStart(netAdapter); + ASSERT(NT_SUCCESS(ntStatus)); + if (!NT_SUCCESS(ntStatus)) + { + WFCError("%!FUNC!: WifiCxTestAdapterStart failed with %!STATUS!", ntStatus); + return ntStatus; + } + + return ntStatus; +} + +_Use_decl_annotations_ +void EvtAdapterCleanup(_In_ WDFOBJECT NetAdapter) +{ + UNREFERENCED_PARAMETER(NetAdapter); + TraceEntry(); + TraceExit(STATUS_SUCCESS); +}
\ No newline at end of file diff --git a/network/wlan/WIFICX/drivercode/device.h b/network/wlan/WIFICX/drivercode/device.h new file mode 100644 index 00000000..ba716fe6 --- /dev/null +++ b/network/wlan/WIFICX/drivercode/device.h @@ -0,0 +1,11 @@ +// Copyright (C) Microsoft Corporation. All rights reserved. +#pragma once + +EVT_WDF_DEVICE_PREPARE_HARDWARE EvtDevicePrepareHardware; +EVT_WDF_DEVICE_RELEASE_HARDWARE EvtDeviceReleaseHardware; +EVT_WDF_DEVICE_SURPRISE_REMOVAL EvtDeviceSurpriseRemoval; + +EVT_WIFI_DEVICE_CREATE_ADAPTER EvtWifiDeviceCreateAdapter; +EVT_WIFI_DEVICE_CREATE_WIFIDIRECTDEVICE EvtWifiDeviceCreateWifiDirectDevice; +EVT_WIFI_DEVICE_SEND_COMMAND EvtWifiDeviceSendCommand; +EVT_WDF_OBJECT_CONTEXT_CLEANUP EvtAdapterCleanup; diff --git a/network/wlan/WIFICX/drivercode/driver.cpp b/network/wlan/WIFICX/drivercode/driver.cpp new file mode 100644 index 00000000..2b0e2658 --- /dev/null +++ b/network/wlan/WIFICX/drivercode/driver.cpp @@ -0,0 +1,137 @@ +//------------------------------------------------------------------------------- +// Net Adapter source file +// +// Copyright (c) Microsoft Corporation. All rights reserved. + +#include "precomp.h" + +#include "device.h" +#include "driver.tmh" + +EXTERN_C __declspec(code_seg("INIT")) DRIVER_INITIALIZE DriverEntry; +EVT_WDF_DRIVER_UNLOAD EvtDriverUnload; +EVT_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd; + + + +#if __cplusplus >= 201703L +#define MAYBE_UNUSED [[maybe_unused]] +#else +#define MAYBE_UNUSED +#endif + +__declspec(code_seg("INIT")) NTSTATUS DriverEntry(_In_ PDRIVER_OBJECT driverObject, _In_ PUNICODE_STRING registryPath) +{ + NTSTATUS status = STATUS_SUCCESS; + + WPP_INIT_TRACING(driverObject, registryPath); + TraceEntry(); + + WDF_DRIVER_CONFIG driverConfig; + WDF_DRIVER_CONFIG_INIT(&driverConfig, EvtDriverDeviceAdd); + driverConfig.DriverPoolTag = WIFI_DRIVER_DEFAULT_POOL_TAG; + + driverConfig.EvtDriverUnload = EvtDriverUnload; + + WDFDRIVER driver; + status = WdfDriverCreate(driverObject, registryPath, WDF_NO_OBJECT_ATTRIBUTES, &driverConfig, &driver); + if (!NT_SUCCESS(status)) + { + WFCError("WdfDriverCreate failed 0x%x", status); + goto Exit; + } + +Exit: + TraceExit(status); + + if (!NT_SUCCESS(status)) + { + WPP_CLEANUP(driverObject); + } + + return status; +} + +NTSTATUS EvtDriverDeviceAdd(_In_ WDFDRIVER driver, _Inout_ PWDFDEVICE_INIT deviceInit) +{ + UNREFERENCED_PARAMETER(driver); + + TraceEntry(); + + NTSTATUS status = STATUS_SUCCESS; + + status = NetDeviceInitConfig(deviceInit); + if (!NT_SUCCESS(status)) + { + WFCError("NetDeviceInitConfig failed, status=0x%x", status); + goto Exit; + } + + status = WifiDeviceInitConfig(deviceInit); + if (!NT_SUCCESS(status)) + { + WFCError("WifiDeviceInitConfig failed, status=0x%x", status); + goto Exit; + } + + WDF_OBJECT_ATTRIBUTES deviceAttributes; + WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&deviceAttributes, WIFI_DEVICE_CONTEXT); + + WDF_PNPPOWER_EVENT_CALLBACKS pnpPowerCallbacks; + WDF_PNPPOWER_EVENT_CALLBACKS_INIT(&pnpPowerCallbacks); + pnpPowerCallbacks.EvtDevicePrepareHardware = EvtDevicePrepareHardware; + pnpPowerCallbacks.EvtDeviceReleaseHardware = EvtDeviceReleaseHardware; + pnpPowerCallbacks.EvtDeviceSurpriseRemoval = EvtDeviceSurpriseRemoval; + + WdfDeviceInitSetPnpPowerEventCallbacks(deviceInit, &pnpPowerCallbacks); + + WDFDEVICE wdfDevice; + status = WdfDeviceCreate(&deviceInit, &deviceAttributes, &wdfDevice); + if (!NT_SUCCESS(status)) + { + WFCError("WdfDeviceCreate failed, status=0x%x", status); + goto Exit; + } + + status = WdfDeviceCreateDeviceInterface(wdfDevice, &GUID_WIFICX_SAMPLE_CLIENT_INTERFACE, nullptr); + if (!NT_SUCCESS(status)) + { + WFCError("WdfDeviceCreateDeviceInterface failed with status=0x%x", status); + goto Exit; + } + + // Set the device to be not ejectable + WDF_DEVICE_PNP_CAPABILITIES pnpCapabilities; + WDF_DEVICE_PNP_CAPABILITIES_INIT(&pnpCapabilities); + pnpCapabilities.SurpriseRemovalOK = WdfTrue; + WdfDeviceSetPnpCapabilities(wdfDevice, &pnpCapabilities); + + WIFI_DEVICE_CONFIG wifiDeviceConfig; + WIFI_DEVICE_CONFIG_INIT( + &wifiDeviceConfig, WDI_VERSION_LATEST, EvtWifiDeviceSendCommand, EvtWifiDeviceCreateAdapter, nullptr); + + status = WifiDeviceInitialize(wdfDevice, &wifiDeviceConfig); + if (!NT_SUCCESS(status)) + { + WFCError("WifiDeviceInitialize failed, status=0x%x", status); + goto Exit; + } + + PWIFI_DEVICE_CONTEXT deviceContext = WifiGetDeviceContext(wdfDevice); + deviceContext->WdfDevice = wdfDevice; + deviceContext->WdfTriageInfoPtr = WdfGetTriageInfo(); + + deviceContext->TlvContext.AllocationContext = 0; + deviceContext->TlvContext.PeerVersion = WifiDeviceGetOsWdiVersion(wdfDevice); + +Exit: + TraceExit(status); + return status; +} + +void EvtDriverUnload(MAYBE_UNUSED _In_ WDFDRIVER driver) +{ + TraceEntry(); + UNREFERENCED_PARAMETER(driver); + WPP_CLEANUP(WdfDriverWdmGetDriverObject(driver)); +} diff --git a/network/wlan/WIFICX/drivercode/memorymanagement.cpp b/network/wlan/WIFICX/drivercode/memorymanagement.cpp new file mode 100644 index 00000000..8c6d56d0 --- /dev/null +++ b/network/wlan/WIFICX/drivercode/memorymanagement.cpp @@ -0,0 +1,150 @@ +/*++ + +Copyright (c) Microsoft Corporation. All rights reserved. + + Microsoft Confidential + + THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR + PURPOSE. + +Module Name: + + new.cpp + +Abstract: + + Test only stub WDI driver (C++ portions) + +Environment: + + Kernel mode + +Author: + + +--*/ +#include "precomp.h" + +#ifndef _KERNEL_MODE +#include <intrin.h> // for _ReturnAddress for user mode +#endif // UM + +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) +{ + return AllocateWdfMemoryBuffer(Size, _ReturnAddress()); +} + +__forceinline void* __cdecl operator new(size_t _Size, ULONG_PTR AllocationContext) throw() +{ + if (AllocationContext != 0) + { + return PlacementNewHelper(_Size, (PPLACEMENT_NEW_ALLOCATION_CONTEXT)AllocationContext); + } + return AllocateWdfMemoryBuffer(_Size, _ReturnAddress()); +} + +void __cdecl operator delete(void* pData) +{ + FreeWdfMemoryBuffer(pData); +} + +void __cdecl operator delete[](void* pData) +{ + FreeWdfMemoryBuffer(pData); +} + +void __cdecl operator delete(void* pData, ULONG_PTR) +{ + FreeWdfMemoryBuffer(pData); +} + +void __cdecl operator delete[](void* pData, ULONG_PTR) +{ + FreeWdfMemoryBuffer(pData); +} diff --git a/network/wlan/WIFICX/drivercode/precomp.h b/network/wlan/WIFICX/drivercode/precomp.h new file mode 100644 index 00000000..c08123a1 --- /dev/null +++ b/network/wlan/WIFICX/drivercode/precomp.h @@ -0,0 +1,32 @@ +// Copyright (C) Microsoft Corporation. All rights reserved. +#pragma once + +//#include <initguid.h> + +#ifdef _KERNEL_MODE + #include <ntddk.h> +#else + #include <windows.h> + #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" + +//#include "device.h" +//#include "adapter.h" + +//#include "wifirequest.h" diff --git a/network/wlan/WIFICX/drivercode/testdata.h b/network/wlan/WIFICX/drivercode/testdata.h new file mode 100644 index 00000000..f8f83f63 --- /dev/null +++ b/network/wlan/WIFICX/drivercode/testdata.h @@ -0,0 +1,7439 @@ +/*++ + +Copyright (c) Microsoft Corporation. All rights reserved. + + Microsoft Confidential + + THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR + PURPOSE. + +Module Name: + + TestData.h + +Abstract: + + Test only Network data + +Environment: + + Kernel mode + +Author: + + +--*/ + +#pragma once + +#define TESTMP_BAND_IHV 0x00000010 + +typedef struct +{ + UINT32 BandId; + WDI_MAC_ADDRESS* pMacAddress; + PUCHAR pTlvBssEntry; + UINT32 TlvBssEntrySize; + PUCHAR pTlvAssociationResult; + UINT32 TlvAssociationResultSize; + +} WdiTestConnectEntry, *PWdiTestConnectEntry; + +// +//=============================================================================== +// 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, + +}; + +//=============================================================================== +//=============================================================================== + +// clang-format on diff --git a/network/wlan/WIFICX/drivercode/trace.h b/network/wlan/WIFICX/drivercode/trace.h new file mode 100644 index 00000000..7bbda1fa --- /dev/null +++ b/network/wlan/WIFICX/drivercode/trace.h @@ -0,0 +1,247 @@ +// +// Copyright (C) Microsoft. All rights reserved. +// +#pragma once +#ifndef TRACE_H +#define TRACE_H + +//extern "C" +//{ +//#include <WppRecorder.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_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 +// + +// +// C++ with Activity ID function entry/exit commands +// +// begin_wpp config +// +// USEPREFIX (TraceActEntry, "%!STDPREFIX! [O:%p][A:%x]", this, this->get_ActivityId()); +// FUNC TraceActEntry{LEVEL=TRACE_LEVEL_VERBOSE}(...); +// USESUFFIX (TraceActEntry, "--> %!FUNC!"); +// +// USEPREFIX (TraceActExit, "%!STDPREFIX! [O:%p][A:%x]", this, this->get_ActivityId()); +// FUNC TraceActExit{LEVEL=TRACE_LEVEL_VERBOSE}(EXP); +// USESUFFIX (TraceActExit, "<-- %!FUNC!: 0x%x", EXP); +// +// end_wpp +// + +// +// C++ with Activity ID trace commands +// +// begin_wpp config +// +// USEPREFIX (WFCActError, "%!STDPREFIX! [O:%p][A:%x][ERROR]", this, this->get_ActivityId()); +// FUNC WFCActError{LEVEL=TRACE_LEVEL_ERROR}(MSG, ...); +// +// USEPREFIX (WFCActErrorStatus, "%!STDPREFIX! [O:%p][A:%x][ERROR=%x]", this, this->get_ActivityId(), status); +// FUNC WFCActErrorStatus{LEVEL=TRACE_LEVEL_ERROR}(MSG, ...); +// +// USEPREFIX (WFCActInfo, "%!STDPREFIX! [O:%p][A:%x][INFO]", this, this->get_ActivityId()); +// FUNC WFCActInfo{LEVEL=TRACE_LEVEL_INFORMATION}(MSG, ...); +// +// USEPREFIX (WFCActTrace, "%!STDPREFIX! [O:%p][A:%x][TRACE]", this, this->get_ActivityId()); +// FUNC WFCActTrace{LEVEL=TRACE_LEVEL_VERBOSE}(MSG, ...); +// +// end_wpp +// + +// +// C++ with Port ID trace commands +// +// begin_wpp config +// +// USEPREFIX (WFCPortError, "%!STDPREFIX! [O:%p][P:%x][ERROR]", this, this->GetPortId()); +// FUNC WFCPortError{LEVEL=TRACE_LEVEL_ERROR}(MSG, ...); +// +// USEPREFIX (WFCPortErrorStatus, "%!STDPREFIX! [O:%p][P:%x][ERROR=%x]", this, this->GetPortId(), status); +// FUNC WFCPortErrorStatus{LEVEL=TRACE_LEVEL_ERROR}(MSG, ...); +// +// USEPREFIX (WFCPortInfo, "%!STDPREFIX! [O:%p][P:%x][INFO]", this, this->GetPortId()); +// FUNC WFCPortInfo{LEVEL=TRACE_LEVEL_INFORMATION}(MSG, ...); +// +// USEPREFIX (WFCPortTrace, "%!STDPREFIX! [O:%p][P:%x][TRACE]", this, this->GetPortId()); +// FUNC WFCPortTrace{LEVEL=TRACE_LEVEL_VERBOSE}(MSG, ...); +// +// end_wpp +// + +#define MACRO_START \ + do \ + { +#define MACRO_END \ + } \ + while (0) + +// +// WPP Macros: WX_RETURN_IF_NOT_NT_SUCCESS_MSG +// +// begin_wpp config +// FUNC WX_RETURN_IF_NOT_NT_SUCCESS_MSG{COMPNAME=DUMMY,LEVEL=TRACE_LEVEL_ERROR}(NTEXPR,MSG,...); +// USEPREFIX (WX_RETURN_IF_NOT_NT_SUCCESS_MSG, "%!STDPREFIX! !! WifiCx - %!FUNC!: "); +// USESUFFIX (WX_RETURN_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! !! WifiCx - %!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! !! WifiCx - %!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 = {0}; + 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(WFC_RX_PEER_STATE, ItemEnum(_WFC_RX_PEER_STATE)); +// +// CUSTOM_TYPE(MESSAGE_ID, ItemEnum(WDI_TLV::ENUMS::MESSAGE_ID)); +// CUSTOM_TYPE(WFC_PORT_PROPERTY_NAME, ItemEnum(WFC_PORT_PROPERTY_NAME)); +// CUSTOM_TYPE(DisconnectInDxReason, ItemEnum(CSetPowerJob::DisconnectInDxReason)); +// CUSTOM_TYPE(WFC_JOB_TYPE, ItemEnum(_WFC_JOB_TYPE)); +// CUSTOM_TYPE(ConfigurableActionFrameWakePatterns, ItemEnum(ConfigurableActionFrameWakePatterns)); +// CUSTOM_TYPE(WFC_PORT_TYPE, ItemEnum(_WFC_PORT_TYPE)); +// 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..cc74cd83 --- /dev/null +++ b/network/wlan/WIFICX/drivercode/umkmfusion.h @@ -0,0 +1,89 @@ +// 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; + } + + _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/wifirequest.cpp b/network/wlan/WIFICX/drivercode/wifirequest.cpp new file mode 100644 index 00000000..06703795 --- /dev/null +++ b/network/wlan/WIFICX/drivercode/wifirequest.cpp @@ -0,0 +1,1521 @@ +//------------------------------------------------------------------------------- +// Net Adapter source file +// +// Copyright (c) Microsoft Corporation. All rights reserved. + +#include "precomp.h" +#include "testdata.h" +#include <ndis\status.h> +#include "wifirequest.h" +#include "wifirequest.tmh" + +// clang-format off + + +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, +#ifdef DMG_CAPABILITIES + s_TLV_BSS_Entry_9_11ad_ProbeResponse_Dmg_PSK, sizeof(s_TLV_BSS_Entry_9_11ad_ProbeResponse_Dmg_PSK), + s_TLV_Success_AssociationResult_9_11ad_Dmg_PSK, sizeof(s_TLV_Success_AssociationResult_9_11ad_Dmg_PSK), +#else + 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), +#endif // DMG_CAPABILITIES + }, + + // 10 - WDI_ad_1x + { + WDI_BAND_ID_60000, + &s_Connect_Addr_10_11ad_1x, +#ifdef DMG_CAPABILITIES + s_TLV_BSS_Entry_10_11ad_ProbeResponse_Dmg_1x, sizeof(s_TLV_BSS_Entry_10_11ad_ProbeResponse_Dmg_1x), + s_TLV_Success_AssociationResult_10_11ad_Dmg_1x, sizeof(s_TLV_Success_AssociationResult_10_11ad_Dmg_1x), +#else + 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), +#endif // DMG_CAPABILITIES + }, + + // 11 - WDI_ad_ON + { + WDI_BAND_ID_60000, + &s_Connect_Addr_11_11ad_Open, +#ifdef DMG_CAPABILITIES + s_TLV_BSS_Entry_11_11ad_ProbeResponse_Dmg_Open, sizeof(s_TLV_BSS_Entry_11_11ad_ProbeResponse_Dmg_Open), + s_TLV_Success_AssociationResult_11_11ad_Dmg_Open, sizeof(s_TLV_Success_AssociationResult_11_11ad_Dmg_Open), +#else + 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), +#endif // DMG_CAPABILITIES + }, + + // 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), + }, +}; + +// clang-format on + +#define ConnectEntryId_MAX ARRAYSIZE(g_ConnectEntries) + +_Use_decl_annotations_ +void EvtWifiDeviceSendCommand(WDFDEVICE Device, WIFIREQUEST SendRequest) +{ + NTSTATUS Status = STATUS_SUCCESS; + UINT InBufferLen = 0; + UINT OutBufferLen = 0; + UINT BytesWritten = 0; + void* Buffer = WifiRequestGetInOutBuffer(SendRequest, &InBufferLen, &OutBufferLen); + UINT16 MessageId = WifiRequestGetMessageId(SendRequest); + + Status = ProcessWifiRequest(Device, MessageId, Buffer, InBufferLen, OutBufferLen, &BytesWritten); + + if (Status != STATUS_PENDING) + { + WifiRequestComplete(SendRequest, Status, BytesWritten); + } + return; +} + +_Use_decl_annotations_ +void WifiCxTestSendIndication(WDFDEVICE Device, PWDI_MESSAGE_HEADER pWdiHeader, UINT16 MessageId, UINT32 TransactionId, PUCHAR pTlvData, UINT32 TlvDataSize) +{ + NTSTATUS ntStatus; + WDFMEMORY data; + 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; + + ntStatus = WdfMemoryCreate(&objectAttribs, NonPagedPoolNx, 0, indicationSize, &data, reinterpret_cast<void**>(&pIndicationBuffer)); + + if (!NT_SUCCESS(ntStatus)) + { + WFCError("%!FUNC!: Failed to initialize indication buffer %!STATUS!", ntStatus); + return; + } + + RtlZeroMemory(pIndicationBuffer, indicationSize); + pIndicationHeader = reinterpret_cast<PWDI_MESSAGE_HEADER>(pIndicationBuffer); + + RtlCopyMemory(pIndicationHeader, pWdiHeader, sizeof(WDI_MESSAGE_HEADER)); + pIndicationHeader->TransactionId = TransactionId; + + if (TlvDataSize > 0) + { + RtlCopyMemory(pIndicationBuffer + sizeof(WDI_MESSAGE_HEADER), pTlvData, TlvDataSize); + } + + // Send the indication up to WifiCx + WifiDeviceReceiveIndication(Device, MessageId, data); + + // Don't need to keep this around + WdfObjectDelete(data); +} + +_Use_decl_annotations_ +UINT WifiCxTestSetOutput(PWIFI_DEVICE_CONTEXT pDeviceContext, void* ReqBuffer, SIZE_T ReqBufferSize, PUCHAR pTlvData, UINT32 TlvDataSize) +{ + UNREFERENCED_PARAMETER(pDeviceContext); + PWDI_MESSAGE_HEADER pWdiHeader = static_cast<PWDI_MESSAGE_HEADER>(ReqBuffer); + UINT BytesWritten = 0; + pWdiHeader->Status = NDIS_STATUS_SUCCESS; // TODO Need to set it to actual output + + if (ReqBufferSize >= (TlvDataSize + sizeof(WDI_MESSAGE_HEADER))) + { + if (TlvDataSize > 0) + { + RtlCopyMemory((static_cast<UCHAR*>(ReqBuffer)) + sizeof(WDI_MESSAGE_HEADER), pTlvData, TlvDataSize); + } + BytesWritten = static_cast<UINT16>(TlvDataSize); + } + else + { + pWdiHeader->Status = NDIS_STATUS_BUFFER_OVERFLOW; + } + return BytesWritten; +} + +_Use_decl_annotations_ +NDIS_STATUS WifiCxTestGetAdapterCapabilities(PWIFI_DEVICE_CONTEXT pDeviceContext, void* ReqBuffer, SIZE_T ReqBufferSize) +{ + NDIS_STATUS ndisStatus = NDIS_STATUS_SUCCESS; + PUCHAR pOutput = nullptr; + ULONG length = 0; + + // Generate TLV + ndisStatus = + GenerateWdiGetAdapterCapabilities(&pDeviceContext->AdapterCapabilities, 0, &pDeviceContext->TlvContext, &length, &pOutput); + + if (ndisStatus == NDIS_STATUS_SUCCESS) + { + // Set the information in the wifirequest + WifiCxTestSetOutput(pDeviceContext, ReqBuffer, ReqBufferSize, pOutput, length); + } + + FreeGenerated(pOutput); + + return ndisStatus; +} + +_Use_decl_annotations_ +NDIS_STATUS WifiCxTestSetAdapterConfiguration(PWIFI_DEVICE_CONTEXT pDeviceContext, void* ReqBuffer, SIZE_T ReqBufferSize) +{ + NDIS_STATUS ndisStatus = NDIS_STATUS_SUCCESS; + WDI_SET_FIRMWARE_CONFIGURATION_PARAMETERS fwConfig = {}; + + ULONG TLVStreamLength = static_cast<ULONG>(ReqBufferSize - sizeof(WDI_MESSAGE_HEADER)); + auto TLVByteStream = static_cast<UCHAR*>(ReqBuffer) + sizeof(WDI_MESSAGE_HEADER); + + DumpMessageTlvByteStream( + WDI_SET_ADAPTER_CONFIGURATION, TRUE, pDeviceContext->TlvContext.PeerVersion, TLVStreamLength, TLVByteStream, 0, nullptr); + ndisStatus = ParseWdiSetAdapterConfiguration(TLVStreamLength, TLVByteStream, &pDeviceContext->TlvContext, &fwConfig); + + if (ndisStatus == NDIS_STATUS_SUCCESS) + { + if (fwConfig.Optional.MacAddress_IsPresent) + { + pDeviceContext->AdapterCapabilities.InterfaceAttributes.InterfaceCapabilities.Address = fwConfig.MacAddress; + } + } + + CleanupParsedWdiSetAdapterConfiguration(&fwConfig); + + return ndisStatus; +} + + +extern WDI_MAC_ADDRESS STAAddress; + +WDI_MAC_ADDRESS LocalLinkAddresses[] = { + {0x11, 0x01, 0x02, 0x03, 0x04, 0x21}, + {0x11, 0x01, 0x02, 0x03, 0x04, 0x22}, +}; + +static NTSTATUS WifiCxTestSendLinkStateIndication(_In_ WDFDEVICE Device, _In_ PWDI_MESSAGE_HEADER pWdiHeader, ULONG numLinks) +{ + // Report link quality + NTSTATUS ntStatus = STATUS_SUCCESS; + PWIFI_DEVICE_CONTEXT pDeviceContext = WifiGetDeviceContext(Device); + WDI_INDICATION_LINK_STATE_CHANGE_PARAMETERS linkStateChangeParameters = {}; + WDI_LINK_INFO_CONTAINER pLinkInfo[2] = {}; + UINT8* pOutput = nullptr; + ULONG cbOutput = 0; + + RtlCopyMemory( + &linkStateChangeParameters.LinkStateChangeParameters.PeerMACAddress, &pDeviceContext->ConnectedPeer, sizeof(DOT11_MAC_ADDRESS)); + linkStateChangeParameters.LinkStateChangeParameters.TxLinkSpeed = 30000; + linkStateChangeParameters.LinkStateChangeParameters.RxLinkSpeed = 30000; + linkStateChangeParameters.LinkStateChangeParameters.LinkQuality = 56; + + pLinkInfo[0].LinkID = 1; + RtlCopyMemory(&pLinkInfo[0].LocalLinkMACAddress, &LocalLinkAddresses[0], sizeof(DOT11_MAC_ADDRESS)); + RtlCopyMemory(&pLinkInfo[0].PeerLinkMACAddress, &pDeviceContext->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) + { + pLinkInfo[1].LinkID = 2; + RtlCopyMemory(&pLinkInfo[1].LocalLinkMACAddress, &LocalLinkAddresses[1], sizeof(DOT11_MAC_ADDRESS)); + RtlCopyMemory(&pLinkInfo[1].PeerLinkMACAddress, &pDeviceContext->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) + { + WifiCxTestSendIndication(Device, pWdiHeader, WDI_INDICATION_LINK_STATE_CHANGE, 0, pOutput, cbOutput); + FreeGenerated(pOutput); + } + else + { + WFCError("Failed to generate WDI_INDICATION_LINK_STATE_CHANGE - 0x%08x\n", ntStatus); + } + + return ntStatus; +} + +#define TEST_RSN_EAPOL_SHA384_KCK_LENGTH (192 / 8) // 24 bytes +#define TEST_RSN_EAPOL_SHA384_KEK_LENGTH (256 / 8) // 32 bytes +#define TEST_RSN_CCMP_KEY_LENGTH 16 +#define TEST_RSN_BIP_GMAC_256_KEY_LENGTH 32 + +#define TEST_NUM_LINKS 3 +#define TEST_NUM_CIPHER_KEY_TYPES 3 + + +static NTSTATUS WifiCxTestPerformAssociation( + _In_ WDFDEVICE Device, + _In_ struct ArrayOfElements<WDI_CONNECT_BSS_ENTRY_CONTAINER>* pPreferredBSSEntryList, + _In_ struct ArrayOfElements<WDI_AUTH_ALGORITHM>* pAuthenticationAlgorithms, + _In_ 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_DEVICE_CONTEXT pDeviceContext = WifiGetDeviceContext(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; + pDeviceContext->LastConnectTransactionId = pWdiHeader->TransactionId; + + // TODO NetAdapter: datapath not yet implemented +#ifdef WIFICX_TEST_DATAPATH + // add peer on datapath + AddDatapathPeer(0x33, *g_ConnectEntries[connectEntry].pMacAddress); + + // example inject frame + InjectDatapathFrame(0x33); + + // Pretend to recieve M1 on datapath before, the association complete has made it up the control path. + RecieveDatapathFrame(0x33, sizeof(pucData), pucData); + +#endif + if ((&s_Connect_Addr_14_WPA3_SAE_CCMP == g_ConnectEntries[connectEntry].pMacAddress) || + (&s_Connect_Addr_30_WiFi7_Mixed_Link_1 == g_ConnectEntries[connectEntry].pMacAddress) || + (&s_Connect_Addr_38_WiFi7_Only_Link_1 == g_ConnectEntries[connectEntry].pMacAddress)) + { + 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 ..."); + + WifiCxTestSendIndication(Device, pWdiHeader, WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED, 0, pOutput, cbOutput); + + FreeGenerated(pOutput); + + break; + } + } + + // Get the assoc status + RtlCopyMemory(&assocStatus, &pAssociationResult[18], sizeof(ULONG)); + + // Send the association indication + WifiCxTestSendIndication( + Device, + pWdiHeader, + WDI_INDICATION_ASSOCIATION_RESULT, + 0, + 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(&pDeviceContext->ConnectedPeer, pPreferredBSSEntryList->pElements[bssIndex].BSSID.Address, sizeof(DOT11_MAC_ADDRESS)); + } + + pDeviceContext->LastConnectEntryId = NewConnectEntryId; + pDeviceContext->LastAuthAlgo = NewAuthAlgo; + + if (STATUS_SUCCESS == ntStatus && (WDI_AUTH_ALGO_WPA3_SAE != pDeviceContext->LastAuthAlgo)) + { + // Report link quality + ntStatus = WifiCxTestSendLinkStateIndication(Device, pWdiHeader, 2); + } + + return ntStatus; +} + +static void WifiCxTestPerformDisassociation(_In_ WDFDEVICE Device, _In_ PWDI_MESSAGE_HEADER pWdiHeader, _In_ WDI_ASSOC_STATUS DisassocStatus) +{ + // clang-format off + 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 + }; + // clang-format on + + PWIFI_DEVICE_CONTEXT pDeviceContext = WifiGetDeviceContext(Device); + + // TODO NetAdapter: datapath not yet implemented +#ifdef WIFICX_TEST_DATAPATH + // example inject frame + InjectDatapathFrame(0x33); +#endif + + RtlCopyMemory(&s_TLV_Disassociation[4], &pDeviceContext->ConnectedPeer, sizeof(DOT11_MAC_ADDRESS)); + RtlCopyMemory(&s_TLV_Disassociation[10], &DisassocStatus, sizeof(ULONG)); + + // Send the disassociation indication + WifiCxTestSendIndication(Device, pWdiHeader, WDI_INDICATION_DISASSOCIATION, 0, s_TLV_Disassociation, sizeof(s_TLV_Disassociation)); + + pDeviceContext->LastConnectEntryId = 0; // Disconnected State +} + +_Use_decl_annotations_ +static NTSTATUS ProcessWifiRequest(WDFDEVICE Device, UINT16 MessageId, void* Buffer, UINT InBufferLen, UINT OutBufferLen, UINT* pBytesWritten) +{ + NTSTATUS ntStatus = STATUS_SUCCESS; + NDIS_STATUS ndisStatus = NDIS_STATUS_SUCCESS; + PWIFI_DEVICE_CONTEXT deviceContext = WifiGetDeviceContext(Device); + PWDI_MESSAGE_HEADER pWdiHeader = static_cast<PWDI_MESSAGE_HEADER>(Buffer); + UINT BytesWritten = sizeof(WDI_MESSAGE_HEADER); + + if (InBufferLen < sizeof(WDI_MESSAGE_HEADER)) + { + return STATUS_INVALID_PARAMETER; + } + + if (OutBufferLen < sizeof(WDI_MESSAGE_HEADER)) + { + return STATUS_INVALID_PARAMETER; + } + + auto const buffer = static_cast<UCHAR*>(Buffer); + + // Check for integer overflow + if (!(buffer + InBufferLen > buffer)) + { + return STATUS_INVALID_PARAMETER; + } + + switch (MessageId) + { + case WDI_TASK_SET_RADIO_STATE: + { + WDI_SET_RADIO_STATE_PARAMETERS RadioStateParams = {}; + ULONG TLVStreamLength = static_cast<ULONG>(InBufferLen - sizeof(WDI_MESSAGE_HEADER)); + auto TLVByteStream = buffer + sizeof(WDI_MESSAGE_HEADER); + + DumpMessageTlvByteStream( + WDI_TASK_SET_RADIO_STATE, TRUE, deviceContext->TlvContext.PeerVersion, TLVStreamLength, TLVByteStream, 0, nullptr); + ParseWdiTaskSetRadioState(TLVStreamLength, TLVByteStream, &deviceContext->TlvContext, &RadioStateParams); + + if (RadioStateParams.SoftwareRadioState != deviceContext->CurrentRadioState) + { + // Change the radio state + deviceContext->CurrentRadioState = RadioStateParams.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 = deviceContext->CurrentRadioState; + GenerateWdiIndicationRadioStatus(&RadioStatusParams, 0, &deviceContext->TlvContext, &cbOutput, &pOutput); + WifiCxTestSendIndication(Device, pWdiHeader, WDI_INDICATION_RADIO_STATUS, 0, pOutput, cbOutput); + + FreeGenerated(pOutput); + } + + WifiCxTestSendIndication(Device, pWdiHeader, WDI_INDICATION_SET_RADIO_STATE_COMPLETE, pWdiHeader->TransactionId, nullptr, 0); + + CleanupParsedWdiTaskSetRadioState(&RadioStateParams); + } + break; + + case WDI_SET_ADAPTER_CONFIGURATION: + { + ndisStatus = WifiCxTestSetAdapterConfiguration(deviceContext, Buffer, InBufferLen); + } + break; + + case WDI_TASK_SCAN: + { + ULONG scanDataLength = static_cast<ULONG>(InBufferLen - sizeof(WDI_MESSAGE_HEADER)); + auto pScanData = buffer + sizeof(WDI_MESSAGE_HEADER); + + WDI_SCAN_PARAMETERS scanParams = {}; + + ndisStatus = ParseWdiTaskScan(scanDataLength, pScanData, &deviceContext->TlvContext, &scanParams); + + if (NDIS_STATUS_SUCCESS != ndisStatus) + { + WFCTrace("Scan parameters parsing failed: %d\n", ndisStatus); + // ntStatus = NdisConvertNdisStatusToNtStatus(parseStatus); + break; + } + + for (UINT8 connectEntry = 1; connectEntry < ConnectEntryId_MAX; connectEntry++) + { + if (g_SupportedBands & g_ConnectEntries[connectEntry].BandId) + { + + PUCHAR pBssEntry = g_ConnectEntries[connectEntry].pTlvBssEntry; + + // + // If currently connected, see if the connected entry should be skipped + // + if ((deviceContext->LastConnectEntryId != 0) && + (RtlCompareMemory(&deviceContext->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 + WifiCxTestSendIndication( + Device, + pWdiHeader, + WDI_INDICATION_BSS_ENTRY_LIST, + 0, + g_ConnectEntries[connectEntry].pTlvBssEntry, + g_ConnectEntries[connectEntry].TlvBssEntrySize); + } + } + + // + // See if the hidden network needs to be indicated + // + if ((scanParams.SSIDList.ElementCount > 0) && (scanParams.SSIDList.pElements[0].ElementCount == 8) && + (scanParams.SSIDList.pElements[0].pElements[4] == 'H') && (scanParams.SSIDList.pElements[0].pElements[5] == 'I') && + (scanParams.SSIDList.pElements[0].pElements[6] == 'D') && (scanParams.SSIDList.pElements[0].pElements[7] == 'E')) + { + WifiCxTestSendIndication( + Device, pWdiHeader, WDI_INDICATION_BSS_ENTRY_LIST, 0, s_TLV_BSS_Entry_ProbeResponse_8_Hidden, sizeof(s_TLV_BSS_Entry_ProbeResponse_8_Hidden)); + } + + CleanupParsedWdiTaskScan(&scanParams); + + WifiCxTestSendIndication(Device, pWdiHeader, WDI_INDICATION_SCAN_COMPLETE, pWdiHeader->TransactionId, nullptr, 0); + } + break; + + case WDI_TASK_DOT11_RESET: + { + WDI_TASK_DOT11_RESET_PARAMETERS resetParameters; + + ULONG resetDataLength = static_cast<ULONG>(InBufferLen - sizeof(WDI_MESSAGE_HEADER)); + auto pResetData = buffer + sizeof(WDI_MESSAGE_HEADER); + + ndisStatus = ParseWdiTaskDot11Reset(resetDataLength, pResetData, &deviceContext->TlvContext, &resetParameters); + + if (NDIS_STATUS_SUCCESS != ndisStatus) + { + WFCTrace("DOT11 Reset parameters parsing failed: %d\n", ndisStatus); + } + else 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]); + } + + WifiCxTestSendIndication(Device, pWdiHeader, WDI_INDICATION_DOT11_RESET_COMPLETE, pWdiHeader->TransactionId, nullptr, 0); + + CleanupParsedWdiTaskDot11Reset(&resetParameters); + } + break; + + case WDI_TASK_CONNECT: + { + ULONG connectDataLength = static_cast<ULONG>(InBufferLen - sizeof(WDI_MESSAGE_HEADER)); + auto pConnectData = buffer + sizeof(WDI_MESSAGE_HEADER); + + DumpMessageTlvByteStream(WDI_TASK_CONNECT, TRUE, deviceContext->TlvContext.PeerVersion, connectDataLength, pConnectData, 0, nullptr); + + WDI_TASK_CONNECT_PARAMETERS connectParams; + + if (deviceContext->LastConnectEntryId != 0) // Not Disconnected State + { + ASSERT(FALSE); + // TODO NetAdapter: datapath not yet implemented +#ifdef WIFICX_TEST_DATAPATH + DeleteDatapathPeer(0x33); +#endif + } + + // We search for the BSSID pattern to figure out what AP we are trying to connect to + ndisStatus = ParseWdiTaskConnect(connectDataLength, pConnectData, &deviceContext->TlvContext, &connectParams); + if (NDIS_STATUS_SUCCESS != ndisStatus) + { + // ntStatus = NdisConvertNdisStatusToNtStatus(parseStatus); + WFCTrace("ParseWdiTaskConnect FAIled %d\n", ndisStatus); + break; + } + + // Call the helper + ndisStatus = WifiCxTestPerformAssociation( + Device, &connectParams.PreferredBSSEntryList, &connectParams.ConnectParameters.AuthenticationAlgorithms, pWdiHeader); + CleanupParsedWdiTaskConnect(&connectParams); + + // + // 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 != deviceContext->LastAuthAlgo) + { + WifiCxTestSendIndication(Device, pWdiHeader, WDI_INDICATION_CONNECT_COMPLETE, pWdiHeader->TransactionId, nullptr, 0); + } + } + break; + + case WDI_TASK_DISCONNECT: + { + WifiCxTestPerformDisassociation(Device, pWdiHeader, WDI_ASSOC_STATUS_DISASSOCIATED_BY_HOST); + + WifiCxTestSendIndication(Device, pWdiHeader, WDI_INDICATION_DISCONNECT_COMPLETE, pWdiHeader->TransactionId, nullptr, 0); + +#ifdef WIFICX_TEST_DATAPATH + // TODO NetAdapter: datapath not yet implemented + DeleteDatapathPeer(0x33); +#endif + } + break; + + case WDI_SET_PRIVACY_EXEMPTION_LIST: + case WDI_SET_DEFAULT_KEY_ID: + case WDI_SET_ADD_CIPHER_KEYS: + case WDI_SET_DELETE_CIPHER_KEYS: + case WDI_SET_RECEIVE_PACKET_FILTER: + case WDI_SET_CONNECTION_QUALITY: + // Doing Nothing special + break; + + case WDI_SET_SAE_AUTH_PARAMS: + { + WDI_SET_SAE_AUTH_PARAMS_COMMAND setSAEAuthParams; + 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"); + + ndisStatus = ParseWdiSetSaeAuthParams( + InBufferLen - sizeof(WDI_MESSAGE_HEADER), (PUINT8)buffer + sizeof(WDI_MESSAGE_HEADER), &deviceContext->TlvContext, &setSAEAuthParams); + if (ndisStatus == NDIS_STATUS_SUCCESS) + { + 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); + } +#ifdef WIFICX_TEST_DATAPATH + // example inject frame + InjectDatapathFrame(0x33); +#endif + // Send the association indication + if (WDI_AUTH_ALGO_WPA3_SAE == deviceContext->LastAuthAlgo) + { + s_TLV_Success_AssociationResult_14_WPA3_SAE_CCMP[27] = (UCHAR)WDI_AUTH_ALGO_WPA3_SAE; + } + else + { + s_TLV_Success_AssociationResult_14_WPA3_SAE_CCMP[27] = (UCHAR)WDI_AUTH_ALGO_RSNA_PSK; + } + + WifiCxTestSendIndication( + Device, + pWdiHeader, + WDI_INDICATION_ASSOCIATION_RESULT, + 0, + s_TLV_Success_AssociationResult_14_WPA3_SAE_CCMP, + sizeof(s_TLV_Success_AssociationResult_14_WPA3_SAE_CCMP)); + RtlCopyMemory(&deviceContext->ConnectedPeer, &s_Connect_Addr_14_WPA3_SAE_CCMP, sizeof(DOT11_MAC_ADDRESS)); + + // Report link quality + ntStatus = WifiCxTestSendLinkStateIndication(Device, pWdiHeader, 1); + + WifiCxTestSendIndication( + Device, pWdiHeader, WDI_INDICATION_CONNECT_COMPLETE, deviceContext->LastConnectTransactionId, nullptr, 0); + +#ifdef WIFICX_TEST_DATAPATH + // + // 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 + break; + } + + RtlCopyMemory(SAEAuthParamsNeeded.BssId.Address, &s_Connect_Addr_14_WPA3_SAE_CCMP, sizeof(DOT11_MAC_ADDRESS)); + + ndisStatus = + GenerateWdiIndicationSaeAuthParamsNeeded(&SAEAuthParamsNeeded, 0, &deviceContext->TlvContext, &cbOutput, &pOutput); + if (ndisStatus == NDIS_STATUS_SUCCESS) + { + WifiCxTestSendIndication(Device, pWdiHeader, WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED, 0, pOutput, cbOutput); + + FreeGenerated(pOutput); + } + else + { + WFCError("Failed to generate WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED - 0x%08x\n", ndisStatus); + } + } + else + { + WFCError("[SAE] Failed to parse WDI_SET_SAE_AUTH_PARAMS data - 0x%08x\n", ndisStatus); + } + CleanupParsedWdiSetSaeAuthParamsToIhv(&setSAEAuthParams); + } + break; + + case WDI_SET_LOCATION_PRIVACY: + { + WDI_SET_LOCATION_PRIVACY_PARAMETERS privacyParams; + + ndisStatus = ParseWdiSetLocationPrivacyToIhv( + InBufferLen - sizeof(WDI_MESSAGE_HEADER), (PUINT8)buffer + sizeof(WDI_MESSAGE_HEADER), &deviceContext->TlvContext, &privacyParams); + if (NDIS_STATUS_SUCCESS == ndisStatus) + { + WFCInfo("[WDI_SET_LOCATION_PRIVACY]: Got privacy setting = %x *****\n", privacyParams.LocationAllowed); + CleanupParsedWdiSetLocationPrivacy(&privacyParams); + } + else + { + WFCError("[WDI_SET_LOCATION_PRIVACY]: ParseWdiSetLocationPrivacyToIhv FAIled %x0x *****\n", ndisStatus); + } + } + break; + + default: + ntStatus = STATUS_NOT_SUPPORTED; + break; + } + + // Set the ndis Status in the WDI header + pWdiHeader->Status = ndisStatus; + + // Set the output length + if (pBytesWritten) + { + *pBytesWritten = BytesWritten; + } + return ntStatus; +} + +_Use_decl_annotations_ +NTSTATUS WifiCxTestSetDeviceCapabilities(WDFDEVICE Device) +{ + WIFI_DEVICE_CAPABILITIES deviceCaps = {}; + WIFI_DEVICE_CAPABILITIES_INIT(&deviceCaps); + + deviceCaps.HardwareRadioState = TRUE; + deviceCaps.SoftwareRadioState = TRUE; + deviceCaps.FirmwareVersion[MAX_FIRMWARE_VERSION_LENGTH]; + 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; + + WifiDeviceSetDeviceCapabilities(Device, &deviceCaps); + + 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; + } +#ifdef _KERNEL_MODE + if (!KdRefreshDebuggerNotPresent()) + { + DbgPrintEx( + DPFLTR_DEFAULT_ID, + DPFLTR_ERROR_LEVEL, + "WIFI_IS_FIELD_AVAILABLE:WIFI_STATION_CAPABILITIES::MSCSSupported %u\n", + WIFI_IS_FIELD_AVAILABLE(WIFI_STATION_CAPABILITIES, MSCSSupported)); + DbgPrintEx( + DPFLTR_DEFAULT_ID, + DPFLTR_ERROR_LEVEL, + "WIFI_IS_FIELD_AVAILABLE:WIFI_STATION_CAPABILITIES::DSCPToUPMappingSupported %u\n", + WIFI_IS_FIELD_AVAILABLE(WIFI_STATION_CAPABILITIES, DSCPToUPMappingSupported)); + DbgPrintEx( + DPFLTR_DEFAULT_ID, + DPFLTR_ERROR_LEVEL, + "WIFI_IS_FIELD_AVAILABLE:WIFI_STATION_CAPABILITIES::MaxNumConfigurableActionFrameWakePatterns %u\n", + WIFI_IS_FIELD_AVAILABLE(WIFI_STATION_CAPABILITIES, MaxNumConfigurableActionFrameWakePatterns)); + DbgPrintEx( + DPFLTR_DEFAULT_ID, + DPFLTR_ERROR_LEVEL, + "WIFI_IS_FUNCTION_AVAILABLE:WifiPowerOffloadGetActionFrameWakePatternParameters %u\n", + WIFI_IS_FUNCTION_AVAILABLE(WifiPowerOffloadGetActionFrameWakePatternParameters)); + } +#endif + WifiDeviceSetStationCapabilities(Device, &StationCaps); + + 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 (g_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 (g_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 (g_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 (g_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; + + WifiDeviceSetBandCapabilities(Device, &BandCaps); + + 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; + + WifiDeviceSetPhyCapabilities(Device, &PhyCaps); + + return STATUS_SUCCESS; +}
\ No newline at end of file diff --git a/network/wlan/WIFICX/drivercode/wifirequest.h b/network/wlan/WIFICX/drivercode/wifirequest.h new file mode 100644 index 00000000..b2221c1e --- /dev/null +++ b/network/wlan/WIFICX/drivercode/wifirequest.h @@ -0,0 +1,30 @@ +// Copyright (C) Microsoft Corporation. All rights reserved. +#pragma once + +EVT_WIFI_DEVICE_SEND_COMMAND EvtWifiDeviceSendCommand; + +static NTSTATUS ProcessWifiRequest( + _In_ WDFDEVICE Device, _In_ UINT16 MessageId, _In_ void* Buffer, _In_ UINT InBufferLen, _In_ UINT OutBufferLen, _In_ UINT* pBytesWritten); + +UINT WifiCxTestSetOutput( + _In_ PWIFI_DEVICE_CONTEXT pDeviceContext, + _Inout_ void* ReqBuffer, + _In_ SIZE_T ReqBufferSize, + _In_opt_bytecount_(TlvDataSize) PUCHAR pTlvData, + _In_ UINT32 TlvDataSize); + +void WifiCxTestSendIndication( + _In_ WDFDEVICE Device, + _In_ PWDI_MESSAGE_HEADER pWdiHeader, + _In_ UINT16 MessageId, + _In_ UINT32 TransactionId, + _In_opt_bytecount_(TlvDataSize) PUCHAR pTlvData, + _In_ UINT32 TlvDataSize); + +NDIS_STATUS WifiCxTestGetAdapterCapabilities(_In_ PWIFI_DEVICE_CONTEXT pDeviceContext, _In_ void* ReqBuffer, _In_ SIZE_T ReqBufferSize); + +NDIS_STATUS WifiCxTestSetAdapterConfiguration(_In_ PWIFI_DEVICE_CONTEXT pDeviceContext, _In_ void* ReqBuffer, _In_ SIZE_T ReqBufferSize); + +NTSTATUS WifiCxTestSetDeviceCapabilities(_In_ WDFDEVICE Device); + +ULONG g_SupportedBands = (WDI_BAND_ID_2400 | WDI_BAND_ID_5000 | WDI_BAND_ID_6000);
\ No newline at end of file diff --git a/network/wlan/WIFICX/km/wificxsampleclientkm.inf b/network/wlan/WIFICX/km/wificxsampleclientkm.inf new file mode 100644 index 00000000..432e31ac --- /dev/null +++ b/network/wlan/WIFICX/km/wificxsampleclientkm.inf @@ -0,0 +1,62 @@ +; +; wificxsampleclientkm.inf +; + +[Version] +Signature = "$WINDOWS NT$" +Class = System ; TODO: specify appropriate Class +ClassGuid = {4d36e97d-e325-11ce-bfc1-08002be10318} ; TODO: specify appropriate ClassGuid +Provider = %ManufacturerName% +CatalogFile = wificxsampleclientkm.cat +DriverVer = ; TODO: set DriverVer in stampinf property pages +PnpLockdown = 1 + +[DestinationDirs] +DefaultDestDir = 13 + +[SourceDisksNames] +1 = %DiskName%,,,"" + +[SourceDisksFiles] +wificxsampleclientkm.sys = 1,, + +;***************************************** +; Install Section +;***************************************** + +[Manufacturer] +%ManufacturerName% = Standard,NT$ARCH$.10.0...16299 ; %13% support introduced in build 16299 + +[Standard.NT$ARCH$.10.0...16299] +%wificxsampleclientkm.DeviceDesc% = wificxsampleclientkm_Device, Root\wificxsampleclientkm ; TODO: edit hw-id + +[wificxsampleclientkm_Device.NT] +CopyFiles = File_Copy + +[File_Copy] +wificxsampleclientkm.sys + +;-------------- Service installation +[wificxsampleclientkm_Device.NT.Services] +AddService = wificxsampleclientkm,%SPSVCINST_ASSOCSERVICE%, wificxsampleclientkm_Service_Inst + +; -------------- wificxsampleclientkm driver install sections +[wificxsampleclientkm_Service_Inst] +DisplayName = %wificxsampleclientkm.SVCDESC% +ServiceType = 1 ; SERVICE_KERNEL_DRIVER +StartType = 3 ; SERVICE_DEMAND_START +ErrorControl = 1 ; SERVICE_ERROR_NORMAL +ServiceBinary = %13%\wificxsampleclientkm.sys + +[wificxsampleclientkm_Device.NT.Wdf] +KmdfService = wificxsampleclientkm, wificxsampleclientkm_wdfsect + +[wificxsampleclientkm_wdfsect] +KmdfLibraryVersion = $KMDFVERSION$ + +[Strings] +SPSVCINST_ASSOCSERVICE = 0x00000002 +ManufacturerName = "<Your manufacturer name>" ;TODO: Replace with your manufacturer name +DiskName = "wificxsampleclientkm Installation Disk" +wificxsampleclientkm.DeviceDesc = "wificxsampleclientkm Device" +wificxsampleclientkm.SVCDESC = "wificxsampleclientkm Service" diff --git a/network/wlan/WIFICX/km/wificxsampleclientkm.vcxproj b/network/wlan/WIFICX/km/wificxsampleclientkm.vcxproj new file mode 100644 index 00000000..73dfb632 --- /dev/null +++ b/network/wlan/WIFICX/km/wificxsampleclientkm.vcxproj @@ -0,0 +1,191 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|ARM64"> + <Configuration>Debug</Configuration> + <Platform>ARM64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|ARM64"> + <Configuration>Release</Configuration> + <Platform>ARM64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{272D3E7B-C7BA-66D1-E05D-B9723A6F0777}</ProjectGuid> + <TemplateGuid>{1bc93793-694f-48fe-9372-81e2b05556fd}</TemplateGuid> + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion> + <Configuration>Debug</Configuration> + <Platform Condition="'$(Platform)' == ''">x64</Platform> + <RootNamespace>wificxsampleclientkm</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> + <ConfigurationType>Driver</ConfigurationType> + <DriverType>KMDF</DriverType> + <DriverTargetPlatform>Universal</DriverTargetPlatform> + <KMDF_VERSION_MAJOR>1</KMDF_VERSION_MAJOR> + <KMDF_VERSION_MINOR>33</KMDF_VERSION_MINOR> + <KMDF_MINIMUM_VERSION_REQUIRED>33</KMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>4</NETADAPTER_VERSION_MINOR> + <NETADAPTER_MINIMUM_VERSION_REQUIRED>4</NETADAPTER_MINIMUM_VERSION_REQUIRED> + <WifiDriver>true</WifiDriver> + <WIFI_VERSION_MAJOR>1</WIFI_VERSION_MAJOR> + <WIFI_VERSION_MINOR>2</WIFI_VERSION_MINOR> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> + <ConfigurationType>Driver</ConfigurationType> + <DriverType>KMDF</DriverType> + <DriverTargetPlatform>Universal</DriverTargetPlatform> + <KMDF_VERSION_MAJOR>1</KMDF_VERSION_MAJOR> + <KMDF_VERSION_MINOR>33</KMDF_VERSION_MINOR> + <KMDF_MINIMUM_VERSION_REQUIRED>33</KMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>4</NETADAPTER_VERSION_MINOR> + <NETADAPTER_MINIMUM_VERSION_REQUIRED>4</NETADAPTER_MINIMUM_VERSION_REQUIRED> + <WifiDriver>true</WifiDriver> + <WIFI_VERSION_MAJOR>1</WIFI_VERSION_MAJOR> + <WIFI_VERSION_MINOR>2</WIFI_VERSION_MINOR> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> + <ConfigurationType>Driver</ConfigurationType> + <DriverType>KMDF</DriverType> + <DriverTargetPlatform>Universal</DriverTargetPlatform> + <KMDF_VERSION_MAJOR>1</KMDF_VERSION_MAJOR> + <KMDF_VERSION_MINOR>33</KMDF_VERSION_MINOR> + <KMDF_MINIMUM_VERSION_REQUIRED>33</KMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>4</NETADAPTER_VERSION_MINOR> + <NETADAPTER_MINIMUM_VERSION_REQUIRED>4</NETADAPTER_MINIMUM_VERSION_REQUIRED> + <WifiDriver>true</WifiDriver> + <WIFI_VERSION_MAJOR>1</WIFI_VERSION_MAJOR> + <WIFI_VERSION_MINOR>2</WIFI_VERSION_MINOR> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> + <ConfigurationType>Driver</ConfigurationType> + <DriverType>KMDF</DriverType> + <DriverTargetPlatform>Universal</DriverTargetPlatform> + <KMDF_VERSION_MAJOR>1</KMDF_VERSION_MAJOR> + <KMDF_VERSION_MINOR>33</KMDF_VERSION_MINOR> + <KMDF_MINIMUM_VERSION_REQUIRED>33</KMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>4</NETADAPTER_VERSION_MINOR> + <NETADAPTER_MINIMUM_VERSION_REQUIRED>4</NETADAPTER_MINIMUM_VERSION_REQUIRED> + <WifiDriver>true</WifiDriver> + <WIFI_VERSION_MAJOR>1</WIFI_VERSION_MAJOR> + <WIFI_VERSION_MINOR>2</WIFI_VERSION_MINOR> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> + <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> + <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <WppEnabled>true</WppEnabled> + <AdditionalIncludeDirectories>$(DDK_INC_PATH)wlan\2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>$(DDK_LIB_PATH)wlan\2.0\WificxTLVGenParse.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <AdditionalIncludeDirectories>$(DDK_INC_PATH)wlan\2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>$(DDK_LIB_PATH)wlan\2.0\WificxTLVGenParse.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <AdditionalIncludeDirectories>$(DDK_INC_PATH)wlan\2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>$(DDK_LIB_PATH)wlan\2.0\WificxTLVGenParse.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <AdditionalIncludeDirectories>$(DDK_INC_PATH)wlan\2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <AdditionalDependencies>$(DDK_LIB_PATH)wlan\2.0\WificxTLVGenParse.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <Inf Include="wificxsampleclientkm.inf" /> + </ItemGroup> + <ItemGroup> + <FilesToPackage Include="$(TargetPath)" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\drivercode\adapter.cpp" /> + <ClCompile Include="..\drivercode\wifirequest.cpp" /> + <ClCompile Include="..\drivercode\device.cpp" /> + <ClCompile Include="..\drivercode\driver.cpp" /> + <ClCompile Include="..\drivercode\memorymanagement.cpp" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\drivercode\umkmfusion.h" /> + <ClInclude Include="..\drivercode\wifirequest.h" /> + <ClInclude Include="..\drivercode\testdata.h" /> + <ClInclude Include="..\drivercode\precomp.h" /> + <ClInclude Include="..\drivercode\trace.h" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/network/wlan/WIFICX/km/wificxsampleclientkm.vcxproj.filters b/network/wlan/WIFICX/km/wificxsampleclientkm.vcxproj.filters new file mode 100644 index 00000000..d1dec69c --- /dev/null +++ b/network/wlan/WIFICX/km/wificxsampleclientkm.vcxproj.filters @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + <Filter Include="Driver Files"> + <UniqueIdentifier>{8E41214B-6785-4CFE-B992-037D68949A14}</UniqueIdentifier> + <Extensions>inf;inv;inx;mof;mc;</Extensions> + </Filter> + <Filter Include="Source Files\controlpath"> + <UniqueIdentifier>{eed063b0-f52a-4d8e-b03f-1f616b73061c}</UniqueIdentifier> + </Filter> + <Filter Include="Source Files\datapath"> + <UniqueIdentifier>{56f07a12-b9fb-4ff6-a9b5-e4af54eed417}</UniqueIdentifier> + </Filter> + <Filter Include="Source Files\firmware"> + <UniqueIdentifier>{58bc1adc-c940-478a-898b-59d217c27f36}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <Inf Include="wificxsampleclientkm.inf"> + <Filter>Driver Files</Filter> + </Inf> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\common\adapter.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\common\device.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\common\driver.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\common\new.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\common\power.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\common\controlpath\wifirequest.cpp"> + <Filter>Source Files\controlpath</Filter> + </ClCompile> + <ClCompile Include="..\common\datapath\rxqueue.cpp"> + <Filter>Source Files\datapath</Filter> + </ClCompile> + <ClCompile Include="..\common\datapath\txqueue.cpp"> + <Filter>Source Files\datapath</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\common\datapath\netringiterator.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\common\datapath\rxqueue.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\common\datapath\txqueue.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\common\firmware\testdata.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\common\controlpath\wifirequest.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\common\precomp.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\common\trace.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/network/wlan/WIFICX/um/wificxsampleclientum.inf b/network/wlan/WIFICX/um/wificxsampleclientum.inf Binary files differnew file mode 100644 index 00000000..6ed871d4 --- /dev/null +++ b/network/wlan/WIFICX/um/wificxsampleclientum.inf diff --git a/network/wlan/WIFICX/um/wificxsampleclientum.vcxproj b/network/wlan/WIFICX/um/wificxsampleclientum.vcxproj new file mode 100644 index 00000000..5e4d00b9 --- /dev/null +++ b/network/wlan/WIFICX/um/wificxsampleclientum.vcxproj @@ -0,0 +1,201 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|ARM64"> + <Configuration>Debug</Configuration> + <Platform>ARM64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|ARM64"> + <Configuration>Release</Configuration> + <Platform>ARM64</Platform> + </ProjectConfiguration> + </ItemGroup> + <ItemGroup> + <Inf Include="wificxsampleclientum.inf" /> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{C804D7D0-80D8-1409-44DA-91EF3260D07F}</ProjectGuid> + <TemplateGuid>{2177f19c-eb4c-4687-9e7f-f9eec1f12cf1}</TemplateGuid> + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion> + <Configuration>Debug</Configuration> + <Platform Condition="'$(Platform)' == ''">x64</Platform> + <RootNamespace>wificxsampleclientum</RootNamespace> + </PropertyGroup> + <PropertyGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <PlatformToolset>WindowsUserModeDriver10.0</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <DriverTargetPlatform>Universal</DriverTargetPlatform> + </PropertyGroup> + <PropertyGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <PlatformToolset>WindowsUserModeDriver10.0</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <DriverTargetPlatform>Universal</DriverTargetPlatform> + </PropertyGroup> + <PropertyGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> + <PlatformToolset>WindowsUserModeDriver10.0</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <DriverTargetPlatform>Universal</DriverTargetPlatform> + </PropertyGroup> + <PropertyGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> + <PlatformToolset>WindowsUserModeDriver10.0</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <DriverTargetPlatform>Universal</DriverTargetPlatform> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>true</UseDebugLibraries> + <UMDF_VERSION_MAJOR>2</UMDF_VERSION_MAJOR> + <UMDF_VERSION_MINOR>35</UMDF_VERSION_MINOR> + <UMDF_MINIMUM_VERSION_REQUIRED>35</UMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>5</NETADAPTER_VERSION_MINOR> + <WifiDriver>true</WifiDriver> + <WIFI_VERSION_MAJOR>1</WIFI_VERSION_MAJOR> + <WIFI_VERSION_MINOR>2</WIFI_VERSION_MINOR> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>false</UseDebugLibraries> + <UMDF_VERSION_MAJOR>2</UMDF_VERSION_MAJOR> + <UMDF_VERSION_MINOR>35</UMDF_VERSION_MINOR> + <UMDF_MINIMUM_VERSION_REQUIRED>35</UMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>5</NETADAPTER_VERSION_MINOR> + <WifiDriver>true</WifiDriver> + <WIFI_VERSION_MAJOR>1</WIFI_VERSION_MAJOR> + <WIFI_VERSION_MINOR>2</WIFI_VERSION_MINOR> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>true</UseDebugLibraries> + <UMDF_VERSION_MAJOR>2</UMDF_VERSION_MAJOR> + <UMDF_VERSION_MINOR>35</UMDF_VERSION_MINOR> + <UMDF_MINIMUM_VERSION_REQUIRED>35</UMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>5</NETADAPTER_VERSION_MINOR> + <WifiDriver>true</WifiDriver> + <WIFI_VERSION_MAJOR>1</WIFI_VERSION_MAJOR> + <WIFI_VERSION_MINOR>2</WIFI_VERSION_MINOR> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>false</UseDebugLibraries> + <UMDF_VERSION_MAJOR>2</UMDF_VERSION_MAJOR> + <UMDF_VERSION_MINOR>35</UMDF_VERSION_MINOR> + <UMDF_MINIMUM_VERSION_REQUIRED>35</UMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>5</NETADAPTER_VERSION_MINOR> + <WifiDriver>true</WifiDriver> + <WIFI_VERSION_MAJOR>1</WIFI_VERSION_MAJOR> + <WIFI_VERSION_MINOR>2</WIFI_VERSION_MINOR> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <DebuggerFlavor>DbgengRemoteDebugger</DebuggerFlavor> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <DebuggerFlavor>DbgengRemoteDebugger</DebuggerFlavor> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> + <DebuggerFlavor>DbgengRemoteDebugger</DebuggerFlavor> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> + <DebuggerFlavor>DbgengRemoteDebugger</DebuggerFlavor> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <AdditionalIncludeDirectories>$(WDK_UM_INC_PATH)wlan\2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIFICX_TEMPORARY_REMOVED_FOR_USERMODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <WppEnabled>true</WppEnabled> + </ClCompile> + <Link> + <AdditionalDependencies>$(WDK_UM_LIB_PATH)wlan\2.0\WificxTLVGenParse.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <AdditionalIncludeDirectories>$(WDK_UM_INC_PATH)wlan\2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIFICX_TEMPORARY_REMOVED_FOR_USERMODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <WppEnabled>true</WppEnabled> + </ClCompile> + <Link> + <AdditionalDependencies>$(WDK_UM_LIB_PATH)wlan\2.0\WificxTLVGenParse.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <AdditionalIncludeDirectories>$(WDK_UM_INC_PATH)wlan\2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIFICX_TEMPORARY_REMOVED_FOR_USERMODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <WppEnabled>true</WppEnabled> + </ClCompile> + <Link> + <AdditionalDependencies>$(WDK_UM_LIB_PATH)wlan\2.0\WificxTLVGenParse.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <AdditionalIncludeDirectories>$(WDK_UM_INC_PATH)wlan\2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIFICX_TEMPORARY_REMOVED_FOR_USERMODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <WppEnabled>true</WppEnabled> + </ClCompile> + <Link> + <AdditionalDependencies>$(WDK_UM_LIB_PATH)wlan\2.0\WificxTLVGenParse.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <FilesToPackage Include="$(TargetPath)" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\drivercode\adapter.h" /> + <ClInclude Include="..\drivercode\device.h" /> + <ClInclude Include="..\drivercode\precomp.h" /> + <ClInclude Include="..\drivercode\SharedTypes.h" /> + <ClInclude Include="..\drivercode\testdata.h" /> + <ClInclude Include="..\drivercode\trace.h" /> + <ClInclude Include="..\drivercode\wifirequest.h" /> + <ClInclude Include="..\drivercode\umkmfusion.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\drivercode\adapter.cpp" /> + <ClCompile Include="..\drivercode\device.cpp" /> + <ClCompile Include="..\drivercode\driver.cpp" /> + <ClCompile Include="..\drivercode\memorymanagement.cpp" /> + <ClCompile Include="..\drivercode\wifirequest.cpp" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/network/wlan/WIFICX/um/wificxsampleclientum.vcxproj.filters b/network/wlan/WIFICX/um/wificxsampleclientum.vcxproj.filters new file mode 100644 index 00000000..20ff1a35 --- /dev/null +++ b/network/wlan/WIFICX/um/wificxsampleclientum.vcxproj.filters @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + <Filter Include="Driver Files"> + <UniqueIdentifier>{8E41214B-6785-4CFE-B992-037D68949A14}</UniqueIdentifier> + <Extensions>inf;inv;inx;mof;mc;</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <Inf Include="wificxsampleclientum.inf"> + <Filter>Driver Files</Filter> + </Inf> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\common\adapter.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\common\device.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\common\precomp.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\common\testdata.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\common\trace.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\common\wifirequest.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="UMKMFusion .h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\common\adapter.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\common\device.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\common\driver.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\common\memorymanagement.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\common\wifirequest.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/network/wlan/WIFICX/wificxsampleclient.sln b/network/wlan/WIFICX/wificxsampleclient.sln new file mode 100644 index 00000000..0975a4da --- /dev/null +++ b/network/wlan/WIFICX/wificxsampleclient.sln @@ -0,0 +1,48 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34221.43 +MinimumVisualStudioVersion = 12.0 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wificxsampleclientkm", "km\wificxsampleclientkm.vcxproj", "{272D3E7B-C7BA-66D1-E05D-B9723A6F0777}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wificxsampleclientum", "um\wificxsampleclientum.vcxproj", "{C804D7D0-80D8-1409-44DA-91EF3260D07F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {272D3E7B-C7BA-66D1-E05D-B9723A6F0777}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {272D3E7B-C7BA-66D1-E05D-B9723A6F0777}.Debug|ARM64.Build.0 = Debug|ARM64 + {272D3E7B-C7BA-66D1-E05D-B9723A6F0777}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {272D3E7B-C7BA-66D1-E05D-B9723A6F0777}.Debug|x64.ActiveCfg = Debug|x64 + {272D3E7B-C7BA-66D1-E05D-B9723A6F0777}.Debug|x64.Build.0 = Debug|x64 + {272D3E7B-C7BA-66D1-E05D-B9723A6F0777}.Debug|x64.Deploy.0 = Debug|x64 + {272D3E7B-C7BA-66D1-E05D-B9723A6F0777}.Release|ARM64.ActiveCfg = Release|ARM64 + {272D3E7B-C7BA-66D1-E05D-B9723A6F0777}.Release|ARM64.Build.0 = Release|ARM64 + {272D3E7B-C7BA-66D1-E05D-B9723A6F0777}.Release|ARM64.Deploy.0 = Release|ARM64 + {272D3E7B-C7BA-66D1-E05D-B9723A6F0777}.Release|x64.ActiveCfg = Release|x64 + {272D3E7B-C7BA-66D1-E05D-B9723A6F0777}.Release|x64.Build.0 = Release|x64 + {272D3E7B-C7BA-66D1-E05D-B9723A6F0777}.Release|x64.Deploy.0 = Release|x64 + {C804D7D0-80D8-1409-44DA-91EF3260D07F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C804D7D0-80D8-1409-44DA-91EF3260D07F}.Debug|ARM64.Build.0 = Debug|ARM64 + {C804D7D0-80D8-1409-44DA-91EF3260D07F}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {C804D7D0-80D8-1409-44DA-91EF3260D07F}.Debug|x64.ActiveCfg = Debug|x64 + {C804D7D0-80D8-1409-44DA-91EF3260D07F}.Debug|x64.Build.0 = Debug|x64 + {C804D7D0-80D8-1409-44DA-91EF3260D07F}.Debug|x64.Deploy.0 = Debug|x64 + {C804D7D0-80D8-1409-44DA-91EF3260D07F}.Release|ARM64.ActiveCfg = Release|ARM64 + {C804D7D0-80D8-1409-44DA-91EF3260D07F}.Release|ARM64.Build.0 = Release|ARM64 + {C804D7D0-80D8-1409-44DA-91EF3260D07F}.Release|ARM64.Deploy.0 = Release|ARM64 + {C804D7D0-80D8-1409-44DA-91EF3260D07F}.Release|x64.ActiveCfg = Release|x64 + {C804D7D0-80D8-1409-44DA-91EF3260D07F}.Release|x64.Build.0 = Release|x64 + {C804D7D0-80D8-1409-44DA-91EF3260D07F}.Release|x64.Deploy.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {37680CDC-EACB-499B-BA11-7C376F53DB71} + EndGlobalSection +EndGlobal |
