Lines Matching refs:rtwdev

12 void rtw_tx_stats(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,  in rtw_tx_stats()  argument
25 rtwdev->stats.tx_unicast += skb->len; in rtw_tx_stats()
26 rtwdev->stats.tx_cnt++; in rtw_tx_stats()
89 static u8 get_highest_ht_tx_rate(struct rtw_dev *rtwdev, in get_highest_ht_tx_rate() argument
94 if (rtwdev->hal.rf_type == RF_2T2R && sta->ht_cap.mcs.rx_mask[1] != 0) in get_highest_ht_tx_rate()
102 static u8 get_highest_vht_tx_rate(struct rtw_dev *rtwdev, in get_highest_vht_tx_rate() argument
105 struct rtw_efuse *efuse = &rtwdev->efuse; in get_highest_vht_tx_rate()
143 static void rtw_tx_report_enable(struct rtw_dev *rtwdev, in rtw_tx_report_enable() argument
146 struct rtw_tx_report *tx_report = &rtwdev->tx_report; in rtw_tx_report_enable()
158 struct rtw_dev *rtwdev = from_timer(rtwdev, t, tx_report.purge_timer); in rtw_tx_report_purge_timer() local
159 struct rtw_tx_report *tx_report = &rtwdev->tx_report; in rtw_tx_report_purge_timer()
165 rtw_warn(rtwdev, "failed to get tx report from firmware\n"); in rtw_tx_report_purge_timer()
172 void rtw_tx_report_enqueue(struct rtw_dev *rtwdev, struct sk_buff *skb, u8 sn) in rtw_tx_report_enqueue() argument
174 struct rtw_tx_report *tx_report = &rtwdev->tx_report; in rtw_tx_report_enqueue()
190 static void rtw_tx_report_tx_status(struct rtw_dev *rtwdev, in rtw_tx_report_tx_status() argument
202 ieee80211_tx_status_irqsafe(rtwdev->hw, skb); in rtw_tx_report_tx_status()
205 void rtw_tx_report_handle(struct rtw_dev *rtwdev, struct sk_buff *skb, int src) in rtw_tx_report_handle() argument
207 struct rtw_tx_report *tx_report = &rtwdev->tx_report; in rtw_tx_report_handle()
229 rtw_tx_report_tx_status(rtwdev, cur, st == 0); in rtw_tx_report_handle()
236 static void rtw_tx_pkt_info_update_rate(struct rtw_dev *rtwdev, in rtw_tx_pkt_info_update_rate() argument
240 if (rtwdev->hal.current_band_type == RTW_BAND_2G) { in rtw_tx_pkt_info_update_rate()
251 static void rtw_tx_pkt_info_update_sec(struct rtw_dev *rtwdev, in rtw_tx_pkt_info_update_sec() argument
278 static void rtw_tx_mgmt_pkt_info_update(struct rtw_dev *rtwdev, in rtw_tx_mgmt_pkt_info_update() argument
283 rtw_tx_pkt_info_update_rate(rtwdev, pkt_info, skb); in rtw_tx_mgmt_pkt_info_update()
290 static void rtw_tx_data_pkt_info_update(struct rtw_dev *rtwdev, in rtw_tx_data_pkt_info_update() argument
297 struct ieee80211_hw *hw = rtwdev->hw; in rtw_tx_data_pkt_info_update()
325 rate = get_highest_vht_tx_rate(rtwdev, sta); in rtw_tx_data_pkt_info_update()
327 rate = get_highest_ht_tx_rate(rtwdev, sta); in rtw_tx_data_pkt_info_update()
352 void rtw_tx_pkt_info_update(struct rtw_dev *rtwdev, in rtw_tx_pkt_info_update() argument
357 struct rtw_chip_info *chip = rtwdev->chip; in rtw_tx_pkt_info_update()
371 rtw_tx_mgmt_pkt_info_update(rtwdev, pkt_info, sta, skb); in rtw_tx_pkt_info_update()
373 rtw_tx_data_pkt_info_update(rtwdev, pkt_info, sta, skb); in rtw_tx_pkt_info_update()
379 rtw_tx_report_enable(rtwdev, pkt_info); in rtw_tx_pkt_info_update()
382 rtw_tx_pkt_info_update_sec(rtwdev, pkt_info, skb); in rtw_tx_pkt_info_update()
389 rtw_tx_stats(rtwdev, vif, skb); in rtw_tx_pkt_info_update()
392 void rtw_tx_rsvd_page_pkt_info_update(struct rtw_dev *rtwdev, in rtw_tx_rsvd_page_pkt_info_update() argument
397 struct rtw_chip_info *chip = rtwdev->chip; in rtw_tx_rsvd_page_pkt_info_update()
407 rtw_tx_pkt_info_update_rate(rtwdev, pkt_info, skb); in rtw_tx_rsvd_page_pkt_info_update()
425 rtw_tx_pkt_info_update_sec(rtwdev, pkt_info, skb); in rtw_tx_rsvd_page_pkt_info_update()
431 rtw_tx_write_data_rsvd_page_get(struct rtw_dev *rtwdev, in rtw_tx_write_data_rsvd_page_get() argument
435 struct rtw_chip_info *chip = rtwdev->chip; in rtw_tx_write_data_rsvd_page_get()
444 rtw_err(rtwdev, "failed to alloc write data rsvd page skb\n"); in rtw_tx_write_data_rsvd_page_get()
450 rtw_tx_rsvd_page_pkt_info_update(rtwdev, pkt_info, skb, RSVD_BEACON); in rtw_tx_write_data_rsvd_page_get()
457 rtw_tx_write_data_h2c_get(struct rtw_dev *rtwdev, in rtw_tx_write_data_h2c_get() argument
461 struct rtw_chip_info *chip = rtwdev->chip; in rtw_tx_write_data_h2c_get()
470 rtw_err(rtwdev, "failed to alloc write data h2c skb\n"); in rtw_tx_write_data_h2c_get()
482 void rtw_tx(struct rtw_dev *rtwdev, in rtw_tx() argument
489 rtw_tx_pkt_info_update(rtwdev, &pkt_info, control->sta, skb); in rtw_tx()
490 ret = rtw_hci_tx_write(rtwdev, &pkt_info, skb); in rtw_tx()
492 rtw_err(rtwdev, "failed to write TX skb to HCI\n"); in rtw_tx()
496 rtw_hci_tx_kick_off(rtwdev); in rtw_tx()
501 ieee80211_free_txskb(rtwdev->hw, skb); in rtw_tx()
504 static void rtw_txq_check_agg(struct rtw_dev *rtwdev, in rtw_txq_check_agg() argument
533 ieee80211_queue_work(rtwdev->hw, &rtwdev->ba_work); in rtw_txq_check_agg()
536 static int rtw_txq_push_skb(struct rtw_dev *rtwdev, in rtw_txq_push_skb() argument
544 rtw_txq_check_agg(rtwdev, rtwtxq, skb); in rtw_txq_push_skb()
546 rtw_tx_pkt_info_update(rtwdev, &pkt_info, txq->sta, skb); in rtw_txq_push_skb()
547 ret = rtw_hci_tx_write(rtwdev, &pkt_info, skb); in rtw_txq_push_skb()
549 rtw_err(rtwdev, "failed to write TX skb to HCI\n"); in rtw_txq_push_skb()
557 static struct sk_buff *rtw_txq_dequeue(struct rtw_dev *rtwdev, in rtw_txq_dequeue() argument
563 skb = ieee80211_tx_dequeue(rtwdev->hw, txq); in rtw_txq_dequeue()
570 static void rtw_txq_push(struct rtw_dev *rtwdev, in rtw_txq_push() argument
581 skb = rtw_txq_dequeue(rtwdev, rtwtxq); in rtw_txq_push()
585 ret = rtw_txq_push_skb(rtwdev, rtwtxq, skb); in rtw_txq_push()
587 rtw_err(rtwdev, "failed to pusk skb, ret %d\n", ret); in rtw_txq_push()
597 struct rtw_dev *rtwdev = container_of(w, struct rtw_dev, tx_work); in rtw_tx_work() local
600 spin_lock_bh(&rtwdev->txq_lock); in rtw_tx_work()
602 list_for_each_entry_safe(rtwtxq, tmp, &rtwdev->txqs, list) { in rtw_tx_work()
608 rtw_txq_push(rtwdev, rtwtxq, frame_cnt); in rtw_tx_work()
613 rtw_hci_tx_kick_off(rtwdev); in rtw_tx_work()
615 spin_unlock_bh(&rtwdev->txq_lock); in rtw_tx_work()
618 void rtw_txq_init(struct rtw_dev *rtwdev, struct ieee80211_txq *txq) in rtw_txq_init() argument
629 void rtw_txq_cleanup(struct rtw_dev *rtwdev, struct ieee80211_txq *txq) in rtw_txq_cleanup() argument
637 spin_lock_bh(&rtwdev->txq_lock); in rtw_txq_cleanup()
640 spin_unlock_bh(&rtwdev->txq_lock); in rtw_txq_cleanup()