Linux Kernel
3.7.1
|
Go to the source code of this file.
Macros | |
#define | pr_fmt(fmt) KBUILD_MODNAME ": " fmt |
Functions | |
u32 | ath5k_hw_num_tx_pending (struct ath5k_hw *ah, unsigned int queue) |
void | ath5k_hw_release_tx_queue (struct ath5k_hw *ah, unsigned int queue) |
int | ath5k_hw_get_tx_queueprops (struct ath5k_hw *ah, int queue, struct ath5k_txq_info *queue_info) |
int | ath5k_hw_set_tx_queueprops (struct ath5k_hw *ah, int queue, const struct ath5k_txq_info *qinfo) |
int | ath5k_hw_setup_tx_queue (struct ath5k_hw *ah, enum ath5k_tx_queue queue_type, struct ath5k_txq_info *queue_info) |
void | ath5k_hw_set_tx_retry_limits (struct ath5k_hw *ah, unsigned int queue) |
int | ath5k_hw_reset_tx_queue (struct ath5k_hw *ah, unsigned int queue) |
int | ath5k_hw_set_ifs_intervals (struct ath5k_hw *ah, unsigned int slot_time) |
int | ath5k_hw_init_queues (struct ath5k_hw *ah) |
int ath5k_hw_get_tx_queueprops | ( | struct ath5k_hw * | ah, |
int | queue, | ||
struct ath5k_txq_info * | queue_info | ||
) |
ath5k_hw_get_tx_queueprops() - Get properties for a transmit queue : The &struct ath5k_hw : One of enum ath5k_tx_queue_id : The &struct ath5k_txq_info to fill
DOC: Queue Control Unit (QCU)/DCF Control Unit (DCU) functions
Here we setup parameters for the 12 available TX queues. Note that on the various registers we can usually only map the first 10 of them so basically we have 10 queues to play with. Each queue has a matching QCU that controls when the queue will get triggered and multiple QCUs can be mapped to a single DCU that controls the various DFS parameters for the various queues. In our setup we have a 1:1 mapping between QCUs and DCUs allowing us to have different DFS settings for each queue.
When a frame goes into a TX queue, QCU decides when it'll trigger a transmission based on various criteria (such as how many data we have inside it's buffer or -if it's a beacon queue- if it's time to fire up the queue based on TSF etc), DCU adds backoff, IFSes etc and then a scheduler (arbitrator) decides the priority of each QCU based on it's configuration (e.g. beacons are always transmitted when they leave DCU bypassing all other frames from other queues waiting to be transmitted). After a frame leaves the DCU it goes to PCU for further processing and then to PHY for the actual transmission. ath5k_hw_num_tx_pending() - Get number of pending frames for a given queue : The &struct ath5k_hw : One of enum ath5k_tx_queue_id
ath5k_hw_release_tx_queue() - Set a transmit queue inactive : The &struct ath5k_hw : One of enum ath5k_tx_queue_id
int ath5k_hw_set_tx_queueprops | ( | struct ath5k_hw * | ah, |
int | queue, | ||
const struct ath5k_txq_info * | qinfo | ||
) |
ath5k_hw_set_tx_queueprops() - Set properties for a transmit queue : The &struct ath5k_hw : One of enum ath5k_tx_queue_id : The &struct ath5k_txq_info to use
Returns 0 on success or -EIO if queue is inactive
int ath5k_hw_setup_tx_queue | ( | struct ath5k_hw * | ah, |
enum ath5k_tx_queue | queue_type, | ||
struct ath5k_txq_info * | queue_info | ||
) |
ath5k_hw_setup_tx_queue() - Initialize a transmit queue : The &struct ath5k_hw : One of enum ath5k_tx_queue : The &struct ath5k_txq_info to use
Returns 0 on success, -EINVAL on invalid arguments