MB / NDIS 6.20 Interfacing Overview
This topic is designed to provide enough background about the NDIS 6.20 Specification to put the MB driver model into perspective. It is not intended to be a reference for NDIS 6.20. In the case of discrepancies between this content and the NDIS 6.20 Specification, see the NDIS 6.20 documentation for complete information.
In NDIS 6.20, the MB Service calls NdisOidRequest to issue OID requests to the miniport driver. Then, miniport drivers call NdisMIndicateStatusEx to return data back to the MB Service.
NDIS 6.20 supports the following types of OID operations:
Set operations that send data from the service to a miniport driver.
Query operations that request miniport drivers to return data to the service.
Method operations, equivalent to a function call, that have both input parameters and output parameters.
Finally, miniport drivers may send indications that contain data to notify the service about state changes in the MB device.
Receiving Set and Query Requests
MB miniport drivers implement the MiniportOidRequest NDIS handler to respond to both set and query requests.
Sending Status Indications
Miniport drivers provide status indications to the MB Service by calling NdisMIndicateStatusEx. See the NDIS_STATUS_INDICATION structure for more details about status indications.
Connection State Indications
NDIS 6.20 miniport drivers must use the NDIS_STATUS_LINK_STATE status indication to notify NDIS and overlying drivers that there has been a change in the physical characteristics of a transmission medium.
The StatusBuffer member of the NDIS_STATUS_INDICATION structure is an NDIS_LINK_STATE structure, which specifies the physical state of the transmission medium.
MB miniport drivers should avoid sending the NDIS_STATUS_LINK_STATUS status indication if there have been no changes in the physical state of the medium. However, miniport drivers are not necessarily required to avoid sending this status indication.
MB miniport drivers must report the maximum data rate of the currently connected data-class. A change in data-class while connected must result in a Connection State Indication with the corresponding data rate reported. The following is a recommended implementation of this rule:
MB miniport drivers that conform to this specification must use NDIS_STATUS_LINK_STATE to indicate connection status changes instead of NDIS_STATUS_MEDIA_CONNECT, NDIS_STATUS_MEDIA_DISCONNECT, or NDIS_STATUS_LINK_SPEED_CHANGE (as in NDIS 5.1) for connection status indications.
The XmitLinkSpeed and RcvLinkSpeed members of the NDIS_LINK_STATE structure must not report NDIS_LINK_SPEED_UNKNOWN. Miniport drivers must report the speed by using the information in the following tables.
For GSM-based MB device speed links
Data class | XmitLinkSpeed | RcvLinkSpeed |
---|---|---|
GPRS |
8 to 48 kbps |
8 to 48 kbps |
EDGE |
8 to 220 kbps |
8 to 220 kbps |
UMTS |
64 to 384 kbps |
64 to 384 kbps |
HSDPA |
64 to 5.76 mbps |
1.8 to 14.4 mbps |
HSUPA |
1.4 to 5.76 mbps |
64 kbps to 7.2 mbps |
For CDMA-based MB device speed links
Data Class | XmitLinkSpeed | RcvLinkSpeed |
---|---|---|
1xRTT | 115.2 kbps to 307.2 kbps | 153.6 kbps to 3 mbps |
3xRTT | 614 kbps to 1.04 mbps | 307.2 kbps to 1.04 mbps |
1xEV-DO | 153.6 kbps | 2.4 mbps |
1xEvDO Rev. A. | 1.8 mbps | 3.1 mbps |
1xEV-DV | 1.8 mbps | 3.1 mbps |
1xEvDO Rev. B. | 27 mbps | 3.1 mbps to 73.5 mbps |
Note MB devices should report the speed in the range of speed shown in the previous tables.
Unlike NDIS 5.1, different link state change indications are consolidated into a single NDIS_STATUS_LINK_STATE indication by using the NDIS_LINK_STATE data structure. NDIS 5.1 indications can be mapped to this structure according to the information in the following table. In the case of link speed change, the consumer of the indication should compare the transmitting and receiving speed values with the ones it recorded for a previous indication to decide whether the link speed change has occurred or not.
Connection status indication mapping from NDIS 5.1 to 6.x
NDIS 5.1 indication NDIS 6.x NDIS_LINK_STATE data structure Parameter Value NDIS_STATUS_MEDIA_CONNECT
MediaConnectState
MediaConnectStateConnected
NDIS_STATUS_MEDIA_DISCONNECT
MediaConnectState
MediaConnectStateDisconnected
NDIS_STATUS_LINK_SPEED_CHANGE
XmitLinkSpeed
Transmitting speed (bps)
RcvLinkSpeed
Receiving speed (bps)