A host channel adapter configured for outputting packets according to InfiniBand
protocol is implemented using partitioned link modules configured for performing
selected link operations prior to outputting the packets. A pre-link module is
configured for ordering work queue entries in an order based on determined service
level and virtual lane priorities. The pre-link module outputs the ordered work
queue entries to a transport service module configured for generating a transport
layer header for the packets based on the respective work queue entries. Once the
transport layer headers have been generated, a post-link module is configured for
retrieval of the transport layer header and transport data and preparing the transmit
data packets for transmission on the network by constructing the link layer fields.
The post-link module outputs the transmit data packets based on the ordering and
the flow control protocol for the appropriate virtual lanes.