Lines Matching refs:rt2x00dev

47 static int rt2x00link_antenna_get_link_rssi(struct rt2x00_dev *rt2x00dev)  in rt2x00link_antenna_get_link_rssi()  argument
49 struct link_ant *ant = &rt2x00dev->link.ant; in rt2x00link_antenna_get_link_rssi()
51 if (rt2x00dev->link.qual.rx_success) in rt2x00link_antenna_get_link_rssi()
57 static int rt2x00link_antenna_get_rssi_history(struct rt2x00_dev *rt2x00dev) in rt2x00link_antenna_get_rssi_history() argument
59 struct link_ant *ant = &rt2x00dev->link.ant; in rt2x00link_antenna_get_rssi_history()
66 static void rt2x00link_antenna_update_rssi_history(struct rt2x00_dev *rt2x00dev, in rt2x00link_antenna_update_rssi_history() argument
69 struct link_ant *ant = &rt2x00dev->link.ant; in rt2x00link_antenna_update_rssi_history()
73 static void rt2x00link_antenna_reset(struct rt2x00_dev *rt2x00dev) in rt2x00link_antenna_reset() argument
75 ewma_rssi_init(&rt2x00dev->link.ant.rssi_ant); in rt2x00link_antenna_reset()
78 static void rt2x00lib_antenna_diversity_sample(struct rt2x00_dev *rt2x00dev) in rt2x00lib_antenna_diversity_sample() argument
80 struct link_ant *ant = &rt2x00dev->link.ant; in rt2x00lib_antenna_diversity_sample()
84 int sample_current = rt2x00link_antenna_get_link_rssi(rt2x00dev); in rt2x00lib_antenna_diversity_sample()
85 int sample_other = rt2x00link_antenna_get_rssi_history(rt2x00dev); in rt2x00lib_antenna_diversity_sample()
103 rt2x00link_antenna_update_rssi_history(rt2x00dev, in rt2x00lib_antenna_diversity_sample()
116 rt2x00lib_config_antenna(rt2x00dev, new_ant); in rt2x00lib_antenna_diversity_sample()
119 static void rt2x00lib_antenna_diversity_eval(struct rt2x00_dev *rt2x00dev) in rt2x00lib_antenna_diversity_eval() argument
121 struct link_ant *ant = &rt2x00dev->link.ant; in rt2x00lib_antenna_diversity_eval()
132 rssi_curr = rt2x00link_antenna_get_link_rssi(rt2x00dev); in rt2x00lib_antenna_diversity_eval()
133 rssi_old = rt2x00link_antenna_get_rssi_history(rt2x00dev); in rt2x00lib_antenna_diversity_eval()
134 rt2x00link_antenna_update_rssi_history(rt2x00dev, rssi_curr); in rt2x00lib_antenna_diversity_eval()
156 rt2x00lib_config_antenna(rt2x00dev, new_ant); in rt2x00lib_antenna_diversity_eval()
159 static bool rt2x00lib_antenna_diversity(struct rt2x00_dev *rt2x00dev) in rt2x00lib_antenna_diversity() argument
161 struct link_ant *ant = &rt2x00dev->link.ant; in rt2x00lib_antenna_diversity()
180 rt2x00lib_antenna_diversity_sample(rt2x00dev); in rt2x00lib_antenna_diversity()
182 } else if (rt2x00dev->link.count & 1) { in rt2x00lib_antenna_diversity()
183 rt2x00lib_antenna_diversity_eval(rt2x00dev); in rt2x00lib_antenna_diversity()
190 void rt2x00link_update_stats(struct rt2x00_dev *rt2x00dev, in rt2x00link_update_stats() argument
194 struct link *link = &rt2x00dev->link; in rt2x00link_update_stats()
195 struct link_qual *qual = &rt2x00dev->link.qual; in rt2x00link_update_stats()
196 struct link_ant *ant = &rt2x00dev->link.ant; in rt2x00link_update_stats()
202 if (!rt2x00dev->intf_sta_count) in rt2x00link_update_stats()
231 void rt2x00link_start_tuner(struct rt2x00_dev *rt2x00dev) in rt2x00link_start_tuner() argument
233 struct link *link = &rt2x00dev->link; in rt2x00link_start_tuner()
239 if (!rt2x00dev->intf_ap_count && !rt2x00dev->intf_sta_count) in rt2x00link_start_tuner()
248 if (test_bit(DEVICE_STATE_SCANNING, &rt2x00dev->flags)) in rt2x00link_start_tuner()
251 rt2x00link_reset_tuner(rt2x00dev, false); in rt2x00link_start_tuner()
253 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00link_start_tuner()
254 ieee80211_queue_delayed_work(rt2x00dev->hw, in rt2x00link_start_tuner()
258 void rt2x00link_stop_tuner(struct rt2x00_dev *rt2x00dev) in rt2x00link_stop_tuner() argument
260 cancel_delayed_work_sync(&rt2x00dev->link.work); in rt2x00link_stop_tuner()
263 void rt2x00link_reset_tuner(struct rt2x00_dev *rt2x00dev, bool antenna) in rt2x00link_reset_tuner() argument
265 struct link_qual *qual = &rt2x00dev->link.qual; in rt2x00link_reset_tuner()
268 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00link_reset_tuner()
279 rt2x00dev->link.count = 0; in rt2x00link_reset_tuner()
281 ewma_rssi_init(&rt2x00dev->link.avg_rssi); in rt2x00link_reset_tuner()
293 rt2x00dev->ops->lib->reset_tuner(rt2x00dev, qual); in rt2x00link_reset_tuner()
296 rt2x00link_antenna_reset(rt2x00dev); in rt2x00link_reset_tuner()
299 static void rt2x00link_reset_qual(struct rt2x00_dev *rt2x00dev) in rt2x00link_reset_qual() argument
301 struct link_qual *qual = &rt2x00dev->link.qual; in rt2x00link_reset_qual()
309 static void rt2x00link_tuner_sta(struct rt2x00_dev *rt2x00dev, struct link *link) in rt2x00link_tuner_sta() argument
311 struct link_qual *qual = &rt2x00dev->link.qual; in rt2x00link_tuner_sta()
316 rt2x00dev->ops->lib->link_stats(rt2x00dev, qual); in rt2x00link_tuner_sta()
317 rt2x00dev->low_level_stats.dot11FCSErrorCount += qual->rx_failed; in rt2x00link_tuner_sta()
335 if (rt2x00_has_cap_link_tuning(rt2x00dev)) in rt2x00link_tuner_sta()
336 rt2x00dev->ops->lib->link_tuner(rt2x00dev, qual, link->count); in rt2x00link_tuner_sta()
341 rt2x00leds_led_quality(rt2x00dev, qual->rssi); in rt2x00link_tuner_sta()
348 if (rt2x00lib_antenna_diversity(rt2x00dev)) in rt2x00link_tuner_sta()
349 rt2x00link_reset_qual(rt2x00dev); in rt2x00link_tuner_sta()
354 struct rt2x00_dev *rt2x00dev = in rt2x00link_tuner() local
356 struct link *link = &rt2x00dev->link; in rt2x00link_tuner()
362 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags) || in rt2x00link_tuner()
363 test_bit(DEVICE_STATE_SCANNING, &rt2x00dev->flags)) in rt2x00link_tuner()
367 mutex_lock(&rt2x00dev->conf_mutex); in rt2x00link_tuner()
369 if (rt2x00dev->intf_sta_count) in rt2x00link_tuner()
370 rt2x00link_tuner_sta(rt2x00dev, link); in rt2x00link_tuner()
372 if (rt2x00dev->ops->lib->gain_calibration && in rt2x00link_tuner()
374 rt2x00dev->ops->lib->gain_calibration(rt2x00dev); in rt2x00link_tuner()
376 if (rt2x00dev->ops->lib->vco_calibration && in rt2x00link_tuner()
377 rt2x00_has_cap_vco_recalibration(rt2x00dev) && in rt2x00link_tuner()
379 rt2x00dev->ops->lib->vco_calibration(rt2x00dev); in rt2x00link_tuner()
381 mutex_unlock(&rt2x00dev->conf_mutex); in rt2x00link_tuner()
388 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00link_tuner()
389 ieee80211_queue_delayed_work(rt2x00dev->hw, in rt2x00link_tuner()
393 void rt2x00link_start_watchdog(struct rt2x00_dev *rt2x00dev) in rt2x00link_start_watchdog() argument
395 struct link *link = &rt2x00dev->link; in rt2x00link_start_watchdog()
397 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags) && in rt2x00link_start_watchdog()
398 rt2x00dev->ops->lib->watchdog) in rt2x00link_start_watchdog()
399 ieee80211_queue_delayed_work(rt2x00dev->hw, in rt2x00link_start_watchdog()
404 void rt2x00link_stop_watchdog(struct rt2x00_dev *rt2x00dev) in rt2x00link_stop_watchdog() argument
406 cancel_delayed_work_sync(&rt2x00dev->link.watchdog_work); in rt2x00link_stop_watchdog()
411 struct rt2x00_dev *rt2x00dev = in rt2x00link_watchdog() local
413 struct link *link = &rt2x00dev->link; in rt2x00link_watchdog()
419 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00link_watchdog()
422 rt2x00dev->ops->lib->watchdog(rt2x00dev); in rt2x00link_watchdog()
424 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00link_watchdog()
425 ieee80211_queue_delayed_work(rt2x00dev->hw, in rt2x00link_watchdog()
430 void rt2x00link_register(struct rt2x00_dev *rt2x00dev) in rt2x00link_register() argument
432 INIT_DELAYED_WORK(&rt2x00dev->link.watchdog_work, rt2x00link_watchdog); in rt2x00link_register()
433 INIT_DELAYED_WORK(&rt2x00dev->link.work, rt2x00link_tuner); in rt2x00link_register()