ReactOS 0.4.16-dev-1288-g7ec3a7e
requests.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS DC21x4 Driver
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: Miniport information callbacks
5 * COPYRIGHT: Copyright 2023 Dmitry Borisov <di.sean@protonmail.com>
6 */
7
8/* INCLUDES *******************************************************************/
9
10#include "dc21x4.h"
11
12#include <debug.h>
13
14/* GLOBALS ********************************************************************/
15
17{
44
45 /* Statistics */
66
67 /* Power management */
74};
75
76/* FUNCTIONS ******************************************************************/
77
78static
79VOID
81 _In_ PDC21X4_ADAPTER Adapter,
82 _In_ NDIS_OID Oid,
84{
85 /* When there is no workaround, this function is used to read the hardware RX counters */
86 if (!(Adapter->Features & DC_NEED_RX_OVERFLOW_WORKAROUND))
87 {
88 ULONG RxCounters;
89
90 /*
91 * Read the RX missed frame counter. Note that the RX overflow counter is not supported
92 * on older chips without the workaround enabled and reads will return 0xFFFE****.
93 */
94 RxCounters = DC_READ(Adapter, DcCsr8_RxCounters);
95
96 Adapter->Statistics.ReceiveNoBuffers += RxCounters & DC_COUNTER_RX_NO_BUFFER_MASK;
97 }
98
99 switch (Oid)
100 {
101 case OID_GEN_XMIT_OK:
102 *Counter = Adapter->Statistics.TransmitOk;
103 break;
104 case OID_GEN_RCV_OK:
105 *Counter = Adapter->Statistics.ReceiveOk;
106 break;
108 *Counter = Adapter->Statistics.TransmitErrors;
109 break;
111 *Counter = Adapter->Statistics.ReceiveErrors;
112 break;
114 *Counter = Adapter->Statistics.ReceiveNoBuffers;
115 break;
117 *Counter = Adapter->Statistics.ReceiveUnicast;
118 break;
120 *Counter = Adapter->Statistics.ReceiveMulticast;
121 break;
123 *Counter = Adapter->Statistics.ReceiveBroadcast;
124 break;
126 *Counter = Adapter->Statistics.ReceiveCrcErrors;
127 break;
129 *Counter = Adapter->Statistics.ReceiveAlignmentErrors;
130 break;
132 *Counter = Adapter->Statistics.TransmitOneRetry;
133 break;
135 *Counter = Adapter->Statistics.TransmitMoreCollisions;
136 break;
138 *Counter = Adapter->Statistics.TransmitDeferred;
139 break;
141 *Counter = Adapter->Statistics.TransmitExcessiveCollisions;
142 break;
144 *Counter = Adapter->Statistics.ReceiveOverrunErrors;
145 break;
147 *Counter = Adapter->Statistics.TransmitUnderrunErrors;
148 break;
150 *Counter = Adapter->Statistics.TransmitHeartbeatErrors;
151 break;
153 *Counter = Adapter->Statistics.TransmitLostCarrierSense;
154 break;
156 *Counter = Adapter->Statistics.TransmitLateCollisions;
157 break;
158
159 default:
160 ASSERT(FALSE);
162 break;
163 }
164}
165
166static
167ULONG
169 _In_ PDC21X4_ADAPTER Adapter)
170{
171 ULONG LinkSpeedMbps;
172
173 switch (Adapter->MediaNumber)
174 {
175 case MEDIA_HMR:
176 LinkSpeedMbps = 1;
177 break;
178
179 case MEDIA_10T:
180 case MEDIA_BNC:
181 case MEDIA_AUI:
182 case MEDIA_10T_FD:
183 LinkSpeedMbps = 10;
184 break;
185
186 case MEDIA_100TX_HD:
187 case MEDIA_100TX_FD:
188 case MEDIA_100T4:
189 case MEDIA_100FX_HD:
190 case MEDIA_100FX_FD:
191 LinkSpeedMbps = 100;
192 break;
193
194 case MEDIA_MII:
195 LinkSpeedMbps = Adapter->LinkSpeedMbps;
196 break;
197
198 default:
199 ASSERT(FALSE);
201 break;
202 }
203
204 return LinkSpeedMbps;
205}
206
208NTAPI
210 _In_ NDIS_HANDLE MiniportAdapterContext,
211 _In_ NDIS_OID Oid,
212 _In_ PVOID InformationBuffer,
213 _In_ ULONG InformationBufferLength,
215 _Out_ PULONG BytesNeeded)
216{
217 PDC21X4_ADAPTER Adapter = (PDC21X4_ADAPTER)MiniportAdapterContext;
219 ULONG InfoLength;
220 PVOID InfoPtr;
221 union _GENERIC_INFORMATION
222 {
224 ULONG Ulong;
225 ULONG64 Ulong64;
226 NDIS_MEDIUM Medium;
229 } GenericInfo;
230
231 InfoLength = sizeof(ULONG);
232 InfoPtr = &GenericInfo;
233
234 switch (Oid)
235 {
237 InfoPtr = (PVOID)&DcpSupportedOidList;
238 InfoLength = sizeof(DcpSupportedOidList);
239 break;
240
242 GenericInfo.Ulong = Adapter->PacketFilter;
243 break;
244
246 InfoPtr = Adapter->MulticastList;
247 InfoLength = Adapter->MulticastCount * ETH_LENGTH_OF_ADDRESS;
248 break;
249
251 GenericInfo.Ulong = Adapter->MulticastMaxEntries;
252 break;
253
256 {
257 GenericInfo.Medium = NdisMedium802_3;
258 InfoLength = sizeof(NDIS_MEDIUM);
259 break;
260 }
261
263 {
264 ULONG InterruptStatus;
265
266 /* NOTE: Reading the status register has no effect on the events */
267 InterruptStatus = DC_READ(Adapter, DcCsr5_Status);
268
269 /* Inserted into the motherboard */
270 if (InterruptStatus != 0xFFFFFFFF)
271 GenericInfo.Status = NdisHardwareStatusReady;
272 else
273 GenericInfo.Status = NdisHardwareStatusNotReady;
274
275 InfoLength = sizeof(NDIS_HARDWARE_STATUS);
276 break;
277 }
278
283 break;
284
286 GenericInfo.Ulong = DC_MAXIMUM_FRAME_SIZE;
287 break;
288
290 GenericInfo.Ulong = DC_TRANSMIT_BLOCK_SIZE;
291 break;
292
294 GenericInfo.Ulong = DC_TRANSMIT_BLOCK_SIZE * DC_TRANSMIT_BLOCKS;
295 break;
296
298 GenericInfo.Ulong = DC_RECEIVE_BLOCK_SIZE;
299 break;
300
302 GenericInfo.Ulong = DC_RECEIVE_BLOCK_SIZE * Adapter->RcbCount;
303 break;
304
306 GenericInfo.Ulong = DcGetLinkSpeed(Adapter) * 10000;
307 break;
308
310 GenericInfo.Ulong = 0;
311 GenericInfo.Ulong |= (Adapter->PermanentMacAddress[0] << 16);
312 GenericInfo.Ulong |= (Adapter->PermanentMacAddress[1] << 8);
313 GenericInfo.Ulong |= (Adapter->PermanentMacAddress[2] & 0xFF);
314 break;
315
317 {
318 static const CHAR VendorDesc[] = "DC21x4 compatible Ethernet Adapter";
319 InfoPtr = (PVOID)&VendorDesc;
320 InfoLength = sizeof(VendorDesc);
321 break;
322 }
323
325 /* 1.0.0 */
326 GenericInfo.Ulong = 0x100;
327 break;
328
330 {
331 InfoLength = sizeof(USHORT);
332 GenericInfo.Ushort = (NDIS_MINIPORT_MAJOR_VERSION << 8) | NDIS_MINIPORT_MINOR_VERSION;
333 break;
334 }
335
337 GenericInfo.Ulong = DC_TRANSMIT_BLOCKS - DC_TCB_RESERVE;
338 break;
339
341 GenericInfo.Ulong = NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA |
344 break;
345
347 GenericInfo.Ulong = Adapter->LinkUp ? NdisMediaStateConnected
349 break;
350
352 InfoPtr = Adapter->PermanentMacAddress;
353 InfoLength = ETH_LENGTH_OF_ADDRESS;
354 break;
355
357 InfoPtr = Adapter->CurrentMacAddress;
358 InfoLength = ETH_LENGTH_OF_ADDRESS;
359 break;
360
362 GenericInfo.Ulong = NdisPhysicalMedium802_3;
363 break;
364
365 case OID_GEN_XMIT_OK:
366 case OID_GEN_RCV_OK:
384 {
385 DcQueryStatisticCounter(Adapter, Oid, &GenericInfo.Ulong64);
386
387 *BytesNeeded = sizeof(ULONG64);
388 if (InformationBufferLength < sizeof(ULONG))
389 {
390 *BytesWritten = 0;
392 }
393 if (InformationBufferLength >= sizeof(ULONG64))
394 {
395 *BytesWritten = sizeof(ULONG64);
396 NdisMoveMemory(InformationBuffer, InfoPtr, sizeof(ULONG64));
397 }
398 else
399 {
400 *BytesWritten = sizeof(ULONG);
401 NdisMoveMemory(InformationBuffer, InfoPtr, sizeof(ULONG));
402 }
403
404 return NDIS_STATUS_SUCCESS;
405 }
406
408 GenericInfo.Ulong = (DC_TRANSMIT_BLOCKS - DC_TCB_RESERVE) - Adapter->TcbSlots;
409 break;
410
412 {
414
415 InfoLength = sizeof(NDIS_PNP_CAPABILITIES);
416
417 if (InformationBufferLength < InfoLength)
418 {
419 *BytesWritten = 0;
420 *BytesNeeded = InfoLength;
422 }
423
424 if (!(Adapter->Features & DC_HAS_POWER_MANAGEMENT))
426
427 *BytesWritten = InfoLength;
428 *BytesNeeded = 0;
429
430 Capabilities = InformationBuffer;
431 Capabilities->WakeUpCapabilities.MinMagicPacketWakeUp = NdisDeviceStateD3;
432 Capabilities->WakeUpCapabilities.MinPatternWakeUp = NdisDeviceStateD3;
433 Capabilities->WakeUpCapabilities.MinLinkChangeWakeUp = NdisDeviceStateD3;
434
435 return NDIS_STATUS_SUCCESS;
436 }
437
439 {
440 if (!(Adapter->Features & DC_HAS_POWER_MANAGEMENT))
442
443 return NDIS_STATUS_SUCCESS;
444 }
445
447 {
448 if (!(Adapter->Features & DC_HAS_POWER_MANAGEMENT))
450
451 GenericInfo.Ulong = Adapter->WakeUpFlags & (NDIS_PNP_WAKE_UP_MAGIC_PACKET |
454 break;
455 }
456
457 default:
459 break;
460 }
461
463 {
464 if (InfoLength > InformationBufferLength)
465 {
466 *BytesWritten = 0;
467 *BytesNeeded = InfoLength;
469 }
470 else
471 {
472 NdisMoveMemory(InformationBuffer, InfoPtr, InfoLength);
473 *BytesWritten = InfoLength;
474 *BytesNeeded = 0;
475 }
476 }
477 else
478 {
479 *BytesWritten = 0;
480 *BytesNeeded = 0;
481 }
482
483 return Status;
484}
485
487NTAPI
489 _In_ NDIS_HANDLE MiniportAdapterContext,
490 _In_ NDIS_OID Oid,
491 _In_ PVOID InformationBuffer,
492 _In_ ULONG InformationBufferLength,
494 _Out_ PULONG BytesNeeded)
495{
496 PDC21X4_ADAPTER Adapter = (PDC21X4_ADAPTER)MiniportAdapterContext;
498 ULONG GenericUlong;
499
500 *BytesRead = 0;
501 *BytesNeeded = 0;
502
503 switch (Oid)
504 {
506 {
507 if (InformationBufferLength < sizeof(ULONG))
508 {
509 *BytesNeeded = sizeof(ULONG);
511 break;
512 }
513
514 *BytesRead = sizeof(ULONG);
515 NdisMoveMemory(&GenericUlong, InformationBuffer, sizeof(ULONG));
516
517 if (GenericUlong & ~DC_PACKET_FILTERS)
518 {
520 break;
521 }
522
523 Status = DcApplyPacketFilter(Adapter, GenericUlong);
524 break;
525 }
526
528 {
529 ULONG Size;
530
531 if (InformationBufferLength % ETH_LENGTH_OF_ADDRESS)
532 {
533 *BytesNeeded = (InformationBufferLength / ETH_LENGTH_OF_ADDRESS) *
536 break;
537 }
538
540 if (InformationBufferLength > Size)
541 {
542 *BytesNeeded = Size;
544 break;
545 }
546
547 *BytesRead = InformationBufferLength;
548 NdisMoveMemory(Adapter->MulticastList, InformationBuffer, InformationBufferLength);
549
550 Adapter->MulticastCount = InformationBufferLength / ETH_LENGTH_OF_ADDRESS;
551
552 Status = DcUpdateMulticastList(Adapter);
553 break;
554 }
555
557 {
558 if (InformationBufferLength < sizeof(ULONG))
559 {
560 *BytesNeeded = sizeof(ULONG);
562 break;
563 }
564
565 /* Nothing to do */
566 *BytesRead = sizeof(ULONG);
567 break;
568 }
569
571 {
572 if (InformationBufferLength < sizeof(ULONG))
573 {
574 *BytesNeeded = sizeof(ULONG);
576 break;
577 }
578
579 if (!(Adapter->Features & DC_HAS_POWER_MANAGEMENT))
580 {
582 }
583
584 *BytesRead = sizeof(ULONG);
585 NdisMoveMemory(&GenericUlong, InformationBuffer, sizeof(ULONG));
586
587 Adapter->WakeUpFlags = GenericUlong;
588 break;
589 }
590
592 {
593 if (InformationBufferLength < sizeof(NDIS_PM_PACKET_PATTERN))
594 {
595 *BytesNeeded = sizeof(NDIS_PM_PACKET_PATTERN);
597 break;
598 }
599
600 if (!(Adapter->Features & DC_HAS_POWER_MANAGEMENT))
601 {
603 }
604
606
607 Status = DcAddWakeUpPattern(Adapter, InformationBuffer);
608 break;
609 }
610
612 {
613 if (InformationBufferLength < sizeof(NDIS_PM_PACKET_PATTERN))
614 {
615 *BytesNeeded = sizeof(NDIS_PM_PACKET_PATTERN);
617 break;
618 }
619
620 if (!(Adapter->Features & DC_HAS_POWER_MANAGEMENT))
621 {
623 }
624
626
627 Status = DcRemoveWakeUpPattern(Adapter, InformationBuffer);
628 break;
629 }
630
632 {
633 if (InformationBufferLength < sizeof(NDIS_DEVICE_POWER_STATE))
634 {
635 *BytesNeeded = sizeof(NDIS_DEVICE_POWER_STATE);
637 break;
638 }
639
640 if (!(Adapter->Features & DC_HAS_POWER_MANAGEMENT))
641 {
643 }
644
645 *BytesRead = sizeof(ULONG);
646 NdisMoveMemory(&GenericUlong, InformationBuffer, sizeof(ULONG));
647
648 if (GenericUlong < NdisDeviceStateD0 || GenericUlong > NdisDeviceStateD3)
649 {
650 ASSERT(FALSE);
652 break;
653 }
654
655 DcSetPower(Adapter, GenericUlong);
656 break;
657 }
658
659 default:
661 break;
662 }
663
664 return Status;
665}
static const NDIS_OID DcpSupportedOidList[]
Definition: requests.c:16
static ULONG DcGetLinkSpeed(_In_ PDC21X4_ADAPTER Adapter)
Definition: requests.c:168
static VOID DcQueryStatisticCounter(_In_ PDC21X4_ADAPTER Adapter, _In_ NDIS_OID Oid, _Out_ PULONG64 Counter)
Definition: requests.c:80
NDIS_STATUS NTAPI DcSetInformation(_In_ NDIS_HANDLE MiniportAdapterContext, _In_ NDIS_OID Oid, _In_ PVOID InformationBuffer, _In_ ULONG InformationBufferLength, _Out_ PULONG BytesRead, _Out_ PULONG BytesNeeded)
Definition: requests.c:488
NDIS_STATUS NTAPI DcQueryInformation(_In_ NDIS_HANDLE MiniportAdapterContext, _In_ NDIS_OID Oid, _In_ PVOID InformationBuffer, _In_ ULONG InformationBufferLength, _Out_ PULONG BytesWritten, _Out_ PULONG BytesNeeded)
Definition: requests.c:209
NDIS_STATUS DcUpdateMulticastList(_In_ PDC21X4_ADAPTER Adapter)
Definition: hardware.c:375
#define DC_MAXIMUM_FRAME_SIZE
Definition: dc21x4.h:36
#define DC_HAS_POWER_MANAGEMENT
Definition: dc21x4.h:111
#define DC_NEED_RX_OVERFLOW_WORKAROUND
Definition: dc21x4.h:108
NDIS_STATUS DcSetPower(_In_ PDC21X4_ADAPTER Adapter, _In_ NDIS_DEVICE_POWER_STATE PowerState)
Definition: power.c:191
#define DC_PACKET_FILTERS
Definition: dc21x4.h:46
#define DC_TCB_RESERVE
Definition: dc21x4.h:57
struct _DC21X4_ADAPTER * PDC21X4_ADAPTER
Definition: dc21x4.h:61
FORCEINLINE ULONG DC_READ(_In_ PDC21X4_ADAPTER Adapter, _In_ DC_CSR Register)
Definition: dc21x4.h:262
NDIS_STATUS DcApplyPacketFilter(_In_ PDC21X4_ADAPTER Adapter, _In_ ULONG PacketFilter)
Definition: hardware.c:401
NDIS_STATUS DcRemoveWakeUpPattern(_In_ PDC21X4_ADAPTER Adapter, _In_ PNDIS_PM_PACKET_PATTERN PmPattern)
Definition: power.c:205
#define DC_TRANSMIT_BLOCKS
Definition: dc21x4.h:24
#define DC_TRANSMIT_BLOCK_SIZE
Definition: dc21x4.h:37
NDIS_STATUS DcAddWakeUpPattern(_In_ PDC21X4_ADAPTER Adapter, _In_ PNDIS_PM_PACKET_PATTERN PmPattern)
Definition: power.c:215
#define DC_RECEIVE_BLOCK_SIZE
Definition: dc21x4.h:38
#define DC_ETHERNET_HEADER_SIZE
Definition: dc21x4.h:39
@ DcCsr5_Status
Definition: dc21x4hw.h:179
@ DcCsr8_RxCounters
Definition: dc21x4hw.h:182
#define DC_COUNTER_RX_NO_BUFFER_MASK
Definition: dc21x4hw.h:365
#define FALSE
Definition: types.h:117
#define ETH_LENGTH_OF_ADDRESS
Definition: efilter.h:16
Status
Definition: gdiplustypes.h:25
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
Definition: hidclass.h:103
#define MEDIA_AUI
Definition: media.h:48
#define MEDIA_MII
Definition: media.h:67
#define MEDIA_100TX_FD
Definition: media.h:52
#define MEDIA_100FX_FD
Definition: media.h:55
#define MEDIA_10T_FD
Definition: media.h:51
#define MEDIA_10T
Definition: media.h:46
#define MEDIA_100FX_HD
Definition: media.h:54
#define MEDIA_HMR
Definition: media.h:56
#define MEDIA_100T4
Definition: media.h:53
#define MEDIA_BNC
Definition: media.h:47
#define MEDIA_100TX_HD
Definition: media.h:49
#define ASSERT(a)
Definition: mode.c:44
unsigned __int64 * PULONG64
Definition: imports.h:198
unsigned __int64 ULONG64
Definition: imports.h:198
#define NDIS_STATUS_INVALID_DATA
Definition: ndis.h:486
#define NDIS_STATUS_NOT_SUPPORTED
Definition: ndis.h:479
#define NDIS_STATUS_INVALID_LENGTH
Definition: ndis.h:485
#define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND
Definition: ndis.h:684
#define NDIS_STATUS_INVALID_OID
Definition: ndis.h:488
#define NDIS_STATUS_SUCCESS
Definition: ndis.h:346
#define NDIS_STATUS_BUFFER_TOO_SHORT
Definition: ndis.h:487
#define NDIS_MAC_OPTION_NO_LOOPBACK
Definition: ndis.h:685
#define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA
Definition: ndis.h:682
#define NdisMoveMemory(Destination, Source, Length)
Definition: ndis.h:3896
#define NDIS_STATUS_MULTICAST_FULL
Definition: ndis.h:473
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define UNREACHABLE
#define NDIS_PNP_WAKE_UP_MAGIC_PACKET
Definition: ntddndis.h:372
enum _NDIS_MEDIUM NDIS_MEDIUM
#define OID_GEN_TRANSMIT_BLOCK_SIZE
Definition: ntddndis.h:242
#define OID_GEN_XMIT_OK
Definition: ntddndis.h:267
#define OID_GEN_MAXIMUM_TOTAL_SIZE
Definition: ntddndis.h:249
#define OID_GEN_XMIT_ERROR
Definition: ntddndis.h:269
#define OID_GEN_VENDOR_DRIVER_VERSION
Definition: ntddndis.h:254
@ NdisPhysicalMedium802_3
Definition: ntddndis.h:221
struct _NDIS_PM_PACKET_PATTERN NDIS_PM_PACKET_PATTERN
#define OID_802_3_PERMANENT_ADDRESS
Definition: ntddndis.h:302
#define OID_GEN_LINK_SPEED
Definition: ntddndis.h:239
#define OID_GEN_VENDOR_ID
Definition: ntddndis.h:244
#define OID_802_3_RCV_OVERRUN
Definition: ntddndis.h:312
#define OID_GEN_CURRENT_PACKET_FILTER
Definition: ntddndis.h:246
@ NdisMediaStateConnected
Definition: ntddndis.h:470
@ NdisMediaStateDisconnected
Definition: ntddndis.h:471
#define OID_GEN_RCV_NO_BUFFER
Definition: ntddndis.h:271
#define OID_PNP_SET_POWER
Definition: ntddndis.h:361
#define OID_802_3_XMIT_HEARTBEAT_FAILURE
Definition: ntddndis.h:314
#define OID_GEN_PHYSICAL_MEDIUM
Definition: ntddndis.h:264
enum _NDIS_DEVICE_POWER_STATE NDIS_DEVICE_POWER_STATE
#define OID_802_3_XMIT_ONE_COLLISION
Definition: ntddndis.h:308
#define OID_802_3_XMIT_MORE_COLLISIONS
Definition: ntddndis.h:309
#define OID_802_3_XMIT_MAX_COLLISIONS
Definition: ntddndis.h:311
#define OID_GEN_RECEIVE_BUFFER_SPACE
Definition: ntddndis.h:241
#define OID_802_3_XMIT_TIMES_CRS_LOST
Definition: ntddndis.h:315
#define OID_802_3_MAXIMUM_LIST_SIZE
Definition: ntddndis.h:305
#define OID_GEN_DRIVER_VERSION
Definition: ntddndis.h:248
#define OID_802_3_XMIT_UNDERRUN
Definition: ntddndis.h:313
#define OID_802_3_XMIT_LATE_COLLISIONS
Definition: ntddndis.h:316
#define OID_802_3_CURRENT_ADDRESS
Definition: ntddndis.h:303
#define OID_802_3_MULTICAST_LIST
Definition: ntddndis.h:304
#define OID_GEN_DIRECTED_FRAMES_RCV
Definition: ntddndis.h:281
#define OID_PNP_ENABLE_WAKE_UP
Definition: ntddndis.h:366
#define OID_GEN_TRANSMIT_BUFFER_SPACE
Definition: ntddndis.h:240
#define OID_GEN_MEDIA_SUPPORTED
Definition: ntddndis.h:235
@ NdisMedium802_3
Definition: ntddndis.h:188
#define OID_GEN_BROADCAST_FRAMES_RCV
Definition: ntddndis.h:285
#define OID_PNP_ADD_WAKE_UP_PATTERN
Definition: ntddndis.h:363
#define OID_GEN_MAXIMUM_FRAME_SIZE
Definition: ntddndis.h:238
#define OID_GEN_RCV_CRC_ERROR
Definition: ntddndis.h:286
#define OID_GEN_MEDIA_IN_USE
Definition: ntddndis.h:236
#define OID_GEN_MEDIA_CONNECT_STATUS
Definition: ntddndis.h:252
#define OID_GEN_RCV_OK
Definition: ntddndis.h:268
#define OID_GEN_MAXIMUM_LOOKAHEAD
Definition: ntddndis.h:237
#define OID_802_3_RCV_ERROR_ALIGNMENT
Definition: ntddndis.h:307
int NDIS_STATUS
Definition: ntddndis.h:475
#define OID_PNP_QUERY_POWER
Definition: ntddndis.h:362
#define NDIS_PNP_WAKE_UP_LINK_CHANGE
Definition: ntddndis.h:374
#define OID_GEN_RCV_ERROR
Definition: ntddndis.h:270
@ NdisHardwareStatusNotReady
Definition: ntddndis.h:454
@ NdisHardwareStatusReady
Definition: ntddndis.h:450
#define OID_PNP_REMOVE_WAKE_UP_PATTERN
Definition: ntddndis.h:364
#define OID_PNP_CAPABILITIES
Definition: ntddndis.h:360
#define OID_GEN_CURRENT_LOOKAHEAD
Definition: ntddndis.h:247
#define OID_GEN_MAC_OPTIONS
Definition: ntddndis.h:251
#define OID_GEN_VENDOR_DESCRIPTION
Definition: ntddndis.h:245
#define OID_GEN_SUPPORTED_LIST
Definition: ntddndis.h:233
ULONG NDIS_OID
Definition: ntddndis.h:230
@ NdisDeviceStateD3
Definition: ntddndis.h:41
#define OID_802_3_XMIT_DEFERRED
Definition: ntddndis.h:310
#define OID_GEN_RECEIVE_BLOCK_SIZE
Definition: ntddndis.h:243
#define OID_GEN_MAXIMUM_SEND_PACKETS
Definition: ntddndis.h:253
#define OID_GEN_TRANSMIT_QUEUE_LENGTH
Definition: ntddndis.h:287
#define OID_GEN_HARDWARE_STATUS
Definition: ntddndis.h:234
#define OID_GEN_MULTICAST_FRAMES_RCV
Definition: ntddndis.h:283
#define NDIS_PNP_WAKE_UP_PATTERN_MATCH
Definition: ntddndis.h:373
enum _NDIS_HARDWARE_STATUS NDIS_HARDWARE_STATUS
unsigned short USHORT
Definition: pedump.c:61
ULONG MulticastMaxEntries
Definition: dc21x4.h:202
UCHAR CurrentMacAddress[ETH_LENGTH_OF_ADDRESS]
Definition: dc21x4.h:200
ULONG TcbSlots
Definition: dc21x4.h:137
ULONG RcbCount
Definition: dc21x4.h:213
ULONG PacketFilter
Definition: dc21x4.h:154
UCHAR PermanentMacAddress[ETH_LENGTH_OF_ADDRESS]
Definition: dc21x4.h:199
BOOLEAN LinkUp
Definition: dc21x4.h:176
ULONG Features
Definition: dc21x4.h:107
struct _DC21X4_ADAPTER::@1058 MulticastList[DC_MULTICAST_LIST_SIZE]
ULONG WakeUpFlags
Definition: dc21x4.h:192
static LARGE_INTEGER Counter
Definition: clock.c:43
uint32_t * PULONG
Definition: typedefs.h:59
#define NTAPI
Definition: typedefs.h:36
void * PVOID
Definition: typedefs.h:50
uint32_t ULONG
Definition: typedefs.h:59
unsigned short Ushort
Definition: utypes.h:44
unsigned long Ulong
Definition: utypes.h:42
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
Definition: wdfdevice.h:3034
_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
Definition: wdfiotarget.h:960
_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
Definition: wdfiotarget.h:870
char CHAR
Definition: xmlstorage.h:175