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 indexes

param 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