diff options
| author | Yang You (UU) <[email protected]> | 2025-12-08 13:17:58 -0800 |
|---|---|---|
| committer | Yang You (UU) <[email protected]> | 2025-12-08 13:17:58 -0800 |
| commit | 4372ea08facd248da112eec0aed34d4e512b6236 (patch) | |
| tree | 9e4fbb18d0e4e0b261b8d26a78e2d18ad0c494be | |
| parent | 5d296ca7451db754f37261df544a032bf23b12fb (diff) | |
have the last Mac byte feature
| -rw-r--r-- | network/netadaptercx/netvadapterlibrary/Interface/netvadapter.h | 2 | ||||
| -rw-r--r-- | network/netadaptercx/netvadapterlibrary/code/configuration.cpp | 3 | ||||
| -rw-r--r-- | network/wlan/WIFICX/drivercode/adapter.cpp | 55 | ||||
| -rw-r--r-- | network/wlan/WIFICX/drivercode/adapter.h | 11 | ||||
| -rw-r--r-- | network/wlan/WIFICX/drivercode/device.cpp | 4 | ||||
| -rw-r--r-- | network/wlan/WIFICX/km/wificxsampleclientkm.inf | 12 | ||||
| -rw-r--r-- | network/wlan/WIFICX/um/wificxsampleclientum.inf | 12 |
7 files changed, 29 insertions, 70 deletions
diff --git a/network/netadaptercx/netvadapterlibrary/Interface/netvadapter.h b/network/netadaptercx/netvadapterlibrary/Interface/netvadapter.h index f4160dfa..88976291 100644 --- a/network/netadaptercx/netvadapterlibrary/Interface/netvadapter.h +++ b/network/netadaptercx/netvadapterlibrary/Interface/netvadapter.h @@ -108,7 +108,7 @@ private: ) const; - virtual NTSTATUS NetvAdapterReadAddress(); + NTSTATUS NetvAdapterReadAddress(); }; extern NetvAdapter* NetvAdapterGetContextFromWDFObject(NETADAPTER netAdapter); diff --git a/network/netadaptercx/netvadapterlibrary/code/configuration.cpp b/network/netadaptercx/netvadapterlibrary/code/configuration.cpp index 360cc43d..7482ef84 100644 --- a/network/netadaptercx/netvadapterlibrary/code/configuration.cpp +++ b/network/netadaptercx/netvadapterlibrary/code/configuration.cpp @@ -28,9 +28,6 @@ NETVADAPTER_ADVANCED_PROPERTY NetvSupportedProperties[] = { CONSTANT_UNICODE_STRING(L"LinkProcIndex"), NETV_OFFSET(LinkProcIndex), NETV_SIZE(LinkProcIndex), 1000, 0, 1023 }, { CONSTANT_UNICODE_STRING(L"S0Idle"), NETV_OFFSET(S0Idle), NETV_SIZE(S0Idle), 0, 0, 1 }, { CONSTANT_UNICODE_STRING(L"EnableUsoUro"), NETV_OFFSET(EnableUsoUro), NETV_SIZE(EnableUsoUro), 0, 0, 1 }, -#if ((NETADAPTER_VERSION_MAJOR == 2) && (NETADAPTER_VERSION_MINOR >= 6)) - { CONSTANT_UNICODE_STRING(L"PreallocatedRxBuffers"), NETV_OFFSET(PreallocatedRxBuffers), NETV_SIZE(PreallocatedRxBuffers), 0, 0, 1 }, -#endif //NETCX 2.6 only }; NTSTATUS diff --git a/network/wlan/WIFICX/drivercode/adapter.cpp b/network/wlan/WIFICX/drivercode/adapter.cpp index b2f736b9..fd44c72b 100644 --- a/network/wlan/WIFICX/drivercode/adapter.cpp +++ b/network/wlan/WIFICX/drivercode/adapter.cpp @@ -1,8 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. #include "precomp.h" - -#include "device.h" - #include "adapter.h" #include "adapter.tmh" @@ -28,58 +25,6 @@ NTSTATUS WifiNetvAdapter::Initialize() return NetvAdapter::Initialize(); } -// the Xfilter.h should be included in the share(currently in km only) -#ifndef _KERNEL_MODE -// -// This macro is used to copy from one network address to -// another. -// -#define ETH_COPY_NETWORK_ADDRESS(_D, _S) \ -{ \ - *((ULONG UNALIGNED *)(_D)) = *((ULONG UNALIGNED *)(_S)); \ - *((USHORT UNALIGNED *)((UCHAR *)(_D)+4)) = *((USHORT UNALIGNED *)((UCHAR *)(_S)+4)); \ -} -// -// ZZZ This is a little-endian specific check. -// -#define ETH_IS_MULTICAST(Address) \ - (BOOLEAN)(((PUCHAR)(Address))[0] & ((UCHAR)0x01)) - -// -// Check whether an address is broadcast. -// -#define ETH_IS_BROADCAST(Address) \ - ((((PUCHAR)(Address))[0] == ((UCHAR)0xff)) && (((PUCHAR)(Address))[1] == ((UCHAR)0xff)) && (((PUCHAR)(Address))[2] == ((UCHAR)0xff)) && (((PUCHAR)(Address))[3] == ((UCHAR)0xff)) && (((PUCHAR)(Address))[4] == ((UCHAR)0xff)) && (((PUCHAR)(Address))[5] == ((UCHAR)0xff))) - -#endif // _KERNEL_MODE - -NTSTATUS WifiNetvAdapter::NetvAdapterReadAddress() -{ - UCHAR MACLastByteFinial = (UCHAR)MACLastByte; - if (MACLastByteFinial == 0) - { - MACLastByteFinial++; - } - - PermanentAddress.Length = MAC_ADDR_LEN; - - ETH_COPY_NETWORK_ADDRESS(PermanentAddress.Address, NetvMacAddressBase); - PermanentAddress.Address[MAC_ADDR_LEN - 1] = MACLastByteFinial; - if (ETH_IS_MULTICAST(PermanentAddress.Address) || ETH_IS_BROADCAST(PermanentAddress.Address)) - { - WFCError("%!FUNC!: Failed with %!STATUS!", STATUS_INVALID_ADDRESS); - return STATUS_INVALID_ADDRESS; - } - - RtlCopyMemory(&CurrentAddress, &PermanentAddress, sizeof(PermanentAddress)); - - EnlIndex = (MACLastByteFinial - 1) >> 1; - EnlPortIndex = (MACLastByteFinial - 1) & 1; - EnlIndexValid = TRUE; - - return STATUS_SUCCESS; -} - NTSTATUS WifiNetvAdapter::AdapterStart() { TraceEntry(); diff --git a/network/wlan/WIFICX/drivercode/adapter.h b/network/wlan/WIFICX/drivercode/adapter.h index ecc597e8..0b7aa093 100644 --- a/network/wlan/WIFICX/drivercode/adapter.h +++ b/network/wlan/WIFICX/drivercode/adapter.h @@ -1,14 +1,10 @@ // Copyright (C) Microsoft Corporation. All rights reserved. #pragma once - #include "device.h" #include "netvadapter.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 +// for STA TX DEMUX +#define MaxNumOfPeers 1 // Context for each "Wdi Port"[NetAdapter] instance. // Each NetAdapter instance corresponds to an IP interface @@ -41,9 +37,6 @@ public: bool CanReportWifiWakeSourceTypeClientDriverDiagnostic; -private: - NTSTATUS - NetvAdapterReadAddress() override; }; WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(WifiNetvAdapter, WifiNetvAdapterGetContext);
\ No newline at end of file diff --git a/network/wlan/WIFICX/drivercode/device.cpp b/network/wlan/WIFICX/drivercode/device.cpp index 31639c9f..d251121d 100644 --- a/network/wlan/WIFICX/drivercode/device.cpp +++ b/network/wlan/WIFICX/drivercode/device.cpp @@ -49,6 +49,10 @@ NTSTATUS EvtWifiDeviceCreateAdapter(WDFDEVICE Device, NETADAPTER_INIT* AdapterIn WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&adapterAttributes, WifiNetvAdapter); adapterAttributes.EvtCleanupCallback = EvtAdapterCleanup; + WIFI_ADAPTER_TX_DEMUX peerInfoDemux; + WIFI_ADAPTER_TX_PEER_ADDRESS_DEMUX_INIT(&peerInfoDemux, MaxNumOfPeers); + WifiAdapterInitAddTxDemux(AdapterInit, &peerInfoDemux); + NETADAPTER netAdapter; NTSTATUS ntStatus = NetAdapterCreate(AdapterInit, &adapterAttributes, &netAdapter); if (!NT_SUCCESS(ntStatus)) diff --git a/network/wlan/WIFICX/km/wificxsampleclientkm.inf b/network/wlan/WIFICX/km/wificxsampleclientkm.inf index a29d9721..1968ff32 100644 --- a/network/wlan/WIFICX/km/wificxsampleclientkm.inf +++ b/network/wlan/WIFICX/km/wificxsampleclientkm.inf @@ -37,7 +37,7 @@ wificxsampleclientkm.sys = 1,, CopyFiles = File_Copy Characteristics = 0x84 ; NCF_HAS_UI, NCF_PHYSICAL BusType = 0 ; Internal -AddReg = wificxsampleclientkm.reg +AddReg = wificxsampleclientkm.reg, netvadapter.params *IfType = 71 ; IF_TYPE_IEEE80211 *MediaType = 16 ; NdisMediumNative802_11 *PhysicalMediaType = 9 ; NdisPhysicalMediumNative802_11 @@ -84,3 +84,13 @@ ManufacturerName = "WDK Sample" DiskName = "Wificxsampleclientkm Installation Disk" wificxsampleclientkm.DeviceDesc = "[KMDF]Wificx Sample Client Device" wificxsampleclientkm.SVCDESC = "Wificxsampleclientkm Service" + +[netvadapter.params] +; MACLastByte + HKR, Ndi\params\MACLastByte, ParamDesc, 0, "MACLastByte" + HKR, Ndi\params\MACLastByte, default, 0, "1" + HKR, Ndi\params\MACLastByte, type, 0, "int" + HKR, Ndi\params\MACLastByte, min, 0, "1" + HKR, Ndi\params\MACLastByte, max, 0, "254" + HKR, Ndi\params\MACLastByte, step, 0, "1" + HKR, Ndi\params\MACLastByte, Optional, 0, "0"
\ No newline at end of file diff --git a/network/wlan/WIFICX/um/wificxsampleclientum.inf b/network/wlan/WIFICX/um/wificxsampleclientum.inf index 35477349..98633234 100644 --- a/network/wlan/WIFICX/um/wificxsampleclientum.inf +++ b/network/wlan/WIFICX/um/wificxsampleclientum.inf @@ -31,7 +31,7 @@ Characteristics = 0x1 ; NCF_VIRTUAL *PhysicalMediaType = 9 ; NdisPhysicalMediumNative802_11 BusType = 15 ; PnpBus NumberOfNetworkInterfaces = 5 -AddReg = Wificxsampleclientum.reg +AddReg = Wificxsampleclientum.reg, netvadapter.params CopyFiles = Wificxsampleclientum.Copy [Wificxsampleclientum_Device.ndi.Hw] @@ -95,3 +95,13 @@ wificxsampleclientum.dll = 1 ManufacturerName = "WDK Sample" DiskName = "wificxsampleclientum Installation Disk" DeviceName = "[UMDF] Wificx Sample Client Device" + +[netvadapter.params] +; MACLastByte + HKR, Ndi\params\MACLastByte, ParamDesc, 0, "MACLastByte" + HKR, Ndi\params\MACLastByte, default, 0, "1" + HKR, Ndi\params\MACLastByte, type, 0, "int" + HKR, Ndi\params\MACLastByte, min, 0, "1" + HKR, Ndi\params\MACLastByte, max, 0, "254" + HKR, Ndi\params\MACLastByte, step, 0, "1" + HKR, Ndi\params\MACLastByte, Optional, 0, "0"
\ No newline at end of file |
