diff options
author | Bruno Randolf <br1@einfach.org> | 2010-06-16 06:12:01 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-06-16 14:59:03 -0400 |
commit | a66681935455bfbb95dfe42aa3182e3f5b1ff1b4 (patch) | |
tree | df6977155ed9deaf0dc745b353af15475dfca6ce /drivers/net/wireless/ath/ath5k/desc.c | |
parent | 02a78b42f84b61c689a22f4429d73f92a972bc83 (diff) |
ath5k: use direct function calls for descriptors when possible
Use direct function calls for ath5k_hw_setup_rx_desc() and
ath5k_hw_setup_mrr_tx_desc() instead of a function pointer which always pointed
to the same function in the case of ath5k_hw_setup_rx_desc() and which is
easily unified in the case of ath5k_hw_setup_mrr_tx_desc().
Also simplify the initialization function for the remaining function pointers.
Signed-off-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath5k/desc.c')
-rw-r--r-- | drivers/net/wireless/ath/ath5k/desc.c | 41 |
1 files changed, 11 insertions, 30 deletions
diff --git a/drivers/net/wireless/ath/ath5k/desc.c b/drivers/net/wireless/ath/ath5k/desc.c index da5dbb63047f..b5a5d45f2e82 100644 --- a/drivers/net/wireless/ath/ath5k/desc.c +++ b/drivers/net/wireless/ath/ath5k/desc.c | |||
@@ -277,13 +277,17 @@ static int ath5k_hw_setup_4word_tx_desc(struct ath5k_hw *ah, | |||
277 | /* | 277 | /* |
278 | * Initialize a 4-word multi rate retry tx control descriptor on 5212 | 278 | * Initialize a 4-word multi rate retry tx control descriptor on 5212 |
279 | */ | 279 | */ |
280 | static int | 280 | int |
281 | ath5k_hw_setup_mrr_tx_desc(struct ath5k_hw *ah, struct ath5k_desc *desc, | 281 | ath5k_hw_setup_mrr_tx_desc(struct ath5k_hw *ah, struct ath5k_desc *desc, |
282 | unsigned int tx_rate1, u_int tx_tries1, u_int tx_rate2, | 282 | unsigned int tx_rate1, u_int tx_tries1, u_int tx_rate2, |
283 | u_int tx_tries2, unsigned int tx_rate3, u_int tx_tries3) | 283 | u_int tx_tries2, unsigned int tx_rate3, u_int tx_tries3) |
284 | { | 284 | { |
285 | struct ath5k_hw_4w_tx_ctl *tx_ctl; | 285 | struct ath5k_hw_4w_tx_ctl *tx_ctl; |
286 | 286 | ||
287 | /* no mrr support for cards older than 5212 */ | ||
288 | if (ah->ah_version < AR5K_AR5212) | ||
289 | return 0; | ||
290 | |||
287 | /* | 291 | /* |
288 | * Rates can be 0 as long as the retry count is 0 too. | 292 | * Rates can be 0 as long as the retry count is 0 too. |
289 | * A zero rate and nonzero retry count will put the HW into a mode where | 293 | * A zero rate and nonzero retry count will put the HW into a mode where |
@@ -323,15 +327,6 @@ ath5k_hw_setup_mrr_tx_desc(struct ath5k_hw *ah, struct ath5k_desc *desc, | |||
323 | return 0; | 327 | return 0; |
324 | } | 328 | } |
325 | 329 | ||
326 | /* no mrr support for cards older than 5212 */ | ||
327 | static int | ||
328 | ath5k_hw_setup_no_mrr(struct ath5k_hw *ah, struct ath5k_desc *desc, | ||
329 | unsigned int tx_rate1, u_int tx_tries1, u_int tx_rate2, | ||
330 | u_int tx_tries2, unsigned int tx_rate3, u_int tx_tries3) | ||
331 | { | ||
332 | return 0; | ||
333 | } | ||
334 | |||
335 | /* | 330 | /* |
336 | * Proccess the tx status descriptor on 5210/5211 | 331 | * Proccess the tx status descriptor on 5210/5211 |
337 | */ | 332 | */ |
@@ -480,8 +475,8 @@ static int ath5k_hw_proc_4word_tx_status(struct ath5k_hw *ah, | |||
480 | /* | 475 | /* |
481 | * Initialize an rx control descriptor | 476 | * Initialize an rx control descriptor |
482 | */ | 477 | */ |
483 | static int ath5k_hw_setup_rx_desc(struct ath5k_hw *ah, struct ath5k_desc *desc, | 478 | int ath5k_hw_setup_rx_desc(struct ath5k_hw *ah, struct ath5k_desc *desc, |
484 | u32 size, unsigned int flags) | 479 | u32 size, unsigned int flags) |
485 | { | 480 | { |
486 | struct ath5k_hw_rx_ctl *rx_ctl; | 481 | struct ath5k_hw_rx_ctl *rx_ctl; |
487 | 482 | ||
@@ -658,29 +653,15 @@ static int ath5k_hw_proc_5212_rx_status(struct ath5k_hw *ah, | |||
658 | */ | 653 | */ |
659 | int ath5k_hw_init_desc_functions(struct ath5k_hw *ah) | 654 | int ath5k_hw_init_desc_functions(struct ath5k_hw *ah) |
660 | { | 655 | { |
661 | |||
662 | if (ah->ah_version != AR5K_AR5210 && | ||
663 | ah->ah_version != AR5K_AR5211 && | ||
664 | ah->ah_version != AR5K_AR5212) | ||
665 | return -ENOTSUPP; | ||
666 | |||
667 | if (ah->ah_version == AR5K_AR5212) { | 656 | if (ah->ah_version == AR5K_AR5212) { |
668 | ah->ah_setup_rx_desc = ath5k_hw_setup_rx_desc; | ||
669 | ah->ah_setup_tx_desc = ath5k_hw_setup_4word_tx_desc; | 657 | ah->ah_setup_tx_desc = ath5k_hw_setup_4word_tx_desc; |
670 | ah->ah_setup_mrr_tx_desc = ath5k_hw_setup_mrr_tx_desc; | ||
671 | ah->ah_proc_tx_desc = ath5k_hw_proc_4word_tx_status; | 658 | ah->ah_proc_tx_desc = ath5k_hw_proc_4word_tx_status; |
672 | } else { | 659 | ah->ah_proc_rx_desc = ath5k_hw_proc_5212_rx_status; |
673 | ah->ah_setup_rx_desc = ath5k_hw_setup_rx_desc; | 660 | } else if (ah->ah_version <= AR5K_AR5211) { |
674 | ah->ah_setup_tx_desc = ath5k_hw_setup_2word_tx_desc; | 661 | ah->ah_setup_tx_desc = ath5k_hw_setup_2word_tx_desc; |
675 | ah->ah_setup_mrr_tx_desc = ath5k_hw_setup_no_mrr; | ||
676 | ah->ah_proc_tx_desc = ath5k_hw_proc_2word_tx_status; | 662 | ah->ah_proc_tx_desc = ath5k_hw_proc_2word_tx_status; |
677 | } | ||
678 | |||
679 | if (ah->ah_version == AR5K_AR5212) | ||
680 | ah->ah_proc_rx_desc = ath5k_hw_proc_5212_rx_status; | ||
681 | else if (ah->ah_version <= AR5K_AR5211) | ||
682 | ah->ah_proc_rx_desc = ath5k_hw_proc_5210_rx_status; | 663 | ah->ah_proc_rx_desc = ath5k_hw_proc_5210_rx_status; |
683 | 664 | } else | |
665 | return -ENOTSUPP; | ||
684 | return 0; | 666 | return 0; |
685 | } | 667 | } |
686 | |||