The following chart summarizes the OIDs used to get or set the general statistics for connection-oriented miniport drivers and NICs.
| Length | Q | S | Name |
|---|---|---|---|
| 4 or 8 | M | OID_GEN_CO_XMIT_PDUS_OK PDUs transmitted without errors |
|
| 4 or 8 | M | OID_GEN_CO_RCV_PDUS_OK PDUs received without errors |
|
| 4 or 8 | M | OID_GEN_CO_XMIT_PDUS_ERROR PDUs not transmitted or transmitted with errors |
|
| 4 or 8 | M | OID_GEN_CO_RCV_PDUS_ERROR PDUs received with errors |
|
| 4 or 8 | M | OID_GEN_CO_RCV_PDUS_NO_BUFFER PDUs missed, no buffers |
|
| 4 or 8 | O | OID_GEN_CO_RCV_CRC_ERROR PDUs received with circular redundancy check (CRC) errors |
|
| 4 or 8 | O | OID_GEN_CO_TRANSMIT_QUEUE_LENGTH Length of transmit queue |
|
| 4 or 8 | O | OID_GEN_CO_BYTES_XMIT Bytes transmitted without errors |
|
| 4 or 8 | O | OID_GEN_CO_BYTES_RCV Bytes received without errors |
|
| 4 or 8 | O | OID_GEN_CO_BYTES_XMIT_OUTSTANDING Bytes awaiting transmission |
|
| 4 or 8 | O | OID_GEN_CO_NETCARD_LOAD The transmit load on a NIC |
All one-Gbps and faster connection-oriented miniport drivers must support 64-bit counters for the following statistics OIDs. All 100Mbps and faster connection-oriented miiniport drivers should support 64-bit counters for the following statistics OIDs:
OID_GEN_CO_XMIT_PDUS_OK
OID_GEN_CO_RCV_PDUS_OK
OID_GEN_CO_BYTES_XMIT
OID_GEN_CO_BYTES_RCV
Such miniport drivers can also support 64-bit counters for other statistics OIDs, such as OIDs that indicate transmit or receive errors.
System support for 64-bit counters is available in Windows XP and later OS versions.
The number of PDUs transmitted without errors.
The number of PDUs the NIC received without errors and indicated to bound protocols.
The number of PDUs a NIC failed to transmit.
The number of PDUs that a NIC received but did not indicate to bound protocols due to errors.
The number of PDUs that the NIC could not receive because of a lack of NIC receive buffer space. Instead of providing the exact number, some NICs provide only the number of times that they have missed at least one PDU because of such a problem.
The number of PDUs received with cyclic redundancy check (CRC) errors.
The number of PDUs currently queued for transmission, whether on the NIC or in a driver-internal queue. The number returned is always the total number of PDUs currently queued, which can include unsubmitted send requests queued in the NDIS library.
The number of bytes in PDUs transmitted without errors.
The number of bytes in PDUs received without errors.
The number of bytes in PDUs that are queued for transmission.
The OID_GEN_CO_NETCARD_LOAD OID returns the relative load on the transmit system of a connection-oriented miniport driver. The miniport driver derives this number by calculating the difference between the amount of data delivered for transmission from protocols and the amount of data actually sent, as indicated by the packets returned to protocols with NdisMCoSendComplete. The result is the amount of outstanding transmit data in the miniport driver at any time.
Because this statistic changes at a very high frequency, the miniport driver port should filter it. The simplest filtering method is to maintain a running average of samples of the outstanding transmit data. For example, each time MiniportCoSendPackets is called, the miniport driver could add the submitted packet size to a miniport driver-defined variable called OutstandingBytes. Each time the miniport driver calls NdisMCoSendComplete, the miniport driver would then subtract the returned packet size from OutstandingBytes. The miniport driver must also maintain a running average, which is the value that the miniport driver should return in response to the OID_GEN_CO_NETCARD_LOAD query. This variable, which could be called RunningAverage, must be updated on each MiniportCoSendPackets, as follows:
RunningAverage = [(RunningAverage * C) + (OutstandingBytes * (128 - C))]/128
In this case, 1 < C < 128. Larger values of C produce smoother filtering.