87 switch (Adapter->LinkSpeed)
104 return LinkSpeedMbps;
116 FilterMask &= ~NVREG_PFF_MYADDR;
121 FilterMask &= ~NVREG_PFF_PROMISC;
148 if (Adapter->MulticastListSize > 0)
155 for (
i = 0;
i < Adapter->MulticastListSize; ++
i)
157 PUCHAR MacAddress = Adapter->MulticastList[
i].MacAddress;
162 Mask[
j] &= ~MacAddress[
j];
267 ? Adapter->Statistics.HwTxFrame
268 : (Adapter->Statistics.HwTxZeroReXmt +
269 Adapter->Statistics.HwTxOneReXmt +
270 Adapter->Statistics.HwTxManyReXmt);
273 *
Counter = (Adapter->Statistics.HwRxUnicast +
274 Adapter->Statistics.HwRxMulticast +
275 Adapter->Statistics.HwRxBroadcast);
278 *
Counter = (Adapter->Statistics.HwTxRetryErr +
279 Adapter->Statistics.HwTxLateCol +
280 Adapter->Statistics.HwTxUnderflow +
281 Adapter->Statistics.HwTxLossCarrier +
282 Adapter->Statistics.HwTxExcessDef);
285 *
Counter = (Adapter->Statistics.HwRxFrameAlignErr +
286 Adapter->Statistics.HwRxLenErr +
287 Adapter->Statistics.HwRxRunt +
288 Adapter->Statistics.HwRxFrameTooLong +
289 Adapter->Statistics.HwRxFCSErr +
290 Adapter->Statistics.HwRxFrameErr +
291 Adapter->Statistics.HwRxExtraByte +
292 Adapter->Statistics.HwRxLateCol);
295 *
Counter = (Adapter->Statistics.HwRxDropFrame +
296 Adapter->Statistics.HwRxOverflow +
297 Adapter->Statistics.ReceiveIrqNoBuffers);
300 *
Counter = Adapter->Statistics.HwRxUnicast;
303 *
Counter = Adapter->Statistics.HwRxFCSErr;
306 *
Counter = Adapter->Statistics.HwRxFrameErr;
309 *
Counter = Adapter->Statistics.HwTxOneReXmt;
312 *
Counter = Adapter->Statistics.HwTxManyReXmt;
315 *
Counter = Adapter->Statistics.HwTxDef;
318 *
Counter = Adapter->Statistics.HwTxRetryErr;
321 *
Counter = Adapter->Statistics.HwRxOverflow;
324 *
Counter = Adapter->Statistics.HwTxUnderflow;
327 *
Counter = Adapter->Statistics.HwTxZeroReXmt;
330 *
Counter = Adapter->Statistics.HwTxLossCarrier;
333 *
Counter = Adapter->Statistics.HwTxLateCol;
352 *
Counter = Adapter->Statistics.TransmitOk;
355 *
Counter = Adapter->Statistics.ReceiveOk;
358 *
Counter = Adapter->Statistics.TransmitErrors;
361 *
Counter = Adapter->Statistics.ReceiveErrors;
364 *
Counter = Adapter->Statistics.ReceiveNoBuffers;
370 *
Counter = Adapter->Statistics.ReceiveCrcErrors;
373 *
Counter = Adapter->Statistics.ReceiveAlignmentErrors;
376 *
Counter = Adapter->Statistics.TransmitOneRetry;
379 *
Counter = (Adapter->Statistics.TransmitOk -
380 Adapter->Statistics.TransmitOneRetry -
381 Adapter->Statistics.TransmitZeroRetry);
384 *
Counter = Adapter->Statistics.TransmitDeferred;
387 *
Counter = Adapter->Statistics.TransmitExcessiveCollisions;
390 *
Counter = Adapter->Statistics.ReceiveOverrunErrors;
393 *
Counter = Adapter->Statistics.TransmitUnderrunErrors;
396 *
Counter = Adapter->Statistics.TransmitZeroRetry;
399 *
Counter = Adapter->Statistics.TransmitLostCarrierSense;
402 *
Counter = Adapter->Statistics.TransmitLateCollisions;
433 for (
i = 0;
i <
sizeof(WakeFrame->WakeUpPattern); ++
i)
435 if (WakeFrame->PatternMask.AsUCHAR[
i / 8] & (1 << (
i % 8)))
437 Crc ^= WakeFrame->WakeUpPattern[
i];
438 for (
j = 8;
j > 0; --
j)
440 Crc = (Crc >> 1) ^ (-(
LONG)(Crc & 1) & 0xEDB88320);
475 return 0x10000 << FrameNumber;
521 ULONG FramesEnabled = 0;
551 PowerState2 &= ~NVREG_POWERSTATE2_GATE_CLOCKS;
650 Adapter->PowerStatePending = NewPowerState;
679 Adapter->WakeFrameBitmap &= ~(1 << FrameNumber);
684 min(Pattern->MaskSize, 16));
686 (
PUCHAR)Pattern + Pattern->PatternOffset,
687 min(Pattern->PatternSize, 128));
688 Adapter->WakeFrames[FrameNumber] = WakeFrame;
712 min(Pattern->MaskSize, 16)))
718 (
PUCHAR)Pattern + Pattern->PatternOffset,
719 min(Pattern->PatternSize, 128)))
726 Adapter->WakeFrameBitmap |= (1 <<
i);
727 Adapter->WakeFrames[
i] =
NULL;
751 Adapter->WakeFlags =
Flags;
785 if (InformationBufferLength < InfoLength)
788 *BytesNeeded = InfoLength;
794 TaskOffloadHeader->EncapsulationFormat.EncapsulationHeaderSize !=
sizeof(
ETH_HEADER)))
823 ChecksumTask->
V4Transmit.IpOptionsSupported = 1;
824 ChecksumTask->
V4Transmit.TcpOptionsSupported = 1;
829 ChecksumTask->
V4Receive.IpOptionsSupported = 1;
830 ChecksumTask->
V4Receive.TcpOptionsSupported = 1;
877 Adapter->IpHeaderOffset = TaskOffloadHeader->EncapsulationFormat.EncapsulationHeaderSize;
880 Offset = TaskOffloadHeader->OffsetFirstTask;
887 switch (TaskOffload->
Task)
902 Adapter->Offload.SendTcpChecksum = Task->
V4Transmit.TcpChecksum;
903 Adapter->Offload.SendUdpChecksum = Task->
V4Transmit.UdpChecksum;
904 Adapter->Offload.SendIpChecksum = Task->
V4Transmit.IpChecksum;
906 Adapter->Offload.ReceiveTcpChecksum = Task->
V4Receive.TcpChecksum;
907 Adapter->Offload.ReceiveUdpChecksum = Task->
V4Receive.UdpChecksum;
908 Adapter->Offload.ReceiveIpChecksum = Task->
V4Receive.IpChecksum;
921 if ((TaskOffloadHeader->
926 EncapsulationFormat.EncapsulationHeaderSize !=
sizeof(
ETH_HEADER)))
954 if (Adapter->Offload.ReceiveTcpChecksum ||
955 Adapter->Offload.ReceiveUdpChecksum ||
956 Adapter->Offload.ReceiveIpChecksum)
962 Adapter->TxRxControl &= ~NVREG_TXRXCTL_RXCHECK;
985 union _GENERIC_INFORMATION
995 InfoLength =
sizeof(
ULONG);
996 InfoPtr = &GenericInfo;
1059 GenericInfo.Ulong = 0;
1068 InfoLength =
sizeof(
USHORT);
1069 GenericInfo.Ushort = (NDIS_MINIPORT_MAJOR_VERSION << 8) | NDIS_MINIPORT_MINOR_VERSION;
1075 static const CHAR VendorDesc[] =
"nVidia nForce Ethernet Controller";
1076 InfoPtr = (
PVOID)&VendorDesc;
1077 InfoLength =
sizeof(VendorDesc);
1110 GenericInfo.Ulong = 1;
1117 GenericInfo.Ulong = 0x100;
1149 *BytesNeeded =
sizeof(
ULONG64);
1150 if (InformationBufferLength <
sizeof(
ULONG))
1155 if (InformationBufferLength >=
sizeof(
ULONG64))
1206 InformationBufferLength,
1221 if (InformationBufferLength < InfoLength)
1224 *BytesNeeded = InfoLength;
1247 GenericInfo.Ulong = Adapter->
VlanId;
1258 if (InfoLength > InformationBufferLength)
1261 *BytesNeeded = InfoLength;
1309 if (InformationBufferLength >
sizeof(Adapter->
MulticastList))
1327 if (InformationBufferLength <
sizeof(
ULONG))
1329 *BytesNeeded =
sizeof(
ULONG);
1352 if (InformationBufferLength <
sizeof(
ULONG))
1354 *BytesNeeded =
sizeof(
ULONG);
1366 if (InformationBufferLength <
sizeof(
ULONG))
1368 *BytesNeeded =
sizeof(
ULONG);
1388 Adapter->
VlanId = GenericUlong;
1439 if (InformationBufferLength <
sizeof(
ULONG))
1441 *BytesNeeded =
sizeof(
ULONG);
VOID EXPORT NdisFreeMemory(IN PVOID VirtualAddress, IN UINT Length, IN UINT MemoryFlags)
NDIS_STATUS EXPORT NdisAllocateMemoryWithTag(OUT PVOID *VirtualAddress, IN UINT Length, IN ULONG Tag)
NDIS_STATUS EXPORT NdisScheduleWorkItem(IN PNDIS_WORK_ITEM pWorkItem)
#define ETH_LENGTH_OF_ADDRESS
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
unsigned char _BitScanForward(unsigned long *_Index, unsigned long _Mask)
unsigned __int64 * PULONG64
#define NdisMSetInformationComplete(MiniportAdapterHandle, Status)
struct _NDIS_TASK_OFFLOAD NDIS_TASK_OFFLOAD
#define NdisReleaseSpinLock(_SpinLock)
#define NDIS_PACKET_TYPE_PROMISCUOUS
#define NDIS_STATUS_PENDING
struct _NDIS_TASK_OFFLOAD * PNDIS_TASK_OFFLOAD
#define NdisZeroMemory(Destination, Length)
#define NdisInitializeWorkItem(_WI_, _R_, _C_)
@ UNSPECIFIED_Encapsulation
@ IEEE_802_3_Encapsulation
#define NDIS_STATUS_INVALID_DATA
#define NDIS_STATUS_NOT_SUPPORTED
#define NDIS_TASK_OFFLOAD_VERSION
struct _NDIS_TASK_TCP_LARGE_SEND * PNDIS_TASK_TCP_LARGE_SEND
#define NDIS_STATUS_INVALID_LENGTH
struct _NDIS_TASK_TCP_IP_CHECKSUM NDIS_TASK_TCP_IP_CHECKSUM
#define NDIS_STATUS_FAILURE
#define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND
#define NDIS_PACKET_TYPE_BROADCAST
#define NdisStallExecution
#define NDIS_STATUS_INVALID_OID
#define NDIS_STATUS_SUCCESS
struct _NDIS_TASK_OFFLOAD_HEADER NDIS_TASK_OFFLOAD_HEADER
#define NdisFillMemory(Destination, Length, Fill)
#define NDIS_STATUS_BUFFER_TOO_SHORT
#define NDIS_PACKET_TYPE_MULTICAST
struct _NDIS_TASK_TCP_LARGE_SEND NDIS_TASK_TCP_LARGE_SEND
#define NdisEqualMemory(Source1, Source2, Length)
#define NDIS_PACKET_TYPE_ALL_MULTICAST
#define NDIS_MAC_OPTION_NO_LOOPBACK
#define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA
#define NdisAcquireSpinLock(_SpinLock)
#define NDIS_MAC_OPTION_8021P_PRIORITY
#define NDIS_TASK_TCP_LARGE_SEND_V0
#define NdisMoveMemory(Destination, Source, Length)
#define NDIS_STATUS_RESOURCES
#define NDIS_STATUS_MULTICAST_FULL
struct _NDIS_TASK_TCP_IP_CHECKSUM * PNDIS_TASK_TCP_IP_CHECKSUM
VOID NvNetStartReceiver(_In_ PNVNET_ADAPTER Adapter)
VOID NvNetStopReceiver(_In_ PNVNET_ADAPTER Adapter)
VOID NvNetIdleTransmitter(_In_ PNVNET_ADAPTER Adapter, _In_ BOOLEAN ClearPhyControl)
NDIS_STATUS NvNetInitNIC(_In_ PNVNET_ADAPTER Adapter, _In_ BOOLEAN InitPhy)
VOID NvNetStopTransmitter(_In_ PNVNET_ADAPTER Adapter)
#define DECLSPEC_NOINLINE
#define UNREFERENCED_PARAMETER(P)
#define NDIS_PNP_WAKE_UP_MAGIC_PACKET
enum _NDIS_MEDIUM NDIS_MEDIUM
#define OID_GEN_TRANSMIT_BLOCK_SIZE
#define OID_GEN_MAXIMUM_TOTAL_SIZE
#define OID_GEN_XMIT_ERROR
#define OID_GEN_VENDOR_DRIVER_VERSION
struct _NDIS_PM_PACKET_PATTERN NDIS_PM_PACKET_PATTERN
#define OID_802_3_PERMANENT_ADDRESS
#define OID_GEN_LINK_SPEED
#define OID_GEN_VENDOR_ID
#define OID_802_3_RCV_OVERRUN
#define OID_GEN_CURRENT_PACKET_FILTER
@ NdisMediaStateConnected
@ NdisMediaStateDisconnected
#define OID_GEN_RCV_NO_BUFFER
#define OID_PNP_SET_POWER
#define OID_802_3_XMIT_HEARTBEAT_FAILURE
enum _NDIS_DEVICE_POWER_STATE NDIS_DEVICE_POWER_STATE
#define OID_802_3_XMIT_ONE_COLLISION
#define OID_802_3_XMIT_MORE_COLLISIONS
#define OID_802_3_XMIT_MAX_COLLISIONS
#define OID_GEN_RECEIVE_BUFFER_SPACE
#define OID_802_3_XMIT_TIMES_CRS_LOST
#define OID_802_3_MAXIMUM_LIST_SIZE
#define OID_GEN_DRIVER_VERSION
#define OID_802_3_XMIT_UNDERRUN
#define OID_802_3_XMIT_LATE_COLLISIONS
#define OID_802_3_CURRENT_ADDRESS
#define OID_802_3_MULTICAST_LIST
struct _NDIS_PNP_CAPABILITIES NDIS_PNP_CAPABILITIES
#define OID_GEN_DIRECTED_FRAMES_RCV
#define OID_PNP_ENABLE_WAKE_UP
#define OID_GEN_TRANSMIT_BUFFER_SPACE
#define OID_GEN_MEDIA_SUPPORTED
#define OID_PNP_ADD_WAKE_UP_PATTERN
#define OID_GEN_MAXIMUM_FRAME_SIZE
#define OID_GEN_RCV_CRC_ERROR
#define NDIS_MAC_OPTION_8021Q_VLAN
#define OID_GEN_MEDIA_IN_USE
#define OID_GEN_MEDIA_CONNECT_STATUS
#define OID_GEN_MAXIMUM_LOOKAHEAD
#define OID_802_3_RCV_ERROR_ALIGNMENT
#define OID_PNP_QUERY_POWER
#define NDIS_PNP_WAKE_UP_LINK_CHANGE
#define OID_GEN_RCV_ERROR
@ NdisHardwareStatusReady
#define OID_PNP_REMOVE_WAKE_UP_PATTERN
#define OID_PNP_CAPABILITIES
#define OID_TCP_TASK_OFFLOAD
#define OID_GEN_CURRENT_LOOKAHEAD
#define OID_GEN_MAC_OPTIONS
#define OID_GEN_VENDOR_DESCRIPTION
#define OID_GEN_SUPPORTED_LIST
#define OID_802_3_XMIT_DEFERRED
#define OID_GEN_RECEIVE_BLOCK_SIZE
#define OID_GEN_MAXIMUM_SEND_PACKETS
#define OID_GEN_TRANSMIT_QUEUE_LENGTH
#define OID_GEN_HARDWARE_STATUS
#define NDIS_PNP_WAKE_UP_PATTERN_MATCH
enum _NDIS_HARDWARE_STATUS NDIS_HARDWARE_STATUS
_In_ ULONG _In_ ULONG Offset
#define NVREG_PFF_PROMISC
#define NVREG_POWERSTATE_VALID
#define DEV_HAS_POWER_CNTRL
#define NVREG_RCVCTL_START
#define NVREG_MCASTADDRA_FORCE
#define NV_TXRX_RESET_DELAY
#define NVREG_LINKSPEED_1000
#define NVREG_LINKSPEED_100
#define NVREG_WAKEUPFLAGS_ENABLE_WAKEUPPAT
#define NVREG_POWERSTATE2_GATE_CLOCKS
#define NVREG_POWERSTATE_POWEREDUP
#define DEV_HAS_STATISTICS_COUNTERS
#define NVREG_TXRXCTL_BIT2
#define NVREG_POWERSTATE2_GATE_CLOCK_2
#define DEV_HAS_STATISTICS_V2
#define NV_PATTERN_V2_OFFSET
#define NVREG_POWERSTATE2_GATE_CLOCK_3
#define NVREG_POWERSTATE2_WAKEUPPAT_6
#define NVREG_POWERSTATE2_GATE_CLOCK_1
#define NVREG_TXRXCTL_RESET
#define DEV_HAS_STATISTICS_V3
#define NV_POWER_ATTEMPTS
#define NVREG_POWERSTATE2_WAKEUPPAT_5
#define NV_WAKEUPMASKENTRIES
#define NVREG_TXRXCTL_RXCHECK
#define NV_WAKEUPPATTERNS
#define NVREG_LINKSPEED_10
#define NVREG_POWERSTATE2_WAKEUPPAT_7
#define NVREG_WAKEUPFLAGS_ENABLE_MAGPAT
#define NVREG_WAKEUPFLAGS_ENABLE_LINKCHANGE
#define NVREG_PFF_PAUSE_RX
static ULONG NvNetGetWakeUp(_In_ PNVNET_ADAPTER Adapter)
static VOID NvNetQuerySoftwareCounter(_In_ PNVNET_ADAPTER Adapter, _In_ NDIS_OID Oid, _Out_ PULONG64 Counter)
static VOID NvNetEnableWakeUp(_In_ PNVNET_ADAPTER Adapter, _In_ ULONG Flags)
static VOID NvNetReadStatistics(_In_ PNVNET_ADAPTER Adapter)
static VOID NvNetQueryHwCounter(_In_ PNVNET_ADAPTER Adapter, _In_ NDIS_OID Oid, _Out_ PULONG64 Counter)
static NDIS_STATUS NvNetGetTcpTaskOffload(_In_ PNVNET_ADAPTER Adapter, _In_ PNDIS_TASK_OFFLOAD_HEADER TaskOffloadHeader, _In_ ULONG InformationBufferLength, _Out_ PULONG BytesWritten, _Out_ PULONG BytesNeeded)
static ULONG FrameNumberToPowerMask(_In_ ULONG FrameNumber)
VOID NvNetSetPowerState(_In_ PNVNET_ADAPTER Adapter, _In_ NDIS_DEVICE_POWER_STATE NewPowerState, _In_ ULONG WakeFlags)
static DECLSPEC_NOINLINE VOID NvNetApplyPacketFilter(_In_ PNVNET_ADAPTER Adapter)
static NDIS_STATUS NvNetFillPowerManagementCapabilities(_In_ PNVNET_ADAPTER Adapter, _Out_ PNDIS_PNP_CAPABILITIES Capabilities)
static NDIS_STATUS NvNetSetPower(_In_ PNVNET_ADAPTER Adapter, _In_ NDIS_DEVICE_POWER_STATE NewPowerState)
static VOID NTAPI NvNetPowerWorker(_In_ PNDIS_WORK_ITEM WorkItem, _In_opt_ PVOID Context)
static NDIS_STATUS NvNetAddWakeUpPattern(_In_ PNVNET_ADAPTER Adapter, _In_ PNDIS_PM_PACKET_PATTERN Pattern)
static ULONG NvNetGetLinkSpeed(_In_ PNVNET_ADAPTER Adapter)
static const NDIS_OID NvpSupportedOidList[]
static ULONG BuildFrameSignature(_In_ PNVNET_WAKE_FRAME WakeFrame)
static ULONG FrameNumberToWakeUpMask(_In_ ULONG FrameNumber)
static NDIS_STATUS NvNetSetTcpTaskOffload(_Inout_ PNVNET_ADAPTER Adapter, _In_ PNDIS_TASK_OFFLOAD_HEADER TaskOffloadHeader, _In_ PULONG BytesRead)
NDIS_STATUS NTAPI MiniportQueryInformation(_In_ NDIS_HANDLE MiniportAdapterContext, _In_ NDIS_OID Oid, _In_ PVOID InformationBuffer, _In_ ULONG InformationBufferLength, _Out_ PULONG BytesWritten, _Out_ PULONG BytesNeeded)
static ULONG PacketFilterToMask(_In_ ULONG PacketFilter)
static NDIS_STATUS NvNetRemoveWakeUpPattern(_In_ PNVNET_ADAPTER Adapter, _In_ PNDIS_PM_PACKET_PATTERN Pattern)
static VOID WriteWakeFrame(_In_ PNVNET_ADAPTER Adapter, _In_ PNVNET_WAKE_FRAME WakeFrame, _In_ ULONG FrameNumber)
NDIS_STATUS NTAPI MiniportSetInformation(_In_ NDIS_HANDLE MiniportAdapterContext, _In_ NDIS_OID Oid, _In_ PVOID InformationBuffer, _In_ ULONG InformationBufferLength, _Out_ PULONG BytesRead, _Out_ PULONG BytesNeeded)
VOID NvNetFlushTransmitQueue(_In_ PNVNET_ADAPTER Adapter, _In_ NDIS_STATUS CompleteStatus)
DECLSPEC_NOINLINE VOID NvNetPauseProcessing(_In_ PNVNET_ADAPTER Adapter)
VOID NvNetStopAdapter(_In_ PNVNET_ADAPTER Adapter)
VOID NvNetStartAdapter(_In_ PNVNET_ADAPTER Adapter)
#define NVNET_RECEIVE_DESCRIPTORS
#define NVNET_MULTICAST_LIST_SIZE
#define NVNET_TRANSMIT_BLOCKS
#define NVNET_MINIMUM_LSO_SEGMENT_COUNT
#define NVNET_MAXIMUM_LSO_FRAME_SIZE
#define NV_PACKET_PRIORITY
#define NV_SEND_LARGE_SEND
struct _NVNET_ADAPTER * PNVNET_ADAPTER
#define NVNET_MAXIMUM_VLAN_ID
FORCEINLINE VOID NV_WRITE(_In_ PNVNET_ADAPTER Adapter, _In_ NVNET_REGISTER Register, _In_ ULONG Value)
FORCEINLINE ULONG NV_READ(_In_ PNVNET_ADAPTER Adapter, _In_ NVNET_REGISTER Register)
#define NVNET_PACKET_FILTERS
struct _NDIS_TASK_TCP_IP_CHECKSUM::@2110 V4Transmit
struct _NDIS_TASK_TCP_IP_CHECKSUM::@2111 V4Receive
UCHAR PermanentMacAddress[ETH_LENGTH_OF_ADDRESS]
struct _NVNET_ADAPTER::@1011 MulticastList[NVNET_MULTICAST_LIST_SIZE]
NDIS_HANDLE AdapterHandle
UCHAR CurrentMacAddress[ETH_LENGTH_OF_ADDRESS]
union _NVNET_WAKE_FRAME::@1010 PatternMask
static LARGE_INTEGER Counter
#define FIELD_OFFSET(t, f)
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesWritten
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesRead
_Must_inspect_result_ _In_ PWDF_WORKITEM_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWORKITEM * WorkItem
_Must_inspect_result_ _In_ ULONG Flags