summaryrefslogtreecommitdiff
path: root/network/wlan/WIFICX/drivercode/device.cpp
diff options
context:
space:
mode:
authorYang You (UU) <[email protected]>2025-12-04 15:03:24 -0800
committerYang You (UU) <[email protected]>2025-12-04 15:03:24 -0800
commit977cb2461482a898f96ee08f9cb24eb7f421da03 (patch)
tree071ef1691d00aaee8679603a1059d3eb71442b77 /network/wlan/WIFICX/drivercode/device.cpp
parent83019ae0c63454b2835f8fc245c7505351cee677 (diff)
intergrate the netvadapterlibrary with wificxsampledriver, cleanup the memory related header -KNEW.H
Diffstat (limited to 'network/wlan/WIFICX/drivercode/device.cpp')
-rw-r--r--network/wlan/WIFICX/drivercode/device.cpp81
1 files changed, 62 insertions, 19 deletions
diff --git a/network/wlan/WIFICX/drivercode/device.cpp b/network/wlan/WIFICX/drivercode/device.cpp
index 0fc17ea4..9404b161 100644
--- a/network/wlan/WIFICX/drivercode/device.cpp
+++ b/network/wlan/WIFICX/drivercode/device.cpp
@@ -33,33 +33,67 @@ NTSTATUS EvtDeviceReleaseHardware(WDFDEVICE device, WDFCMRESLIST resourcesTransl
_Use_decl_annotations_
NTSTATUS EvtWifiDeviceCreateAdapter(WDFDEVICE Device, NETADAPTER_INIT* AdapterInit)
{
+ if (WifiAdapterInitGetType(AdapterInit) != WIFI_ADAPTER_EXTENSIBLE_STATION)
+ {
+ WFCError("%!FUNC!: Unsupported adapter type = 0x%x != 0x%x", WifiAdapterInitGetType(AdapterInit), WIFI_ADAPTER_EXTENSIBLE_STATION);
+ return STATUS_NOT_SUPPORTED;
+ }
- //NET_ADAPTER_DATAPATH_CALLBACKS datapathCallbacks;
- //NET_ADAPTER_DATAPATH_CALLBACKS_INIT(&datapathCallbacks, EvtAdapterCreateTxQueue, EvtAdapterCreateRxQueue);
+ NET_ADAPTER_DATAPATH_CALLBACKS datapathCallbacks;
+ NET_ADAPTER_DATAPATH_CALLBACKS_INIT(&datapathCallbacks, EvtAdapterCreateTxQueue, EvtAdapterCreateRxQueue);
- //NetAdapterInitSetDatapathCallbacks(AdapterInit, &datapathCallbacks);
+ NetAdapterInitSetDatapathCallbacks(AdapterInit, &datapathCallbacks);
WDF_OBJECT_ATTRIBUTES adapterAttributes;
WDF_OBJECT_ATTRIBUTES_INIT(&adapterAttributes);
- WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&adapterAttributes, WIFI_IHV_NETADAPTER_CONTEXT);
+ WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&adapterAttributes, WifiNetvAdapter);
adapterAttributes.EvtCleanupCallback = EvtAdapterCleanup;
- NETADAPTER netAdapter{};
- WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(
- NetAdapterCreate(AdapterInit, &adapterAttributes, &netAdapter), "Failed to create NetAdapter");
+ NETADAPTER netAdapter;
+ NTSTATUS ntStatus = NetAdapterCreate(AdapterInit, &adapterAttributes, &netAdapter);
+ if (!NT_SUCCESS(ntStatus))
+ {
+ WFCError("%!FUNC!: NetAdapterCreate failed, status=0x%x", ntStatus);
+ return ntStatus;
+ }
- WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(
- WifiAdapterInitialize(netAdapter), "Failed to initialize WifiAdapter");
+ ntStatus = WifiAdapterInitialize(netAdapter);
+ ASSERT(NT_SUCCESS(ntStatus));
+ if (!NT_SUCCESS(ntStatus))
+ {
+ WFCError("%!FUNC!: WifiAdapterInitialize failed with %!STATUS!", ntStatus);
+ return ntStatus;
+ }
+ auto wifiNetvAdapter = new (reinterpret_cast<void*>(WifiNetvAdapterGetContext(netAdapter))) WifiNetvAdapter(netAdapter, Device);
+ ntStatus = wifiNetvAdapter->Initialize();
+ if (!NT_SUCCESS(ntStatus))
+ {
+ WFCError("%!FUNC!: WifiNetvAdapter::Initialize failed with %!STATUS!", ntStatus);
+ return ntStatus;
+ }
- WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(
- WifiIhvInitAdapterContext(Device, netAdapter), "Failed to initialize WifiAdapterContext");
-
- WX_RETURN_NTSTATUS_IF_NOT_NT_SUCCESS_MSG(
- WifiIhvAdapterStart(netAdapter), "Failed to start WifiIhvAdapter");
+ ntStatus = wifiNetvAdapter->AdapterStart();
+ ASSERT(NT_SUCCESS(ntStatus));
+ if (!NT_SUCCESS(ntStatus))
+ {
+ WFCError("%!FUNC!: WifiNetvAdapter::AdapterStart failed with %!STATUS!", ntStatus);
+ return ntStatus;
+ }
- return STATUS_SUCCESS;
+ WFCInfo("%!FUNC!: Success!");
+ return ntStatus;
+}
+
+_Use_decl_annotations_
+void EvtAdapterCleanup(_In_ WDFOBJECT NetAdapter)
+{
+ TraceEntry();
+ auto wifiNetvAdapter = WifiNetvAdapterGetContext(NetAdapter);
+ wifiNetvAdapter->Destroy();
+ TraceExit(STATUS_SUCCESS);
}
+
_Use_decl_annotations_
NTSTATUS EvtWifiDeviceCreateWifiDirectDevice(WDFDEVICE, WIFIDIRECT_DEVICE_INIT*)
{
@@ -69,10 +103,19 @@ NTSTATUS EvtWifiDeviceCreateWifiDirectDevice(WDFDEVICE, WIFIDIRECT_DEVICE_INIT*)
return status;
}
+
_Use_decl_annotations_
-void EvtAdapterCleanup(_In_ WDFOBJECT NetAdapter)
+NTSTATUS
+EvtAdapterCreateTxQueue(NETADAPTER Adapter, NETTXQUEUE_INIT* Init)
{
- UNREFERENCED_PARAMETER(NetAdapter);
TraceEntry();
- TraceExit(STATUS_SUCCESS);
-} \ No newline at end of file
+ return WifiNetvAdapterGetContext(Adapter)->CreateTxQueue(Init);
+}
+
+_Use_decl_annotations_
+NTSTATUS
+EvtAdapterCreateRxQueue(NETADAPTER Adapter, NETRXQUEUE_INIT* Init)
+{
+ TraceEntry();
+ return WifiNetvAdapterGetContext(Adapter)->CreateRxQueue(Init);
+}