diff options
| author | 5an7y-Microsoft <[email protected]> | 2026-06-19 13:23:44 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-06-19 13:23:44 -0700 |
| commit | 26741c75857c7df2fd95efe632f8f5f70b71fdbb (patch) | |
| tree | 58d74336b33f09a11d9427f8eba76f7fa84d9d47 /network/wlan/wificx/drivercode/adapter.cpp | |
| parent | e99ae832b48b245404f9bd750af4864247b061e8 (diff) | |
| parent | 8315a48cc6aac0c02d2218b0147457a01de4f885 (diff) | |
Merge pull request #1394 from youyanggit/WifiihvsampleDataPath
Add End-to-End NetAdapterCx/WiFiCx Sample Drivers and OEM Communication Examples
Diffstat (limited to 'network/wlan/wificx/drivercode/adapter.cpp')
| -rw-r--r-- | network/wlan/wificx/drivercode/adapter.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/network/wlan/wificx/drivercode/adapter.cpp b/network/wlan/wificx/drivercode/adapter.cpp new file mode 100644 index 00000000..fd44c72b --- /dev/null +++ b/network/wlan/wificx/drivercode/adapter.cpp @@ -0,0 +1,83 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +#include "precomp.h" +#include "adapter.h" +#include "adapter.tmh" + +extern UCHAR NetvMacAddressBase[MAC_ADDR_LEN]; + +NetvAdapter* NetvAdapterGetContextFromWDFObject(NETADAPTER netAdapter) +{ + WifiNetvAdapter* wifiNetvAdapter = WifiNetvAdapterGetContext(netAdapter); + NetvAdapter* netvAdapter{ wifiNetvAdapter }; + return netvAdapter; +} + +WifiNetvAdapter::WifiNetvAdapter(NETADAPTER Handle, WDFDEVICE Device) : NetvAdapter(Handle, Device) +{ +} + +NTSTATUS WifiNetvAdapter::Initialize() +{ + if (WifiGetIhvDeviceContext(m_device)->netAdapters[WifiAdapterGetPortId(m_handle)] != WDF_NO_HANDLE) + { + return STATUS_SUCCESS; + } + return NetvAdapter::Initialize(); +} + +NTSTATUS WifiNetvAdapter::AdapterStart() +{ + TraceEntry(); + + NTSTATUS status = STATUS_SUCCESS; + + NET_ADAPTER_WAKE_MEDIA_CHANGE_CAPABILITIES wakeMediaChangeCapabilities; + NET_ADAPTER_WAKE_MEDIA_CHANGE_CAPABILITIES_INIT(&wakeMediaChangeCapabilities); + + wakeMediaChangeCapabilities.MediaConnect = TRUE; + wakeMediaChangeCapabilities.MediaDisconnect = TRUE; + + NetAdapterWakeSetMediaChangeCapabilities(m_handle, &wakeMediaChangeCapabilities); + + WIFI_ADAPTER_WAKE_CAPABILITIES wakeCap{}; + WIFI_ADAPTER_WAKE_CAPABILITIES_INIT(&wakeCap); + if (WIFI_IS_FIELD_AVAILABLE(WIFI_ADAPTER_WAKE_CAPABILITIES, ClientDriverDiagnostic)) + { + wakeCap.ClientDriverDiagnostic = true; + } + WifiAdapterSetWakeCapabilities(m_handle, &wakeCap); + + status = NetvAdapter::ConfigureDataCapabilities(); + if (!NT_SUCCESS(status)) + { + WFCError("%!FUNC!: NetvAdapter::ConfigureDataCapabilities failed with %!STATUS!", status); + return status; + } + + status = NetAdapterStart(m_handle); + if (!NT_SUCCESS(status)) + { + WFCError("%!FUNC!: NetAdapterStart failed with %!STATUS!", status); + return status; + } + + ASSERT(STATUS_SUCCESS == status); + TraceExit(status); + + return status; +} + +NTSTATUS WifiNetvAdapter::CreateRxQueue(NETRXQUEUE_INIT* NetRxQueueInit) +{ + return NetvAdapter::CreateRxQueue(NetRxQueueInit); +} + +NTSTATUS WifiNetvAdapter::CreateTxQueue(NETTXQUEUE_INIT* NetTxQueueInit) +{ + return NetvAdapter::CreateTxQueue(NetTxQueueInit); +} + +void WifiNetvAdapter::Destroy(void) +{ + return NetvAdapter::Destroy(); +}
\ No newline at end of file |
