The UDI Network Interface Metalanguage (NIM) defines a set of functions that provide all the services required by a Network Driver (ND), in a protocol- and transport-independent manner.
The ND primarily sends and receives network packets, and manages the hardware and the state of the network link, Details such as management of the network address space, topology discovery, and packet composition/decomposition operations are not the responsibility of the NIC driver; they are negotiated between the UDI networking environment and the network protocol stacks.
As shown in the following figure, the role of the NIM is to provide a consistent, portable interface between the driver and the UDI networking environment.
UDI Networking Environment
The driver (ND) communicates with the environment exclusively throught the Network Service Requester (NSR). The ND does this by populating the appropriate control blocks to establish three communication channels (management control and status, transmit data, and receive data) between itself and the NSR. Only one NSR/ND interface is active at any given time.
Transmit flow control is exercised by the ND. Transmit control blocks are owned by the ND and loaned to the NSR. The NSR sends transmit packets to the ND. The ND returns control blocks to the NSR on transmit complete. The NSR never allocates transmit blocks.
Receive flow control is exercised by the NSR. Recieve control blocks are owned by the NSR, filled by the ND, and send to the NSR by the ND. The ND never allocates receive buffers.
The ND also needs to establish a channel with the Bus Bridge Mapper by populating the appropriate control blocks and issuing approproate Bus Bridge Metalanguage calls over a separate bus bridge control channel.
The driver will also use Physical I/O metalanguage calls to communicate with the NIC over the bus.
Other channels not specific to the networking environment, such as Management Agent channels and inter-region communciation channels, will also be required in a UDI NIC driver. See the ``Sample Osicom 2300 NIC Driver (shrkudi)'' for more on the other channels required by the sample NIC driver.