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:

  1. 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.

  2. 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)