summaryrefslogtreecommitdiff
path: root/network/wlan/wificx/drivercode/adapter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'network/wlan/wificx/drivercode/adapter.cpp')
-rw-r--r--network/wlan/wificx/drivercode/adapter.cpp83
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