uhttpd: finish inherited uloop in forked childs, fixes misdispatched events leading...
[openwrt/openwrt.git] / package / mac80211 / patches / 575-ath9k_ani_cleanup.patch
1 --- a/drivers/net/wireless/ath/ath9k/ani.c
2 +++ b/drivers/net/wireless/ath/ath9k/ani.c
3 @@ -117,8 +117,6 @@ static void ath9k_hw_update_mibstats(str
4 static void ath9k_ani_restart(struct ath_hw *ah)
5 {
6 struct ar5416AniState *aniState;
7 - struct ath_common *common = ath9k_hw_common(ah);
8 - u32 ofdm_base = 0, cck_base = 0;
9
10 if (!DO_ANI(ah))
11 return;
12 @@ -126,13 +124,10 @@ static void ath9k_ani_restart(struct ath
13 aniState = &ah->curchan->ani;
14 aniState->listenTime = 0;
15
16 - ath_dbg(common, ANI, "Writing ofdmbase=%u cckbase=%u\n",
17 - ofdm_base, cck_base);
18 -
19 ENABLE_REGWRITE_BUFFER(ah);
20
21 - REG_WRITE(ah, AR_PHY_ERR_1, ofdm_base);
22 - REG_WRITE(ah, AR_PHY_ERR_2, cck_base);
23 + REG_WRITE(ah, AR_PHY_ERR_1, 0);
24 + REG_WRITE(ah, AR_PHY_ERR_2, 0);
25 REG_WRITE(ah, AR_PHY_ERR_MASK_1, AR_PHY_ERR_OFDM_TIMING);
26 REG_WRITE(ah, AR_PHY_ERR_MASK_2, AR_PHY_ERR_CCK_TIMING);
27
28 @@ -375,9 +370,6 @@ static bool ath9k_hw_ani_read_counters(s
29 {
30 struct ath_common *common = ath9k_hw_common(ah);
31 struct ar5416AniState *aniState = &ah->curchan->ani;
32 - u32 ofdm_base = 0;
33 - u32 cck_base = 0;
34 - u32 ofdmPhyErrCnt, cckPhyErrCnt;
35 u32 phyCnt1, phyCnt2;
36 int32_t listenTime;
37
38 @@ -397,15 +389,12 @@ static bool ath9k_hw_ani_read_counters(s
39 phyCnt1 = REG_READ(ah, AR_PHY_ERR_1);
40 phyCnt2 = REG_READ(ah, AR_PHY_ERR_2);
41
42 - ofdmPhyErrCnt = phyCnt1 - ofdm_base;
43 - ah->stats.ast_ani_ofdmerrs +=
44 - ofdmPhyErrCnt - aniState->ofdmPhyErrCount;
45 - aniState->ofdmPhyErrCount = ofdmPhyErrCnt;
46 -
47 - cckPhyErrCnt = phyCnt2 - cck_base;
48 - ah->stats.ast_ani_cckerrs +=
49 - cckPhyErrCnt - aniState->cckPhyErrCount;
50 - aniState->cckPhyErrCount = cckPhyErrCnt;
51 + ah->stats.ast_ani_ofdmerrs += phyCnt1 - aniState->ofdmPhyErrCount;
52 + aniState->ofdmPhyErrCount = phyCnt1;
53 +
54 + ah->stats.ast_ani_cckerrs += phyCnt2 - aniState->cckPhyErrCount;
55 + aniState->cckPhyErrCount = phyCnt2;
56 +
57 return true;
58 }
59
60 @@ -565,20 +554,19 @@ void ath9k_hw_ani_init(struct ath_hw *ah
61
62 ath_dbg(common, ANI, "Initialize ANI\n");
63
64 - ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH_NEW;
65 - ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW_NEW;
66 + ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH;
67 + ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW;
68
69 - ah->config.cck_trig_high = ATH9K_ANI_CCK_TRIG_HIGH_NEW;
70 - ah->config.cck_trig_low = ATH9K_ANI_CCK_TRIG_LOW_NEW;
71 + ah->config.cck_trig_high = ATH9K_ANI_CCK_TRIG_HIGH;
72 + ah->config.cck_trig_low = ATH9K_ANI_CCK_TRIG_LOW;
73
74 for (i = 0; i < ARRAY_SIZE(ah->channels); i++) {
75 struct ath9k_channel *chan = &ah->channels[i];
76 struct ar5416AniState *ani = &chan->ani;
77
78 - ani->spurImmunityLevel =
79 - ATH9K_ANI_SPUR_IMMUNE_LVL_NEW;
80 + ani->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL;
81
82 - ani->firstepLevel = ATH9K_ANI_FIRSTEP_LVL_NEW;
83 + ani->firstepLevel = ATH9K_ANI_FIRSTEP_LVL;
84
85 if (AR_SREV_9300_20_OR_LATER(ah))
86 ani->mrcCCKOff =
87 @@ -600,8 +588,8 @@ void ath9k_hw_ani_init(struct ath_hw *ah
88 * since we expect some ongoing maintenance on the tables, let's sanity
89 * check here default level should not modify INI setting.
90 */
91 - ah->aniperiod = ATH9K_ANI_PERIOD_NEW;
92 - ah->config.ani_poll_interval = ATH9K_ANI_POLLINTERVAL_NEW;
93 + ah->aniperiod = ATH9K_ANI_PERIOD;
94 + ah->config.ani_poll_interval = ATH9K_ANI_POLLINTERVAL;
95
96 if (ah->config.enable_ani)
97 ah->proc_phyerr |= HAL_PROCESS_ANI;
98 --- a/drivers/net/wireless/ath/ath9k/ani.h
99 +++ b/drivers/net/wireless/ath/ath9k/ani.h
100 @@ -24,42 +24,34 @@
101 #define BEACON_RSSI(ahp) (ahp->stats.avgbrssi)
102
103 /* units are errors per second */
104 -#define ATH9K_ANI_OFDM_TRIG_HIGH_OLD 500
105 -#define ATH9K_ANI_OFDM_TRIG_HIGH_NEW 3500
106 +#define ATH9K_ANI_OFDM_TRIG_HIGH 3500
107 #define ATH9K_ANI_OFDM_TRIG_HIGH_BELOW_INI 1000
108
109 /* units are errors per second */
110 -#define ATH9K_ANI_OFDM_TRIG_LOW_OLD 200
111 -#define ATH9K_ANI_OFDM_TRIG_LOW_NEW 400
112 +#define ATH9K_ANI_OFDM_TRIG_LOW 400
113 #define ATH9K_ANI_OFDM_TRIG_LOW_ABOVE_INI 900
114
115 /* units are errors per second */
116 -#define ATH9K_ANI_CCK_TRIG_HIGH_OLD 200
117 -#define ATH9K_ANI_CCK_TRIG_HIGH_NEW 600
118 +#define ATH9K_ANI_CCK_TRIG_HIGH 600
119
120 /* units are errors per second */
121 -#define ATH9K_ANI_CCK_TRIG_LOW_OLD 100
122 -#define ATH9K_ANI_CCK_TRIG_LOW_NEW 300
123 +#define ATH9K_ANI_CCK_TRIG_LOW 300
124
125 #define ATH9K_ANI_NOISE_IMMUNE_LVL 4
126 #define ATH9K_ANI_USE_OFDM_WEAK_SIG true
127 #define ATH9K_ANI_CCK_WEAK_SIG_THR false
128
129 -#define ATH9K_ANI_SPUR_IMMUNE_LVL_OLD 7
130 -#define ATH9K_ANI_SPUR_IMMUNE_LVL_NEW 3
131 +#define ATH9K_ANI_SPUR_IMMUNE_LVL 3
132
133 -#define ATH9K_ANI_FIRSTEP_LVL_OLD 0
134 -#define ATH9K_ANI_FIRSTEP_LVL_NEW 2
135 +#define ATH9K_ANI_FIRSTEP_LVL 2
136
137 #define ATH9K_ANI_RSSI_THR_HIGH 40
138 #define ATH9K_ANI_RSSI_THR_LOW 7
139
140 -#define ATH9K_ANI_PERIOD_OLD 100
141 -#define ATH9K_ANI_PERIOD_NEW 300
142 +#define ATH9K_ANI_PERIOD 300
143
144 /* in ms */
145 -#define ATH9K_ANI_POLLINTERVAL_OLD 100
146 -#define ATH9K_ANI_POLLINTERVAL_NEW 1000
147 +#define ATH9K_ANI_POLLINTERVAL 1000
148
149 #define HAL_NOISE_IMMUNE_MAX 4
150 #define HAL_SPUR_IMMUNE_MAX 7
151 --- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
152 +++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
153 @@ -1101,7 +1101,7 @@ static bool ar5008_hw_ani_control_new(st
154 * from INI file & cap value
155 */
156 value = firstep_table[level] -
157 - firstep_table[ATH9K_ANI_FIRSTEP_LVL_NEW] +
158 + firstep_table[ATH9K_ANI_FIRSTEP_LVL] +
159 aniState->iniDef.firstep;
160 if (value < ATH9K_SIG_FIRSTEP_SETTING_MIN)
161 value = ATH9K_SIG_FIRSTEP_SETTING_MIN;
162 @@ -1116,7 +1116,7 @@ static bool ar5008_hw_ani_control_new(st
163 * from INI file & cap value
164 */
165 value2 = firstep_table[level] -
166 - firstep_table[ATH9K_ANI_FIRSTEP_LVL_NEW] +
167 + firstep_table[ATH9K_ANI_FIRSTEP_LVL] +
168 aniState->iniDef.firstepLow;
169 if (value2 < ATH9K_SIG_FIRSTEP_SETTING_MIN)
170 value2 = ATH9K_SIG_FIRSTEP_SETTING_MIN;
171 @@ -1132,7 +1132,7 @@ static bool ar5008_hw_ani_control_new(st
172 chan->channel,
173 aniState->firstepLevel,
174 level,
175 - ATH9K_ANI_FIRSTEP_LVL_NEW,
176 + ATH9K_ANI_FIRSTEP_LVL,
177 value,
178 aniState->iniDef.firstep);
179 ath_dbg(common, ANI,
180 @@ -1140,7 +1140,7 @@ static bool ar5008_hw_ani_control_new(st
181 chan->channel,
182 aniState->firstepLevel,
183 level,
184 - ATH9K_ANI_FIRSTEP_LVL_NEW,
185 + ATH9K_ANI_FIRSTEP_LVL,
186 value2,
187 aniState->iniDef.firstepLow);
188 if (level > aniState->firstepLevel)
189 @@ -1165,7 +1165,7 @@ static bool ar5008_hw_ani_control_new(st
190 * from INI file & cap value
191 */
192 value = cycpwrThr1_table[level] -
193 - cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL_NEW] +
194 + cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL] +
195 aniState->iniDef.cycpwrThr1;
196 if (value < ATH9K_SIG_SPUR_IMM_SETTING_MIN)
197 value = ATH9K_SIG_SPUR_IMM_SETTING_MIN;
198 @@ -1181,7 +1181,7 @@ static bool ar5008_hw_ani_control_new(st
199 * from INI file & cap value
200 */
201 value2 = cycpwrThr1_table[level] -
202 - cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL_NEW] +
203 + cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL] +
204 aniState->iniDef.cycpwrThr1Ext;
205 if (value2 < ATH9K_SIG_SPUR_IMM_SETTING_MIN)
206 value2 = ATH9K_SIG_SPUR_IMM_SETTING_MIN;
207 @@ -1196,7 +1196,7 @@ static bool ar5008_hw_ani_control_new(st
208 chan->channel,
209 aniState->spurImmunityLevel,
210 level,
211 - ATH9K_ANI_SPUR_IMMUNE_LVL_NEW,
212 + ATH9K_ANI_SPUR_IMMUNE_LVL,
213 value,
214 aniState->iniDef.cycpwrThr1);
215 ath_dbg(common, ANI,
216 @@ -1204,7 +1204,7 @@ static bool ar5008_hw_ani_control_new(st
217 chan->channel,
218 aniState->spurImmunityLevel,
219 level,
220 - ATH9K_ANI_SPUR_IMMUNE_LVL_NEW,
221 + ATH9K_ANI_SPUR_IMMUNE_LVL,
222 value2,
223 aniState->iniDef.cycpwrThr1Ext);
224 if (level > aniState->spurImmunityLevel)
225 @@ -1319,8 +1319,8 @@ static void ar5008_hw_ani_cache_ini_regs
226 AR_PHY_EXT_TIMING5_CYCPWR_THR1);
227
228 /* these levels just got reset to defaults by the INI */
229 - aniState->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL_NEW;
230 - aniState->firstepLevel = ATH9K_ANI_FIRSTEP_LVL_NEW;
231 + aniState->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL;
232 + aniState->firstepLevel = ATH9K_ANI_FIRSTEP_LVL;
233 aniState->ofdmWeakSigDetect = ATH9K_ANI_USE_OFDM_WEAK_SIG;
234 aniState->mrcCCKOff = true; /* not available on pre AR9003 */
235 }
236 --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
237 +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
238 @@ -851,7 +851,7 @@ static bool ar9003_hw_ani_control(struct
239 * from INI file & cap value
240 */
241 value = firstep_table[level] -
242 - firstep_table[ATH9K_ANI_FIRSTEP_LVL_NEW] +
243 + firstep_table[ATH9K_ANI_FIRSTEP_LVL] +
244 aniState->iniDef.firstep;
245 if (value < ATH9K_SIG_FIRSTEP_SETTING_MIN)
246 value = ATH9K_SIG_FIRSTEP_SETTING_MIN;
247 @@ -866,7 +866,7 @@ static bool ar9003_hw_ani_control(struct
248 * from INI file & cap value
249 */
250 value2 = firstep_table[level] -
251 - firstep_table[ATH9K_ANI_FIRSTEP_LVL_NEW] +
252 + firstep_table[ATH9K_ANI_FIRSTEP_LVL] +
253 aniState->iniDef.firstepLow;
254 if (value2 < ATH9K_SIG_FIRSTEP_SETTING_MIN)
255 value2 = ATH9K_SIG_FIRSTEP_SETTING_MIN;
256 @@ -882,7 +882,7 @@ static bool ar9003_hw_ani_control(struct
257 chan->channel,
258 aniState->firstepLevel,
259 level,
260 - ATH9K_ANI_FIRSTEP_LVL_NEW,
261 + ATH9K_ANI_FIRSTEP_LVL,
262 value,
263 aniState->iniDef.firstep);
264 ath_dbg(common, ANI,
265 @@ -890,7 +890,7 @@ static bool ar9003_hw_ani_control(struct
266 chan->channel,
267 aniState->firstepLevel,
268 level,
269 - ATH9K_ANI_FIRSTEP_LVL_NEW,
270 + ATH9K_ANI_FIRSTEP_LVL,
271 value2,
272 aniState->iniDef.firstepLow);
273 if (level > aniState->firstepLevel)
274 @@ -915,7 +915,7 @@ static bool ar9003_hw_ani_control(struct
275 * from INI file & cap value
276 */
277 value = cycpwrThr1_table[level] -
278 - cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL_NEW] +
279 + cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL] +
280 aniState->iniDef.cycpwrThr1;
281 if (value < ATH9K_SIG_SPUR_IMM_SETTING_MIN)
282 value = ATH9K_SIG_SPUR_IMM_SETTING_MIN;
283 @@ -931,7 +931,7 @@ static bool ar9003_hw_ani_control(struct
284 * from INI file & cap value
285 */
286 value2 = cycpwrThr1_table[level] -
287 - cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL_NEW] +
288 + cycpwrThr1_table[ATH9K_ANI_SPUR_IMMUNE_LVL] +
289 aniState->iniDef.cycpwrThr1Ext;
290 if (value2 < ATH9K_SIG_SPUR_IMM_SETTING_MIN)
291 value2 = ATH9K_SIG_SPUR_IMM_SETTING_MIN;
292 @@ -946,7 +946,7 @@ static bool ar9003_hw_ani_control(struct
293 chan->channel,
294 aniState->spurImmunityLevel,
295 level,
296 - ATH9K_ANI_SPUR_IMMUNE_LVL_NEW,
297 + ATH9K_ANI_SPUR_IMMUNE_LVL,
298 value,
299 aniState->iniDef.cycpwrThr1);
300 ath_dbg(common, ANI,
301 @@ -954,7 +954,7 @@ static bool ar9003_hw_ani_control(struct
302 chan->channel,
303 aniState->spurImmunityLevel,
304 level,
305 - ATH9K_ANI_SPUR_IMMUNE_LVL_NEW,
306 + ATH9K_ANI_SPUR_IMMUNE_LVL,
307 value2,
308 aniState->iniDef.cycpwrThr1Ext);
309 if (level > aniState->spurImmunityLevel)
310 @@ -1107,8 +1107,8 @@ static void ar9003_hw_ani_cache_ini_regs
311 AR_PHY_EXT_CYCPWR_THR1);
312
313 /* these levels just got reset to defaults by the INI */
314 - aniState->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL_NEW;
315 - aniState->firstepLevel = ATH9K_ANI_FIRSTEP_LVL_NEW;
316 + aniState->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL;
317 + aniState->firstepLevel = ATH9K_ANI_FIRSTEP_LVL;
318 aniState->ofdmWeakSigDetect = ATH9K_ANI_USE_OFDM_WEAK_SIG;
319 aniState->mrcCCKOff = !ATH9K_ANI_ENABLE_MRC_CCK;
320 }