summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang You (UU) <[email protected]>2025-12-08 13:17:58 -0800
committerYang You (UU) <[email protected]>2025-12-08 13:17:58 -0800
commit4372ea08facd248da112eec0aed34d4e512b6236 (patch)
tree9e4fbb18d0e4e0b261b8d26a78e2d18ad0c494be
parent5d296ca7451db754f37261df544a032bf23b12fb (diff)
have the last Mac byte feature
-rw-r--r--network/netadaptercx/netvadapterlibrary/Interface/netvadapter.h2
-rw-r--r--network/netadaptercx/netvadapterlibrary/code/configuration.cpp3
-rw-r--r--network/wlan/WIFICX/drivercode/adapter.cpp55
-rw-r--r--network/wlan/WIFICX/drivercode/adapter.h11
-rw-r--r--network/wlan/WIFICX/drivercode/device.cpp4
-rw-r--r--network/wlan/WIFICX/km/wificxsampleclientkm.inf12
-rw-r--r--network/wlan/WIFICX/um/wificxsampleclientum.inf12
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