|
|
udi_nsr_tx_rdy(3udi)
Network driver ready to transmit packet
#include <udi.h>void udi_nsr_tx_rdy ( udi_nic_tx_cb_t *cb );ARGUMENTS cb is a pointer to a Network Interface Metalanguage transmit control block.
TARGET CHANNEL This request is issued to the NSR over the Network Interface Metalanguage transmit data channel.
DESCRIPTION The udi_nsr_tx_rdy is used to indicate to the NSR that the ND can transmit a packet when the NSR has a packet available. When the NSR receives a packet from the protocol stack that should be transmitted, it looks for a udi_nic_tx_cb_t to associate with that packet. If no udi_nic_tx_cb_t is available, it must queue the packet and exert flow control "back pressure" into the protocol stack. When a udi_nic_tx_cb_t is available (either immediately or as a result of this command), the NSR may use that structure to pass the packet buffer to the ND for transmission.
The ND may chain multiple udi_nic_tx_cb_t structures together as a linked list via the chain field in the structure and pass the entire chain to the NSR in a single udi_nsr_tx_rdy operation.
Following a udi_nd_disable_req, the NSR should return all transmit control blocks to the ND driver. This is done via the udi_nd_tx_req transmit path, but there will be no associated buffer for these operations.
Following a udi_nd_unbind_req or a udi_channel_closed operation, the ND and NSR are each responsible for deallocating the transmit control blocks they are holding; no transmit control blocks are passed between the ND and NSR following these operations.
The ND may increase or decrease the number of transmit opportunities available to the NSR at any point in time by making correspondingly more or fewer transmit control blocks available to the NSR. The NSR should not expect the number of transmit control blocks to stay constant over the lifetime of the ND instance.