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()
241 if (!rt2x00dev->intf_sta_count) in rt2x00link_start_tuner()
250 if (test_bit(DEVICE_STATE_SCANNING, &rt2x00dev->flags)) in rt2x00link_start_tuner()
253 rt2x00link_reset_tuner(rt2x00dev, false); in rt2x00link_start_tuner()
255 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00link_start_tuner()
256 ieee80211_queue_delayed_work(rt2x00dev->hw, in rt2x00link_start_tuner()
260 void rt2x00link_stop_tuner(struct rt2x00_dev *rt2x00dev) in rt2x00link_stop_tuner() argument
262 cancel_delayed_work_sync(&rt2x00dev->link.work); in rt2x00link_stop_tuner()
265 void rt2x00link_reset_tuner(struct rt2x00_dev *rt2x00dev, bool antenna) in rt2x00link_reset_tuner() argument
267 struct link_qual *qual = &rt2x00dev->link.qual; in rt2x00link_reset_tuner()
270 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00link_reset_tuner()
281 rt2x00dev->link.count = 0; in rt2x00link_reset_tuner()
283 ewma_rssi_init(&rt2x00dev->link.avg_rssi); in rt2x00link_reset_tuner()
295 rt2x00dev->ops->lib->reset_tuner(rt2x00dev, qual); in rt2x00link_reset_tuner()
298 rt2x00link_antenna_reset(rt2x00dev); in rt2x00link_reset_tuner()
301 static void rt2x00link_reset_qual(struct rt2x00_dev *rt2x00dev) in rt2x00link_reset_qual() argument
303 struct link_qual *qual = &rt2x00dev->link.qual; in rt2x00link_reset_qual()
313 struct rt2x00_dev *rt2x00dev = in rt2x00link_tuner() local
315 struct link *link = &rt2x00dev->link; in rt2x00link_tuner()
316 struct link_qual *qual = &rt2x00dev->link.qual; in rt2x00link_tuner()
322 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags) || in rt2x00link_tuner()
323 test_bit(DEVICE_STATE_SCANNING, &rt2x00dev->flags)) in rt2x00link_tuner()
329 rt2x00dev->ops->lib->link_stats(rt2x00dev, qual); in rt2x00link_tuner()
330 rt2x00dev->low_level_stats.dot11FCSErrorCount += qual->rx_failed; in rt2x00link_tuner()
348 if (rt2x00_has_cap_link_tuning(rt2x00dev)) in rt2x00link_tuner()
349 rt2x00dev->ops->lib->link_tuner(rt2x00dev, qual, link->count); in rt2x00link_tuner()
354 rt2x00leds_led_quality(rt2x00dev, qual->rssi); in rt2x00link_tuner()
361 if (rt2x00lib_antenna_diversity(rt2x00dev)) in rt2x00link_tuner()
362 rt2x00link_reset_qual(rt2x00dev); in rt2x00link_tuner()
369 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00link_tuner()
370 ieee80211_queue_delayed_work(rt2x00dev->hw, in rt2x00link_tuner()
374 void rt2x00link_start_watchdog(struct rt2x00_dev *rt2x00dev) in rt2x00link_start_watchdog() argument
376 struct link *link = &rt2x00dev->link; in rt2x00link_start_watchdog()
378 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags) && in rt2x00link_start_watchdog()
379 rt2x00dev->ops->lib->watchdog) in rt2x00link_start_watchdog()
380 ieee80211_queue_delayed_work(rt2x00dev->hw, in rt2x00link_start_watchdog()
385 void rt2x00link_stop_watchdog(struct rt2x00_dev *rt2x00dev) in rt2x00link_stop_watchdog() argument
387 cancel_delayed_work_sync(&rt2x00dev->link.watchdog_work); in rt2x00link_stop_watchdog()
392 struct rt2x00_dev *rt2x00dev = in rt2x00link_watchdog() local
394 struct link *link = &rt2x00dev->link; in rt2x00link_watchdog()
400 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00link_watchdog()
403 rt2x00dev->ops->lib->watchdog(rt2x00dev); in rt2x00link_watchdog()
405 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00link_watchdog()
406 ieee80211_queue_delayed_work(rt2x00dev->hw, in rt2x00link_watchdog()
411 void rt2x00link_start_agc(struct rt2x00_dev *rt2x00dev) in rt2x00link_start_agc() argument
413 struct link *link = &rt2x00dev->link; in rt2x00link_start_agc()
415 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags) && in rt2x00link_start_agc()
416 rt2x00dev->ops->lib->gain_calibration) in rt2x00link_start_agc()
417 ieee80211_queue_delayed_work(rt2x00dev->hw, in rt2x00link_start_agc()
422 void rt2x00link_start_vcocal(struct rt2x00_dev *rt2x00dev) in rt2x00link_start_vcocal() argument
424 struct link *link = &rt2x00dev->link; in rt2x00link_start_vcocal()
426 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags) && in rt2x00link_start_vcocal()
427 rt2x00dev->ops->lib->vco_calibration) in rt2x00link_start_vcocal()
428 ieee80211_queue_delayed_work(rt2x00dev->hw, in rt2x00link_start_vcocal()
433 void rt2x00link_stop_agc(struct rt2x00_dev *rt2x00dev) in rt2x00link_stop_agc() argument
435 cancel_delayed_work_sync(&rt2x00dev->link.agc_work); in rt2x00link_stop_agc()
438 void rt2x00link_stop_vcocal(struct rt2x00_dev *rt2x00dev) in rt2x00link_stop_vcocal() argument
440 cancel_delayed_work_sync(&rt2x00dev->link.vco_work); in rt2x00link_stop_vcocal()
445 struct rt2x00_dev *rt2x00dev = in rt2x00link_agc() local
447 struct link *link = &rt2x00dev->link; in rt2x00link_agc()
453 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00link_agc()
456 rt2x00dev->ops->lib->gain_calibration(rt2x00dev); in rt2x00link_agc()
458 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00link_agc()
459 ieee80211_queue_delayed_work(rt2x00dev->hw, in rt2x00link_agc()
466 struct rt2x00_dev *rt2x00dev = in rt2x00link_vcocal() local
468 struct link *link = &rt2x00dev->link; in rt2x00link_vcocal()
474 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00link_vcocal()
477 rt2x00dev->ops->lib->vco_calibration(rt2x00dev); in rt2x00link_vcocal()
479 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00link_vcocal()
480 ieee80211_queue_delayed_work(rt2x00dev->hw, in rt2x00link_vcocal()
485 void rt2x00link_register(struct rt2x00_dev *rt2x00dev) in rt2x00link_register() argument
487 INIT_DELAYED_WORK(&rt2x00dev->link.agc_work, rt2x00link_agc); in rt2x00link_register()
488 if (rt2x00_has_cap_vco_recalibration(rt2x00dev)) in rt2x00link_register()
489 INIT_DELAYED_WORK(&rt2x00dev->link.vco_work, rt2x00link_vcocal); in rt2x00link_register()
490 INIT_DELAYED_WORK(&rt2x00dev->link.watchdog_work, rt2x00link_watchdog); in rt2x00link_register()
491 INIT_DELAYED_WORK(&rt2x00dev->link.work, rt2x00link_tuner); in rt2x00link_register()