Lines Matching refs:rtwdev
21 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_tx() local
23 if (!test_bit(RTW_FLAG_RUNNING, rtwdev->flags)) { in rtw_ops_tx()
28 rtw_tx(rtwdev, control, skb); in rtw_ops_tx()
34 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_wake_tx_queue() local
37 if (!test_bit(RTW_FLAG_RUNNING, rtwdev->flags)) in rtw_ops_wake_tx_queue()
40 spin_lock_bh(&rtwdev->txq_lock); in rtw_ops_wake_tx_queue()
42 list_add_tail(&rtwtxq->list, &rtwdev->txqs); in rtw_ops_wake_tx_queue()
43 spin_unlock_bh(&rtwdev->txq_lock); in rtw_ops_wake_tx_queue()
45 tasklet_schedule(&rtwdev->tx_tasklet); in rtw_ops_wake_tx_queue()
50 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_start() local
53 mutex_lock(&rtwdev->mutex); in rtw_ops_start()
54 ret = rtw_core_start(rtwdev); in rtw_ops_start()
55 mutex_unlock(&rtwdev->mutex); in rtw_ops_start()
62 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_stop() local
64 mutex_lock(&rtwdev->mutex); in rtw_ops_stop()
65 rtw_core_stop(rtwdev); in rtw_ops_stop()
66 mutex_unlock(&rtwdev->mutex); in rtw_ops_stop()
71 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_config() local
74 mutex_lock(&rtwdev->mutex); in rtw_ops_config()
76 rtw_leave_lps_deep(rtwdev); in rtw_ops_config()
80 ret = rtw_leave_ips(rtwdev); in rtw_ops_config()
82 rtw_err(rtwdev, "failed to leave idle state\n"); in rtw_ops_config()
89 rtwdev->ps_enabled = true; in rtw_ops_config()
91 rtwdev->ps_enabled = false; in rtw_ops_config()
92 rtw_leave_lps(rtwdev); in rtw_ops_config()
97 rtw_set_channel(rtwdev); in rtw_ops_config()
101 rtw_enter_ips(rtwdev); in rtw_ops_config()
104 mutex_unlock(&rtwdev->mutex); in rtw_ops_config()
149 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_add_interface() local
163 rtw_txq_init(rtwdev, vif->txq); in rtw_ops_add_interface()
166 mutex_lock(&rtwdev->mutex); in rtw_ops_add_interface()
168 rtw_leave_lps_deep(rtwdev); in rtw_ops_add_interface()
173 rtw_add_rsvd_page_bcn(rtwdev, rtwvif); in rtw_ops_add_interface()
178 rtw_add_rsvd_page_bcn(rtwdev, rtwvif); in rtw_ops_add_interface()
183 rtw_add_rsvd_page_sta(rtwdev, rtwvif); in rtw_ops_add_interface()
189 mutex_unlock(&rtwdev->mutex); in rtw_ops_add_interface()
199 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_add_interface()
201 mutex_unlock(&rtwdev->mutex); in rtw_ops_add_interface()
203 rtw_info(rtwdev, "start vif %pM on port %d\n", vif->addr, rtwvif->port); in rtw_ops_add_interface()
210 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_remove_interface() local
214 rtw_info(rtwdev, "stop vif %pM on port %d\n", vif->addr, rtwvif->port); in rtw_ops_remove_interface()
216 mutex_lock(&rtwdev->mutex); in rtw_ops_remove_interface()
218 rtw_leave_lps_deep(rtwdev); in rtw_ops_remove_interface()
220 rtw_txq_cleanup(rtwdev, vif->txq); in rtw_ops_remove_interface()
221 rtw_remove_rsvd_page(rtwdev, rtwvif); in rtw_ops_remove_interface()
229 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_remove_interface()
231 mutex_unlock(&rtwdev->mutex); in rtw_ops_remove_interface()
238 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_change_interface() local
240 rtw_info(rtwdev, "change vif %pM (%d)->(%d), p2p (%d)->(%d)\n", in rtw_ops_change_interface()
256 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_configure_filter() local
261 mutex_lock(&rtwdev->mutex); in rtw_ops_configure_filter()
263 rtw_leave_lps_deep(rtwdev); in rtw_ops_configure_filter()
267 rtwdev->hal.rcr |= BIT_AM | BIT_AB; in rtw_ops_configure_filter()
269 rtwdev->hal.rcr &= ~(BIT_AM | BIT_AB); in rtw_ops_configure_filter()
273 rtwdev->hal.rcr |= BIT_ACRC32; in rtw_ops_configure_filter()
275 rtwdev->hal.rcr &= ~(BIT_ACRC32); in rtw_ops_configure_filter()
279 rtwdev->hal.rcr |= BIT_AAP; in rtw_ops_configure_filter()
281 rtwdev->hal.rcr &= ~(BIT_AAP); in rtw_ops_configure_filter()
285 rtwdev->hal.rcr &= ~(BIT_CBSSID_BCN | BIT_CBSSID_DATA); in rtw_ops_configure_filter()
287 rtwdev->hal.rcr |= BIT_CBSSID_BCN; in rtw_ops_configure_filter()
290 rtw_dbg(rtwdev, RTW_DBG_RX, in rtw_ops_configure_filter()
292 changed_flags, *new_flags, rtwdev->hal.rcr); in rtw_ops_configure_filter()
294 rtw_write32(rtwdev, REG_RCR, rtwdev->hal.rcr); in rtw_ops_configure_filter()
296 mutex_unlock(&rtwdev->mutex); in rtw_ops_configure_filter()
307 static u8 rtw_aifsn_to_aifs(struct rtw_dev *rtwdev, in rtw_aifsn_to_aifs() argument
315 sifs = rtwdev->hal.current_band_type == RTW_BAND_5G ? 16 : 10; in rtw_aifsn_to_aifs()
320 static void __rtw_conf_tx(struct rtw_dev *rtwdev, in __rtw_conf_tx() argument
331 aifs = rtw_aifsn_to_aifs(rtwdev, rtwvif, params->aifs); in __rtw_conf_tx()
332 rtw_write32_mask(rtwdev, edca_param, BIT_MASK_TXOP_LMT, params->txop); in __rtw_conf_tx()
333 rtw_write32_mask(rtwdev, edca_param, BIT_MASK_CWMAX, ecw_max); in __rtw_conf_tx()
334 rtw_write32_mask(rtwdev, edca_param, BIT_MASK_CWMIN, ecw_min); in __rtw_conf_tx()
335 rtw_write32_mask(rtwdev, edca_param, BIT_MASK_AIFS, aifs); in __rtw_conf_tx()
338 static void rtw_conf_tx(struct rtw_dev *rtwdev, in rtw_conf_tx() argument
344 __rtw_conf_tx(rtwdev, rtwvif, ac); in rtw_conf_tx()
352 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_bss_info_changed() local
356 mutex_lock(&rtwdev->mutex); in rtw_ops_bss_info_changed()
358 rtw_leave_lps_deep(rtwdev); in rtw_ops_bss_info_changed()
363 rtw_coex_connect_notify(rtwdev, COEX_ASSOCIATE_FINISH); in rtw_ops_bss_info_changed()
365 rtw_fw_download_rsvd_page(rtwdev); in rtw_ops_bss_info_changed()
366 rtw_send_rsvd_page_h2c(rtwdev); in rtw_ops_bss_info_changed()
367 rtw_coex_media_status_notify(rtwdev, conf->assoc); in rtw_ops_bss_info_changed()
369 rtw_bf_assoc(rtwdev, vif, conf); in rtw_ops_bss_info_changed()
371 rtw_leave_lps(rtwdev); in rtw_ops_bss_info_changed()
372 rtw_bf_disassoc(rtwdev, vif, conf); in rtw_ops_bss_info_changed()
385 rtw_fw_download_rsvd_page(rtwdev); in rtw_ops_bss_info_changed()
389 rtw_write32_set(rtwdev, REG_FWHW_TXQ_CTRL, in rtw_ops_bss_info_changed()
392 rtw_write32_clr(rtwdev, REG_FWHW_TXQ_CTRL, in rtw_ops_bss_info_changed()
397 rtw_chip_set_gid_table(rtwdev, vif, conf); in rtw_ops_bss_info_changed()
400 rtw_conf_tx(rtwdev, rtwvif); in rtw_ops_bss_info_changed()
402 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_bss_info_changed()
404 mutex_unlock(&rtwdev->mutex); in rtw_ops_bss_info_changed()
411 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_conf_tx() local
414 mutex_lock(&rtwdev->mutex); in rtw_ops_conf_tx()
416 rtw_leave_lps_deep(rtwdev); in rtw_ops_conf_tx()
419 __rtw_conf_tx(rtwdev, rtwvif, ac); in rtw_ops_conf_tx()
421 mutex_unlock(&rtwdev->mutex); in rtw_ops_conf_tx()
430 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sta_add() local
433 mutex_lock(&rtwdev->mutex); in rtw_ops_sta_add()
434 ret = rtw_sta_add(rtwdev, sta, vif); in rtw_ops_sta_add()
435 mutex_unlock(&rtwdev->mutex); in rtw_ops_sta_add()
444 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sta_remove() local
446 mutex_lock(&rtwdev->mutex); in rtw_ops_sta_remove()
447 rtw_sta_remove(rtwdev, sta, true); in rtw_ops_sta_remove()
448 mutex_unlock(&rtwdev->mutex); in rtw_ops_sta_remove()
457 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_key() local
458 struct rtw_sec_desc *sec = &rtwdev->sec; in rtw_ops_set_key()
491 mutex_lock(&rtwdev->mutex); in rtw_ops_set_key()
493 rtw_leave_lps_deep(rtwdev); in rtw_ops_set_key()
512 rtw_sec_write_cam(rtwdev, sec, sta, key, in rtw_ops_set_key()
516 rtw_mac_flush_all_queues(rtwdev, false); in rtw_ops_set_key()
517 rtw_sec_clear_cam(rtwdev, sec, key->hw_key_idx); in rtw_ops_set_key()
523 rtw_fw_download_rsvd_page(rtwdev); in rtw_ops_set_key()
526 mutex_unlock(&rtwdev->mutex); in rtw_ops_set_key()
567 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_can_aggregate_in_amsdu() local
568 struct rtw_hal *hal = &rtwdev->hal; in rtw_ops_can_aggregate_in_amsdu()
581 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sw_scan_start() local
585 mutex_lock(&rtwdev->mutex); in rtw_ops_sw_scan_start()
587 rtw_leave_lps(rtwdev); in rtw_ops_sw_scan_start()
591 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_sw_scan_start()
593 rtw_coex_scan_notify(rtwdev, COEX_SCAN_START); in rtw_ops_sw_scan_start()
595 set_bit(RTW_FLAG_DIG_DISABLE, rtwdev->flags); in rtw_ops_sw_scan_start()
596 set_bit(RTW_FLAG_SCANNING, rtwdev->flags); in rtw_ops_sw_scan_start()
598 mutex_unlock(&rtwdev->mutex); in rtw_ops_sw_scan_start()
604 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sw_scan_complete() local
608 mutex_lock(&rtwdev->mutex); in rtw_ops_sw_scan_complete()
610 clear_bit(RTW_FLAG_SCANNING, rtwdev->flags); in rtw_ops_sw_scan_complete()
611 clear_bit(RTW_FLAG_DIG_DISABLE, rtwdev->flags); in rtw_ops_sw_scan_complete()
615 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_sw_scan_complete()
617 rtw_coex_scan_notify(rtwdev, COEX_SCAN_FINISH); in rtw_ops_sw_scan_complete()
619 mutex_unlock(&rtwdev->mutex); in rtw_ops_sw_scan_complete()
626 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_mgd_prepare_tx() local
628 mutex_lock(&rtwdev->mutex); in rtw_ops_mgd_prepare_tx()
629 rtw_leave_lps_deep(rtwdev); in rtw_ops_mgd_prepare_tx()
630 rtw_coex_connect_notify(rtwdev, COEX_ASSOCIATE_START); in rtw_ops_mgd_prepare_tx()
631 rtw_chip_prepare_tx(rtwdev); in rtw_ops_mgd_prepare_tx()
632 mutex_unlock(&rtwdev->mutex); in rtw_ops_mgd_prepare_tx()
637 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_rts_threshold() local
639 mutex_lock(&rtwdev->mutex); in rtw_ops_set_rts_threshold()
640 rtwdev->rts_threshold = value; in rtw_ops_set_rts_threshold()
641 mutex_unlock(&rtwdev->mutex); in rtw_ops_set_rts_threshold()
661 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_flush() local
663 mutex_lock(&rtwdev->mutex); in rtw_ops_flush()
664 rtw_leave_lps_deep(rtwdev); in rtw_ops_flush()
666 rtw_mac_flush_queues(rtwdev, queues, drop); in rtw_ops_flush()
667 mutex_unlock(&rtwdev->mutex); in rtw_ops_flush()
671 struct rtw_dev *rtwdev; member
694 rtw_update_sta_info(br_data->rtwdev, si); in rtw_ra_mask_info_update_iter()
697 static void rtw_ra_mask_info_update(struct rtw_dev *rtwdev, in rtw_ra_mask_info_update() argument
703 br_data.rtwdev = rtwdev; in rtw_ra_mask_info_update()
706 rtw_iterate_stas_atomic(rtwdev, rtw_ra_mask_info_update_iter, &br_data); in rtw_ra_mask_info_update()
713 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_bitrate_mask() local
715 rtw_ra_mask_info_update(rtwdev, vif, mask); in rtw_ops_set_bitrate_mask()
724 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_antenna() local
725 struct rtw_chip_info *chip = rtwdev->chip; in rtw_ops_set_antenna()
731 mutex_lock(&rtwdev->mutex); in rtw_ops_set_antenna()
732 ret = chip->ops->set_antenna(rtwdev, tx_antenna, rx_antenna); in rtw_ops_set_antenna()
733 mutex_unlock(&rtwdev->mutex); in rtw_ops_set_antenna()
742 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_get_antenna() local
743 struct rtw_hal *hal = &rtwdev->hal; in rtw_ops_get_antenna()
755 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_suspend() local
758 mutex_lock(&rtwdev->mutex); in rtw_ops_suspend()
759 ret = rtw_wow_suspend(rtwdev, wowlan); in rtw_ops_suspend()
761 rtw_err(rtwdev, "failed to suspend for wow %d\n", ret); in rtw_ops_suspend()
762 mutex_unlock(&rtwdev->mutex); in rtw_ops_suspend()
769 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_resume() local
772 mutex_lock(&rtwdev->mutex); in rtw_ops_resume()
773 ret = rtw_wow_resume(rtwdev); in rtw_ops_resume()
775 rtw_err(rtwdev, "failed to resume for wow %d\n", ret); in rtw_ops_resume()
776 mutex_unlock(&rtwdev->mutex); in rtw_ops_resume()
783 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_wakeup() local
785 device_set_wakeup_enable(rtwdev->dev, enabled); in rtw_ops_set_wakeup()
792 struct rtw_dev *rtwdev = hw->priv; in rtw_reconfig_complete() local
794 mutex_lock(&rtwdev->mutex); in rtw_reconfig_complete()
796 clear_bit(RTW_FLAG_RESTARTING, rtwdev->flags); in rtw_reconfig_complete()
797 mutex_unlock(&rtwdev->mutex); in rtw_reconfig_complete()