Network Driver Coding Specifics

Network driver instantiation

Once a UDI NIC driver is compiled, packaged, installed on a taret system, and loaded into the running kernel, the UDI environment follows this process to initialize a Network Driver (ND) instance for a newly installed NIC:

  1. The Bus Bridge, which is the parent of all NDs, is instantiated, and a mgmt channel between the Bus Bridge and the MA is established. The MA sends a parent enumeration request to the Bus Bridge.

  2. THe MA creates an ND instance (primary and secondary regions, management channel, internal bind channels) that corresponds to the parent enumeration response information.

  3. The MA issues udi_usage_ind() on mgmt channel - first operation on newly instantiated driver instance

  4. The MA begins the child/parent bind sequence by issuing UDI_CHANNEL_BOUND on the child (ND) end of ND-Bus bind channel. This channel may be in the primary region, or a static or dynamic secondary region.

  5. ND performs internal initialization (specific to NIC), reads instance attributes, and binds to parent (Bus) with udi_bus_bind_req.

  6. The parent (Bus) processes the ND's bind request, and replies to ND with udi_bus_bind_ack.

  7. The ND completes initialization and issues udi_channel_event_complete; this completes the bind operation to the MA. On this channel, the MA is the parent and the ND is the child.

  8. Finally, a channel is established between the ND (parent) and NSR (child) using NIM bind operations.

Next topic: Sample Osicom 2300 NIC Driver (shrkudi)
Previous topic: Network Interface Metalanguage Architecture

© 2005 The SCO Group, Inc. All rights reserved.
OpenServer 6 and UnixWare (SVR5) HDK - 19 June 2005