| 124 | |
| 125 | == Atheros Driver's Rate Control == |
| 126 | |
| 127 | === AutoRate (SampleRate) === |
| 128 | This is the default behavior: |
| 129 | |
| 130 | In ''ath_rate_findrate'' function of ath_rate/sample/sample.c |
| 131 | |
| 132 | {{{ |
| 133 | |
| 134 | if (sn->static_rate_ndx != -1) { |
| 135 | ndx = sn->static_rate_ndx; |
| 136 | *try0 = ATH_TXMAXTRY; |
| 137 | } else { |
| 138 | *try0 = mrr ? 2 : ATH_TXMAXTRY; |
| 139 | ... |
| 140 | }}} |
| 141 | Here , try0 means how many transmission attempts should be used for the first-rate-setting. |
| 142 | The above code means, if static rate is used, each packet will be retransmit ATH_TXMAXTRY-1 times. |
| 143 | But if Mrr/SampleRate is used, the packet will be tried in r0 rate only 2 times. if unsuccessful, r1, r2, r3,.. will be tried. |
| 144 | in 3,3,0 times respecitively. |
| 145 | |
| 146 | The codes can be found in ''ath_rate_setupxtxdesc'' function of sample.c |
| 147 | {{{ |
| 148 | ... |
| 149 | ath_hal_setupxtxdesc(sc->sc_ah, ds |
| 150 | , rateCode, 3 /* series 1 */ |
| 151 | , sn->rates[0].rateCode, 3 /* series 2 */ |
| 152 | , 0, 0 /* series 3 */ |
| 153 | ); |
| 154 | ... |
| 155 | }}} |
| 156 | |
| 157 | |
| 158 | === Static Rate === |
| 159 | |
| 160 | In ath/if_athvar.h |
| 161 | {{{ |
| 162 | #define ATH_TXMAXTRY 11 |
| 163 | }}} |
| 164 | So, when it is set to fix rate, each packet will be transmit at this rate 11 times. |