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 /network/wlan/WIFICX/drivercode/device.cpp | |
| parent | af60c12439cf289a8fcb670abc4e7cca76e32a4f (diff) | |
have the buildable KM and UM solutions for Wifi only scenarios.
Diffstat (limited to 'network/wlan/WIFICX/drivercode/device.cpp')
| -rw-r--r-- | network/wlan/WIFICX/drivercode/device.cpp | 125 |
1 files changed, 125 insertions, 0 deletions
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 |
