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 queue_work(rtwdev->tx_wq, &rtwdev->tx_work); 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
156 if (rtw_fw_feature_check(&rtwdev->fw, FW_FEATURE_BCN_FILTER)) in rtw_ops_add_interface()
166 rtw_txq_init(rtwdev, vif->txq); in rtw_ops_add_interface()
169 mutex_lock(&rtwdev->mutex); in rtw_ops_add_interface()
171 rtw_leave_lps_deep(rtwdev); in rtw_ops_add_interface()
176 rtw_add_rsvd_page_bcn(rtwdev, rtwvif); in rtw_ops_add_interface()
181 rtw_add_rsvd_page_bcn(rtwdev, rtwvif); in rtw_ops_add_interface()
186 rtw_add_rsvd_page_sta(rtwdev, rtwvif); in rtw_ops_add_interface()
192 mutex_unlock(&rtwdev->mutex); in rtw_ops_add_interface()
202 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_add_interface()
204 mutex_unlock(&rtwdev->mutex); in rtw_ops_add_interface()
206 rtw_info(rtwdev, "start vif %pM on port %d\n", vif->addr, rtwvif->port); in rtw_ops_add_interface()
213 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_remove_interface() local
217 rtw_info(rtwdev, "stop vif %pM on port %d\n", vif->addr, rtwvif->port); in rtw_ops_remove_interface()
219 mutex_lock(&rtwdev->mutex); in rtw_ops_remove_interface()
221 rtw_leave_lps_deep(rtwdev); in rtw_ops_remove_interface()
223 rtw_txq_cleanup(rtwdev, vif->txq); in rtw_ops_remove_interface()
224 rtw_remove_rsvd_page(rtwdev, rtwvif); in rtw_ops_remove_interface()
232 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_remove_interface()
234 mutex_unlock(&rtwdev->mutex); in rtw_ops_remove_interface()
241 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_change_interface() local
243 rtw_info(rtwdev, "change vif %pM (%d)->(%d), p2p (%d)->(%d)\n", in rtw_ops_change_interface()
259 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_configure_filter() local
264 mutex_lock(&rtwdev->mutex); in rtw_ops_configure_filter()
266 rtw_leave_lps_deep(rtwdev); in rtw_ops_configure_filter()
270 rtwdev->hal.rcr |= BIT_AM | BIT_AB; in rtw_ops_configure_filter()
272 rtwdev->hal.rcr &= ~(BIT_AM | BIT_AB); in rtw_ops_configure_filter()
276 rtwdev->hal.rcr |= BIT_ACRC32; in rtw_ops_configure_filter()
278 rtwdev->hal.rcr &= ~(BIT_ACRC32); in rtw_ops_configure_filter()
282 rtwdev->hal.rcr |= BIT_AAP; in rtw_ops_configure_filter()
284 rtwdev->hal.rcr &= ~(BIT_AAP); in rtw_ops_configure_filter()
288 rtwdev->hal.rcr &= ~(BIT_CBSSID_BCN | BIT_CBSSID_DATA); in rtw_ops_configure_filter()
290 rtwdev->hal.rcr |= BIT_CBSSID_BCN; in rtw_ops_configure_filter()
293 rtw_dbg(rtwdev, RTW_DBG_RX, in rtw_ops_configure_filter()
295 changed_flags, *new_flags, rtwdev->hal.rcr); in rtw_ops_configure_filter()
297 rtw_write32(rtwdev, REG_RCR, rtwdev->hal.rcr); in rtw_ops_configure_filter()
299 mutex_unlock(&rtwdev->mutex); in rtw_ops_configure_filter()
310 static u8 rtw_aifsn_to_aifs(struct rtw_dev *rtwdev, in rtw_aifsn_to_aifs() argument
318 sifs = rtwdev->hal.current_band_type == RTW_BAND_5G ? 16 : 10; in rtw_aifsn_to_aifs()
323 static void __rtw_conf_tx(struct rtw_dev *rtwdev, in __rtw_conf_tx() argument
334 aifs = rtw_aifsn_to_aifs(rtwdev, rtwvif, params->aifs); in __rtw_conf_tx()
335 rtw_write32_mask(rtwdev, edca_param, BIT_MASK_TXOP_LMT, params->txop); in __rtw_conf_tx()
336 rtw_write32_mask(rtwdev, edca_param, BIT_MASK_CWMAX, ecw_max); in __rtw_conf_tx()
337 rtw_write32_mask(rtwdev, edca_param, BIT_MASK_CWMIN, ecw_min); in __rtw_conf_tx()
338 rtw_write32_mask(rtwdev, edca_param, BIT_MASK_AIFS, aifs); in __rtw_conf_tx()
341 static void rtw_conf_tx(struct rtw_dev *rtwdev, in rtw_conf_tx() argument
347 __rtw_conf_tx(rtwdev, rtwvif, ac); in rtw_conf_tx()
355 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_bss_info_changed() local
357 struct rtw_coex *coex = &rtwdev->coex; in rtw_ops_bss_info_changed()
361 mutex_lock(&rtwdev->mutex); in rtw_ops_bss_info_changed()
363 rtw_leave_lps_deep(rtwdev); in rtw_ops_bss_info_changed()
368 rtw_coex_connect_notify(rtwdev, COEX_ASSOCIATE_FINISH); in rtw_ops_bss_info_changed()
370 rtw_fw_download_rsvd_page(rtwdev); in rtw_ops_bss_info_changed()
371 rtw_send_rsvd_page_h2c(rtwdev); in rtw_ops_bss_info_changed()
372 rtw_coex_media_status_notify(rtwdev, conf->assoc); in rtw_ops_bss_info_changed()
374 rtw_bf_assoc(rtwdev, vif, conf); in rtw_ops_bss_info_changed()
376 rtw_leave_lps(rtwdev); in rtw_ops_bss_info_changed()
377 rtw_bf_disassoc(rtwdev, vif, conf); in rtw_ops_bss_info_changed()
395 rtw_fw_download_rsvd_page(rtwdev); in rtw_ops_bss_info_changed()
399 rtw_write32_set(rtwdev, REG_FWHW_TXQ_CTRL, in rtw_ops_bss_info_changed()
402 rtw_write32_clr(rtwdev, REG_FWHW_TXQ_CTRL, in rtw_ops_bss_info_changed()
406 rtw_fw_beacon_filter_config(rtwdev, true, vif); in rtw_ops_bss_info_changed()
409 rtw_chip_set_gid_table(rtwdev, vif, conf); in rtw_ops_bss_info_changed()
412 rtw_conf_tx(rtwdev, rtwvif); in rtw_ops_bss_info_changed()
414 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_bss_info_changed()
416 mutex_unlock(&rtwdev->mutex); in rtw_ops_bss_info_changed()
423 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_conf_tx() local
426 mutex_lock(&rtwdev->mutex); in rtw_ops_conf_tx()
428 rtw_leave_lps_deep(rtwdev); in rtw_ops_conf_tx()
431 __rtw_conf_tx(rtwdev, rtwvif, ac); in rtw_ops_conf_tx()
433 mutex_unlock(&rtwdev->mutex); in rtw_ops_conf_tx()
442 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sta_add() local
445 mutex_lock(&rtwdev->mutex); in rtw_ops_sta_add()
446 ret = rtw_sta_add(rtwdev, sta, vif); in rtw_ops_sta_add()
447 mutex_unlock(&rtwdev->mutex); in rtw_ops_sta_add()
456 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sta_remove() local
458 rtw_fw_beacon_filter_config(rtwdev, false, vif); in rtw_ops_sta_remove()
459 mutex_lock(&rtwdev->mutex); in rtw_ops_sta_remove()
460 rtw_sta_remove(rtwdev, sta, true); in rtw_ops_sta_remove()
461 mutex_unlock(&rtwdev->mutex); in rtw_ops_sta_remove()
470 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_key() local
471 struct rtw_sec_desc *sec = &rtwdev->sec; in rtw_ops_set_key()
504 mutex_lock(&rtwdev->mutex); in rtw_ops_set_key()
506 rtw_leave_lps_deep(rtwdev); in rtw_ops_set_key()
525 rtw_sec_write_cam(rtwdev, sec, sta, key, in rtw_ops_set_key()
529 rtw_hci_flush_all_queues(rtwdev, false); in rtw_ops_set_key()
530 rtw_mac_flush_all_queues(rtwdev, false); in rtw_ops_set_key()
531 rtw_sec_clear_cam(rtwdev, sec, key->hw_key_idx); in rtw_ops_set_key()
536 if (rtw_get_lps_deep_mode(rtwdev) == LPS_DEEP_MODE_PG) in rtw_ops_set_key()
537 rtw_fw_download_rsvd_page(rtwdev); in rtw_ops_set_key()
540 mutex_unlock(&rtwdev->mutex); in rtw_ops_set_key()
581 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_can_aggregate_in_amsdu() local
582 struct rtw_hal *hal = &rtwdev->hal; in rtw_ops_can_aggregate_in_amsdu()
595 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sw_scan_start() local
599 mutex_lock(&rtwdev->mutex); in rtw_ops_sw_scan_start()
601 rtw_leave_lps(rtwdev); in rtw_ops_sw_scan_start()
605 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_sw_scan_start()
607 rtw_coex_scan_notify(rtwdev, COEX_SCAN_START); in rtw_ops_sw_scan_start()
608 rtw_core_fw_scan_notify(rtwdev, true); in rtw_ops_sw_scan_start()
610 set_bit(RTW_FLAG_DIG_DISABLE, rtwdev->flags); in rtw_ops_sw_scan_start()
611 set_bit(RTW_FLAG_SCANNING, rtwdev->flags); in rtw_ops_sw_scan_start()
613 mutex_unlock(&rtwdev->mutex); in rtw_ops_sw_scan_start()
619 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sw_scan_complete() local
623 mutex_lock(&rtwdev->mutex); in rtw_ops_sw_scan_complete()
625 clear_bit(RTW_FLAG_SCANNING, rtwdev->flags); in rtw_ops_sw_scan_complete()
626 clear_bit(RTW_FLAG_DIG_DISABLE, rtwdev->flags); in rtw_ops_sw_scan_complete()
628 rtw_core_fw_scan_notify(rtwdev, false); in rtw_ops_sw_scan_complete()
632 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_sw_scan_complete()
634 rtw_coex_scan_notify(rtwdev, COEX_SCAN_FINISH); in rtw_ops_sw_scan_complete()
636 mutex_unlock(&rtwdev->mutex); in rtw_ops_sw_scan_complete()
643 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_mgd_prepare_tx() local
645 mutex_lock(&rtwdev->mutex); in rtw_ops_mgd_prepare_tx()
646 rtw_leave_lps_deep(rtwdev); in rtw_ops_mgd_prepare_tx()
647 rtw_coex_connect_notify(rtwdev, COEX_ASSOCIATE_START); in rtw_ops_mgd_prepare_tx()
648 rtw_chip_prepare_tx(rtwdev); in rtw_ops_mgd_prepare_tx()
649 mutex_unlock(&rtwdev->mutex); in rtw_ops_mgd_prepare_tx()
654 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_rts_threshold() local
656 mutex_lock(&rtwdev->mutex); in rtw_ops_set_rts_threshold()
657 rtwdev->rts_threshold = value; in rtw_ops_set_rts_threshold()
658 mutex_unlock(&rtwdev->mutex); in rtw_ops_set_rts_threshold()
678 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_flush() local
680 mutex_lock(&rtwdev->mutex); in rtw_ops_flush()
681 rtw_leave_lps_deep(rtwdev); in rtw_ops_flush()
683 rtw_hci_flush_queues(rtwdev, queues, drop); in rtw_ops_flush()
684 rtw_mac_flush_queues(rtwdev, queues, drop); in rtw_ops_flush()
685 mutex_unlock(&rtwdev->mutex); in rtw_ops_flush()
689 struct rtw_dev *rtwdev; member
712 rtw_update_sta_info(br_data->rtwdev, si); in rtw_ra_mask_info_update_iter()
715 static void rtw_ra_mask_info_update(struct rtw_dev *rtwdev, in rtw_ra_mask_info_update() argument
721 br_data.rtwdev = rtwdev; in rtw_ra_mask_info_update()
724 rtw_iterate_stas_atomic(rtwdev, rtw_ra_mask_info_update_iter, &br_data); in rtw_ra_mask_info_update()
731 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_bitrate_mask() local
733 rtw_ra_mask_info_update(rtwdev, vif, mask); in rtw_ops_set_bitrate_mask()
742 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_antenna() local
743 struct rtw_chip_info *chip = rtwdev->chip; in rtw_ops_set_antenna()
749 mutex_lock(&rtwdev->mutex); in rtw_ops_set_antenna()
750 ret = chip->ops->set_antenna(rtwdev, tx_antenna, rx_antenna); in rtw_ops_set_antenna()
751 mutex_unlock(&rtwdev->mutex); in rtw_ops_set_antenna()
760 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_get_antenna() local
761 struct rtw_hal *hal = &rtwdev->hal; in rtw_ops_get_antenna()
773 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_suspend() local
776 mutex_lock(&rtwdev->mutex); in rtw_ops_suspend()
777 ret = rtw_wow_suspend(rtwdev, wowlan); in rtw_ops_suspend()
779 rtw_err(rtwdev, "failed to suspend for wow %d\n", ret); in rtw_ops_suspend()
780 mutex_unlock(&rtwdev->mutex); in rtw_ops_suspend()
787 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_resume() local
790 mutex_lock(&rtwdev->mutex); in rtw_ops_resume()
791 ret = rtw_wow_resume(rtwdev); in rtw_ops_resume()
793 rtw_err(rtwdev, "failed to resume for wow %d\n", ret); in rtw_ops_resume()
794 mutex_unlock(&rtwdev->mutex); in rtw_ops_resume()
801 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_wakeup() local
803 device_set_wakeup_enable(rtwdev->dev, enabled); in rtw_ops_set_wakeup()
810 struct rtw_dev *rtwdev = hw->priv; in rtw_reconfig_complete() local
812 mutex_lock(&rtwdev->mutex); in rtw_reconfig_complete()
814 clear_bit(RTW_FLAG_RESTARTING, rtwdev->flags); in rtw_reconfig_complete()
815 mutex_unlock(&rtwdev->mutex); in rtw_reconfig_complete()