Lines Matching refs:amrr
1740 iwp_amrr_t *amrr; in iwp_node_alloc() local
1742 amrr = kmem_zalloc(sizeof (iwp_amrr_t), KM_SLEEP); in iwp_node_alloc()
1743 if (NULL == amrr) { in iwp_node_alloc()
1749 iwp_amrr_init(amrr); in iwp_node_alloc()
1751 return (&amrr->in); in iwp_node_alloc()
2351 iwp_amrr_t *amrr; in iwp_tx_intr() local
2357 amrr = (iwp_amrr_t *)ic->ic_bss; in iwp_tx_intr()
2359 amrr->txcnt++; in iwp_tx_intr()
2361 "tx: %d cnt\n", amrr->txcnt)); in iwp_tx_intr()
2364 amrr->retrycnt++; in iwp_tx_intr()
4722 #define is_success(amrr) \ argument
4723 ((amrr)->retrycnt < (amrr)->txcnt / 10)
4724 #define is_failure(amrr) \ argument
4725 ((amrr)->retrycnt > (amrr)->txcnt / 3)
4726 #define is_enough(amrr) \ argument
4727 ((amrr)->txcnt > 200)
4728 #define not_very_few(amrr) \ argument
4729 ((amrr)->txcnt > 40)
4738 #define reset_cnt(amrr) \ argument
4739 { (amrr)->txcnt = (amrr)->retrycnt = 0; }
4745 iwp_amrr_init(iwp_amrr_t *amrr) in iwp_amrr_init() argument
4747 amrr->success = 0; in iwp_amrr_init()
4748 amrr->recovery = 0; in iwp_amrr_init()
4749 amrr->txcnt = amrr->retrycnt = 0; in iwp_amrr_init()
4750 amrr->success_threshold = IWP_AMRR_MIN_SUCCESS_THRESHOLD; in iwp_amrr_init()
4774 iwp_amrr_t *amrr = (iwp_amrr_t *)in; in iwp_amrr_ratectl() local
4777 if (is_success(amrr) && is_enough(amrr)) { in iwp_amrr_ratectl()
4778 amrr->success++; in iwp_amrr_ratectl()
4779 if (amrr->success >= amrr->success_threshold && in iwp_amrr_ratectl()
4781 amrr->recovery = 1; in iwp_amrr_ratectl()
4782 amrr->success = 0; in iwp_amrr_ratectl()
4787 in->in_txrate, amrr->txcnt, in iwp_amrr_ratectl()
4788 amrr->retrycnt)); in iwp_amrr_ratectl()
4791 amrr->recovery = 0; in iwp_amrr_ratectl()
4793 } else if (not_very_few(amrr) && is_failure(amrr)) { in iwp_amrr_ratectl()
4794 amrr->success = 0; in iwp_amrr_ratectl()
4796 if (amrr->recovery) { in iwp_amrr_ratectl()
4797 amrr->success_threshold++; in iwp_amrr_ratectl()
4798 if (amrr->success_threshold > in iwp_amrr_ratectl()
4800 amrr->success_threshold = in iwp_amrr_ratectl()
4804 amrr->success_threshold = in iwp_amrr_ratectl()
4811 in->in_txrate, amrr->txcnt, in iwp_amrr_ratectl()
4812 amrr->retrycnt)); in iwp_amrr_ratectl()
4815 amrr->recovery = 0; /* paper is incorrect */ in iwp_amrr_ratectl()
4818 if (is_enough(amrr) || need_change) { in iwp_amrr_ratectl()
4819 reset_cnt(amrr); in iwp_amrr_ratectl()