Lines Matching refs:rtwdev
22 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_tx() local
24 if (!test_bit(RTW_FLAG_RUNNING, rtwdev->flags)) { in rtw_ops_tx()
29 rtw_tx(rtwdev, control, skb); in rtw_ops_tx()
35 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_wake_tx_queue() local
38 if (!test_bit(RTW_FLAG_RUNNING, rtwdev->flags)) in rtw_ops_wake_tx_queue()
41 spin_lock_bh(&rtwdev->txq_lock); in rtw_ops_wake_tx_queue()
43 list_add_tail(&rtwtxq->list, &rtwdev->txqs); in rtw_ops_wake_tx_queue()
44 spin_unlock_bh(&rtwdev->txq_lock); in rtw_ops_wake_tx_queue()
46 queue_work(rtwdev->tx_wq, &rtwdev->tx_work); in rtw_ops_wake_tx_queue()
51 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_start() local
54 mutex_lock(&rtwdev->mutex); in rtw_ops_start()
55 ret = rtw_core_start(rtwdev); in rtw_ops_start()
56 mutex_unlock(&rtwdev->mutex); in rtw_ops_start()
63 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_stop() local
65 mutex_lock(&rtwdev->mutex); in rtw_ops_stop()
66 rtw_core_stop(rtwdev); in rtw_ops_stop()
67 mutex_unlock(&rtwdev->mutex); in rtw_ops_stop()
72 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_config() local
76 cancel_work_sync(&rtwdev->ips_work); in rtw_ops_config()
78 mutex_lock(&rtwdev->mutex); in rtw_ops_config()
80 rtw_leave_lps_deep(rtwdev); in rtw_ops_config()
84 ret = rtw_leave_ips(rtwdev); in rtw_ops_config()
86 rtw_err(rtwdev, "failed to leave idle state\n"); in rtw_ops_config()
93 rtwdev->ps_enabled = true; in rtw_ops_config()
95 rtwdev->ps_enabled = false; in rtw_ops_config()
96 rtw_leave_lps(rtwdev); in rtw_ops_config()
101 rtw_set_channel(rtwdev); in rtw_ops_config()
105 !test_bit(RTW_FLAG_SCANNING, rtwdev->flags)) in rtw_ops_config()
106 rtw_enter_ips(rtwdev); in rtw_ops_config()
109 mutex_unlock(&rtwdev->mutex); in rtw_ops_config()
154 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_add_interface() local
161 if (rtw_fw_feature_check(&rtwdev->fw, FW_FEATURE_BCN_FILTER)) in rtw_ops_add_interface()
172 rtw_txq_init(rtwdev, vif->txq); in rtw_ops_add_interface()
175 mutex_lock(&rtwdev->mutex); in rtw_ops_add_interface()
177 rtw_leave_lps_deep(rtwdev); in rtw_ops_add_interface()
182 rtw_add_rsvd_page_bcn(rtwdev, rtwvif); in rtw_ops_add_interface()
187 rtw_add_rsvd_page_bcn(rtwdev, rtwvif); in rtw_ops_add_interface()
192 rtw_add_rsvd_page_sta(rtwdev, rtwvif); in rtw_ops_add_interface()
198 mutex_unlock(&rtwdev->mutex); in rtw_ops_add_interface()
208 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_add_interface()
210 mutex_unlock(&rtwdev->mutex); in rtw_ops_add_interface()
212 rtw_dbg(rtwdev, RTW_DBG_STATE, "start vif %pM on port %d\n", vif->addr, rtwvif->port); in rtw_ops_add_interface()
219 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_remove_interface() local
223 rtw_dbg(rtwdev, RTW_DBG_STATE, "stop vif %pM on port %d\n", vif->addr, rtwvif->port); in rtw_ops_remove_interface()
225 mutex_lock(&rtwdev->mutex); in rtw_ops_remove_interface()
227 rtw_leave_lps_deep(rtwdev); in rtw_ops_remove_interface()
229 rtw_txq_cleanup(rtwdev, vif->txq); in rtw_ops_remove_interface()
230 rtw_remove_rsvd_page(rtwdev, rtwvif); in rtw_ops_remove_interface()
238 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_remove_interface()
240 mutex_unlock(&rtwdev->mutex); in rtw_ops_remove_interface()
247 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_change_interface() local
249 rtw_dbg(rtwdev, RTW_DBG_STATE, "change vif %pM (%d)->(%d), p2p (%d)->(%d)\n", in rtw_ops_change_interface()
265 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_configure_filter() local
270 mutex_lock(&rtwdev->mutex); in rtw_ops_configure_filter()
272 rtw_leave_lps_deep(rtwdev); in rtw_ops_configure_filter()
276 rtwdev->hal.rcr |= BIT_AM | BIT_AB; in rtw_ops_configure_filter()
278 rtwdev->hal.rcr &= ~(BIT_AM | BIT_AB); in rtw_ops_configure_filter()
282 rtwdev->hal.rcr |= BIT_ACRC32; in rtw_ops_configure_filter()
284 rtwdev->hal.rcr &= ~(BIT_ACRC32); in rtw_ops_configure_filter()
288 rtwdev->hal.rcr |= BIT_AAP; in rtw_ops_configure_filter()
290 rtwdev->hal.rcr &= ~(BIT_AAP); in rtw_ops_configure_filter()
294 rtwdev->hal.rcr &= ~(BIT_CBSSID_BCN | BIT_CBSSID_DATA); in rtw_ops_configure_filter()
296 rtwdev->hal.rcr |= BIT_CBSSID_BCN; in rtw_ops_configure_filter()
299 rtw_dbg(rtwdev, RTW_DBG_RX, in rtw_ops_configure_filter()
301 changed_flags, *new_flags, rtwdev->hal.rcr); in rtw_ops_configure_filter()
303 rtw_write32(rtwdev, REG_RCR, rtwdev->hal.rcr); in rtw_ops_configure_filter()
305 mutex_unlock(&rtwdev->mutex); in rtw_ops_configure_filter()
316 static u8 rtw_aifsn_to_aifs(struct rtw_dev *rtwdev, in rtw_aifsn_to_aifs() argument
324 sifs = rtwdev->hal.current_band_type == RTW_BAND_5G ? 16 : 10; in rtw_aifsn_to_aifs()
329 static void __rtw_conf_tx(struct rtw_dev *rtwdev, in __rtw_conf_tx() argument
340 aifs = rtw_aifsn_to_aifs(rtwdev, rtwvif, params->aifs); in __rtw_conf_tx()
341 rtw_write32_mask(rtwdev, edca_param, BIT_MASK_TXOP_LMT, params->txop); in __rtw_conf_tx()
342 rtw_write32_mask(rtwdev, edca_param, BIT_MASK_CWMAX, ecw_max); in __rtw_conf_tx()
343 rtw_write32_mask(rtwdev, edca_param, BIT_MASK_CWMIN, ecw_min); in __rtw_conf_tx()
344 rtw_write32_mask(rtwdev, edca_param, BIT_MASK_AIFS, aifs); in __rtw_conf_tx()
347 static void rtw_conf_tx(struct rtw_dev *rtwdev, in rtw_conf_tx() argument
353 __rtw_conf_tx(rtwdev, rtwvif, ac); in rtw_conf_tx()
361 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_bss_info_changed() local
363 struct rtw_coex *coex = &rtwdev->coex; in rtw_ops_bss_info_changed()
367 mutex_lock(&rtwdev->mutex); in rtw_ops_bss_info_changed()
369 rtw_leave_lps_deep(rtwdev); in rtw_ops_bss_info_changed()
374 rtw_coex_connect_notify(rtwdev, COEX_ASSOCIATE_FINISH); in rtw_ops_bss_info_changed()
376 rtw_fw_download_rsvd_page(rtwdev); in rtw_ops_bss_info_changed()
377 rtw_send_rsvd_page_h2c(rtwdev); in rtw_ops_bss_info_changed()
378 rtw_coex_media_status_notify(rtwdev, vif->cfg.assoc); in rtw_ops_bss_info_changed()
380 rtw_bf_assoc(rtwdev, vif, conf); in rtw_ops_bss_info_changed()
382 rtw_leave_lps(rtwdev); in rtw_ops_bss_info_changed()
383 rtw_bf_disassoc(rtwdev, vif, conf); in rtw_ops_bss_info_changed()
387 if (test_bit(RTW_FLAG_SCANNING, rtwdev->flags)) in rtw_ops_bss_info_changed()
388 rtw_hw_scan_abort(rtwdev, vif); in rtw_ops_bss_info_changed()
399 rtw_clear_op_chan(rtwdev); in rtw_ops_bss_info_changed()
401 rtw_store_op_chan(rtwdev, true); in rtw_ops_bss_info_changed()
410 rtw_set_dtim_period(rtwdev, conf->dtim_period); in rtw_ops_bss_info_changed()
411 rtw_fw_download_rsvd_page(rtwdev); in rtw_ops_bss_info_changed()
416 rtw_write32_set(rtwdev, REG_FWHW_TXQ_CTRL, in rtw_ops_bss_info_changed()
419 rtw_write32_clr(rtwdev, REG_FWHW_TXQ_CTRL, in rtw_ops_bss_info_changed()
423 rtw_fw_beacon_filter_config(rtwdev, true, vif); in rtw_ops_bss_info_changed()
426 rtw_chip_set_gid_table(rtwdev, vif, conf); in rtw_ops_bss_info_changed()
429 rtw_conf_tx(rtwdev, rtwvif); in rtw_ops_bss_info_changed()
431 rtw_vif_port_config(rtwdev, rtwvif, config); in rtw_ops_bss_info_changed()
433 mutex_unlock(&rtwdev->mutex); in rtw_ops_bss_info_changed()
440 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_start_ap() local
441 const struct rtw_chip_info *chip = rtwdev->chip; in rtw_ops_start_ap()
443 mutex_lock(&rtwdev->mutex); in rtw_ops_start_ap()
444 chip->ops->phy_calibration(rtwdev); in rtw_ops_start_ap()
445 mutex_unlock(&rtwdev->mutex); in rtw_ops_start_ap()
455 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_conf_tx() local
458 mutex_lock(&rtwdev->mutex); in rtw_ops_conf_tx()
460 rtw_leave_lps_deep(rtwdev); in rtw_ops_conf_tx()
463 __rtw_conf_tx(rtwdev, rtwvif, ac); in rtw_ops_conf_tx()
465 mutex_unlock(&rtwdev->mutex); in rtw_ops_conf_tx()
474 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sta_add() local
477 mutex_lock(&rtwdev->mutex); in rtw_ops_sta_add()
478 ret = rtw_sta_add(rtwdev, sta, vif); in rtw_ops_sta_add()
479 mutex_unlock(&rtwdev->mutex); in rtw_ops_sta_add()
488 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sta_remove() local
490 rtw_fw_beacon_filter_config(rtwdev, false, vif); in rtw_ops_sta_remove()
491 mutex_lock(&rtwdev->mutex); in rtw_ops_sta_remove()
492 rtw_sta_remove(rtwdev, sta, true); in rtw_ops_sta_remove()
493 mutex_unlock(&rtwdev->mutex); in rtw_ops_sta_remove()
501 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_tim() local
503 ieee80211_queue_work(hw, &rtwdev->update_beacon_work); in rtw_ops_set_tim()
512 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_key() local
513 struct rtw_sec_desc *sec = &rtwdev->sec; in rtw_ops_set_key()
546 mutex_lock(&rtwdev->mutex); in rtw_ops_set_key()
548 rtw_leave_lps_deep(rtwdev); in rtw_ops_set_key()
567 rtw_sec_write_cam(rtwdev, sec, sta, key, in rtw_ops_set_key()
571 rtw_hci_flush_all_queues(rtwdev, false); in rtw_ops_set_key()
572 rtw_mac_flush_all_queues(rtwdev, false); in rtw_ops_set_key()
573 rtw_sec_clear_cam(rtwdev, sec, key->hw_key_idx); in rtw_ops_set_key()
578 if (rtw_get_lps_deep_mode(rtwdev) == LPS_DEEP_MODE_PG) in rtw_ops_set_key()
579 rtw_fw_download_rsvd_page(rtwdev); in rtw_ops_set_key()
582 mutex_unlock(&rtwdev->mutex); in rtw_ops_set_key()
623 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_can_aggregate_in_amsdu() local
624 struct rtw_hal *hal = &rtwdev->hal; in rtw_ops_can_aggregate_in_amsdu()
637 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sw_scan_start() local
640 mutex_lock(&rtwdev->mutex); in rtw_ops_sw_scan_start()
641 rtw_core_scan_start(rtwdev, rtwvif, mac_addr, false); in rtw_ops_sw_scan_start()
642 mutex_unlock(&rtwdev->mutex); in rtw_ops_sw_scan_start()
648 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sw_scan_complete() local
650 mutex_lock(&rtwdev->mutex); in rtw_ops_sw_scan_complete()
651 rtw_core_scan_complete(rtwdev, vif, false); in rtw_ops_sw_scan_complete()
652 mutex_unlock(&rtwdev->mutex); in rtw_ops_sw_scan_complete()
659 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_mgd_prepare_tx() local
661 mutex_lock(&rtwdev->mutex); in rtw_ops_mgd_prepare_tx()
662 rtw_leave_lps_deep(rtwdev); in rtw_ops_mgd_prepare_tx()
663 rtw_coex_connect_notify(rtwdev, COEX_ASSOCIATE_START); in rtw_ops_mgd_prepare_tx()
664 rtw_chip_prepare_tx(rtwdev); in rtw_ops_mgd_prepare_tx()
665 mutex_unlock(&rtwdev->mutex); in rtw_ops_mgd_prepare_tx()
670 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_rts_threshold() local
672 mutex_lock(&rtwdev->mutex); in rtw_ops_set_rts_threshold()
673 rtwdev->rts_threshold = value; in rtw_ops_set_rts_threshold()
674 mutex_unlock(&rtwdev->mutex); in rtw_ops_set_rts_threshold()
694 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_flush() local
696 mutex_lock(&rtwdev->mutex); in rtw_ops_flush()
697 rtw_leave_lps_deep(rtwdev); in rtw_ops_flush()
699 rtw_hci_flush_queues(rtwdev, queues, drop); in rtw_ops_flush()
700 rtw_mac_flush_queues(rtwdev, queues, drop); in rtw_ops_flush()
701 mutex_unlock(&rtwdev->mutex); in rtw_ops_flush()
705 struct rtw_dev *rtwdev; member
728 rtw_update_sta_info(br_data->rtwdev, si, true); in rtw_ra_mask_info_update_iter()
731 static void rtw_ra_mask_info_update(struct rtw_dev *rtwdev, in rtw_ra_mask_info_update() argument
737 br_data.rtwdev = rtwdev; in rtw_ra_mask_info_update()
740 rtw_iterate_stas_atomic(rtwdev, rtw_ra_mask_info_update_iter, &br_data); in rtw_ra_mask_info_update()
747 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_bitrate_mask() local
749 rtw_ra_mask_info_update(rtwdev, vif, mask); in rtw_ops_set_bitrate_mask()
758 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_antenna() local
759 const struct rtw_chip_info *chip = rtwdev->chip; in rtw_ops_set_antenna()
765 mutex_lock(&rtwdev->mutex); in rtw_ops_set_antenna()
766 ret = chip->ops->set_antenna(rtwdev, tx_antenna, rx_antenna); in rtw_ops_set_antenna()
767 mutex_unlock(&rtwdev->mutex); in rtw_ops_set_antenna()
776 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_get_antenna() local
777 struct rtw_hal *hal = &rtwdev->hal; in rtw_ops_get_antenna()
789 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_suspend() local
792 mutex_lock(&rtwdev->mutex); in rtw_ops_suspend()
793 ret = rtw_wow_suspend(rtwdev, wowlan); in rtw_ops_suspend()
795 rtw_err(rtwdev, "failed to suspend for wow %d\n", ret); in rtw_ops_suspend()
796 mutex_unlock(&rtwdev->mutex); in rtw_ops_suspend()
803 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_resume() local
806 mutex_lock(&rtwdev->mutex); in rtw_ops_resume()
807 ret = rtw_wow_resume(rtwdev); in rtw_ops_resume()
809 rtw_err(rtwdev, "failed to resume for wow %d\n", ret); in rtw_ops_resume()
810 mutex_unlock(&rtwdev->mutex); in rtw_ops_resume()
817 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_wakeup() local
819 device_set_wakeup_enable(rtwdev->dev, enabled); in rtw_ops_set_wakeup()
826 struct rtw_dev *rtwdev = hw->priv; in rtw_reconfig_complete() local
828 mutex_lock(&rtwdev->mutex); in rtw_reconfig_complete()
830 clear_bit(RTW_FLAG_RESTARTING, rtwdev->flags); in rtw_reconfig_complete()
831 mutex_unlock(&rtwdev->mutex); in rtw_reconfig_complete()
837 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_hw_scan() local
840 if (!rtw_fw_feature_check(&rtwdev->fw, FW_FEATURE_SCAN_OFFLOAD)) in rtw_ops_hw_scan()
843 if (test_bit(RTW_FLAG_SCANNING, rtwdev->flags)) in rtw_ops_hw_scan()
846 mutex_lock(&rtwdev->mutex); in rtw_ops_hw_scan()
847 rtw_hw_scan_start(rtwdev, vif, req); in rtw_ops_hw_scan()
848 ret = rtw_hw_scan_offload(rtwdev, vif, true); in rtw_ops_hw_scan()
850 rtw_hw_scan_abort(rtwdev, vif); in rtw_ops_hw_scan()
851 rtw_err(rtwdev, "HW scan failed with status: %d\n", ret); in rtw_ops_hw_scan()
853 mutex_unlock(&rtwdev->mutex); in rtw_ops_hw_scan()
861 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_cancel_hw_scan() local
863 if (!rtw_fw_feature_check(&rtwdev->fw, FW_FEATURE_SCAN_OFFLOAD)) in rtw_ops_cancel_hw_scan()
866 if (!test_bit(RTW_FLAG_SCANNING, rtwdev->flags)) in rtw_ops_cancel_hw_scan()
869 mutex_lock(&rtwdev->mutex); in rtw_ops_cancel_hw_scan()
870 rtw_hw_scan_abort(rtwdev, vif); in rtw_ops_cancel_hw_scan()
871 mutex_unlock(&rtwdev->mutex); in rtw_ops_cancel_hw_scan()
877 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_set_sar_specs() local
879 mutex_lock(&rtwdev->mutex); in rtw_ops_set_sar_specs()
880 rtw_set_sar_specs(rtwdev, sar); in rtw_ops_set_sar_specs()
881 mutex_unlock(&rtwdev->mutex); in rtw_ops_set_sar_specs()
890 struct rtw_dev *rtwdev = hw->priv; in rtw_ops_sta_rc_update() local
894 rtw_update_sta_info(rtwdev, si, true); in rtw_ops_sta_rc_update()