ipw_alive -
int ipw_alive (struct ipw_priv * priv)Arguments
Description
Reads debug register from domain0. If card is present, pre-defined value should be found there.param priv return 1 if card is present, 0 otherwise
ipw_rx_queue_space -
int ipw_rx_queue_space (const struct ipw_rx_queue * q)Arguments
Description
Theory of operation
A queue is a circular buffers with 'Read' and 'Write' pointers. 2 empty entries always kept in the buffer to protect from overflow.
For Tx queue, there are low mark and high mark limits. If, after queuing the packet for Tx, free space become < low mark, Tx queue stopped. When reclaiming packets (on 'tx done IRQ), if free space become > high mark, Tx queue resumed.
The IPW operates with six queues, one receive queue in the device's sram, one transmit queue for sending commands to the device firmware, and four transmit queues for data.
The four transmit queues allow for performing quality of service (qos) transmissions as per the 802.11 protocol. Currently Linux does not provide a mechanism to the user for utilizing prioritized queues, so we only utilize the first data transmit queue (queue1).
ipw_queue_init -
void ipw_queue_init (struct ipw_priv * priv, struct clx2_queue * q, int count, u32 read, u32 write, u32 base, u32 size)Arguments
Description
param q queue to init param count Number of BD's to allocate. Should be power of 2 param read_register Address for 'read' register (not offset within BAR, full address) param write_register Address for 'write' register (not offset within BAR, full address) param base_register Address for 'base' register (not offset within BAR, full address) param size Address for 'size' register (not offset within BAR, full address)
ipw_queue_tx_free_tfd - \\\gt;q.last_used].
void ipw_queue_tx_free_tfd (struct ipw_priv * priv, struct clx2_tx_queue * txq)Arguments
Description
Do NOT advance any indexesparam dev param txq
ipw_queue_tx_free -
void ipw_queue_tx_free (struct ipw_priv * priv, struct clx2_tx_queue * txq)Arguments
Description
Empty queue by removing and destroying all BD's. Free all buffers.
param dev param q
ipw_tx_queue_free -
void ipw_tx_queue_free (struct ipw_priv * priv)Arguments
Description
param priv
ipw_rx_notification -
void ipw_rx_notification (struct ipw_priv * priv, struct ipw_rx_notification * notif)Arguments
Description
Called from interrupt routine
ipw_queue_reset -
int ipw_queue_reset (struct ipw_priv * priv)Arguments
Description
param priv return error code
ipw_queue_tx_reclaim -
int ipw_queue_tx_reclaim (struct ipw_priv * priv, struct clx2_tx_queue * txq, int qindex)Arguments
Description
When FW advances 'R' index, all entries between old and new 'R' index need to be reclaimed. As result, some free space forms. If there is enough free space (> low mark), wake Tx queue.
note Need to protect against garbage in 'R' index param priv param txq param qindex return Number of used entries remains in the queue
ipw_sw_reset -
int ipw_sw_reset (struct ipw_priv * priv, int option)Arguments
- option
- options to control different reset behaviour 0 = reset everything except the 'disable' module_param 1 = reset everything and print out driver info (for probe only) 2 = reset everything