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()
85 static u8 get_highest_ht_tx_rate(struct rtw_dev *rtwdev, in get_highest_ht_tx_rate() argument
90 if (rtwdev->hal.rf_type == RF_2T2R && sta->ht_cap.mcs.rx_mask[1] != 0) in get_highest_ht_tx_rate()
98 static u8 get_highest_vht_tx_rate(struct rtw_dev *rtwdev, in get_highest_vht_tx_rate() argument
101 struct rtw_efuse *efuse = &rtwdev->efuse; in get_highest_vht_tx_rate()
139 static void rtw_tx_report_enable(struct rtw_dev *rtwdev, in rtw_tx_report_enable() argument
142 struct rtw_tx_report *tx_report = &rtwdev->tx_report; in rtw_tx_report_enable()
154 struct rtw_dev *rtwdev = from_timer(rtwdev, t, tx_report.purge_timer); in rtw_tx_report_purge_timer() local
155 struct rtw_tx_report *tx_report = &rtwdev->tx_report; in rtw_tx_report_purge_timer()
168 void rtw_tx_report_enqueue(struct rtw_dev *rtwdev, struct sk_buff *skb, u8 sn) in rtw_tx_report_enqueue() argument
170 struct rtw_tx_report *tx_report = &rtwdev->tx_report; in rtw_tx_report_enqueue()
186 static void rtw_tx_report_tx_status(struct rtw_dev *rtwdev, in rtw_tx_report_tx_status() argument
198 ieee80211_tx_status_irqsafe(rtwdev->hw, skb); in rtw_tx_report_tx_status()
201 void rtw_tx_report_handle(struct rtw_dev *rtwdev, struct sk_buff *skb, int src) in rtw_tx_report_handle() argument
203 struct rtw_tx_report *tx_report = &rtwdev->tx_report; in rtw_tx_report_handle()
225 rtw_tx_report_tx_status(rtwdev, cur, st == 0); in rtw_tx_report_handle()
232 static void rtw_tx_pkt_info_update_rate(struct rtw_dev *rtwdev, in rtw_tx_pkt_info_update_rate() argument
236 if (rtwdev->hal.current_band_type == RTW_BAND_2G) { in rtw_tx_pkt_info_update_rate()
247 static void rtw_tx_pkt_info_update_sec(struct rtw_dev *rtwdev, in rtw_tx_pkt_info_update_sec() argument
274 static void rtw_tx_mgmt_pkt_info_update(struct rtw_dev *rtwdev, in rtw_tx_mgmt_pkt_info_update() argument
279 rtw_tx_pkt_info_update_rate(rtwdev, pkt_info, skb); in rtw_tx_mgmt_pkt_info_update()
286 static void rtw_tx_data_pkt_info_update(struct rtw_dev *rtwdev, in rtw_tx_data_pkt_info_update() argument
320 rate = get_highest_vht_tx_rate(rtwdev, sta); in rtw_tx_data_pkt_info_update()
322 rate = get_highest_ht_tx_rate(rtwdev, sta); in rtw_tx_data_pkt_info_update()
347 void rtw_tx_pkt_info_update(struct rtw_dev *rtwdev, in rtw_tx_pkt_info_update() argument
352 struct rtw_chip_info *chip = rtwdev->chip; in rtw_tx_pkt_info_update()
366 rtw_tx_mgmt_pkt_info_update(rtwdev, pkt_info, sta, skb); in rtw_tx_pkt_info_update()
368 rtw_tx_data_pkt_info_update(rtwdev, pkt_info, sta, skb); in rtw_tx_pkt_info_update()
374 rtw_tx_report_enable(rtwdev, pkt_info); in rtw_tx_pkt_info_update()
377 rtw_tx_pkt_info_update_sec(rtwdev, pkt_info, skb); in rtw_tx_pkt_info_update()
384 rtw_tx_stats(rtwdev, vif, skb); in rtw_tx_pkt_info_update()
387 void rtw_tx_rsvd_page_pkt_info_update(struct rtw_dev *rtwdev, in rtw_tx_rsvd_page_pkt_info_update() argument
392 struct rtw_chip_info *chip = rtwdev->chip; in rtw_tx_rsvd_page_pkt_info_update()
402 rtw_tx_pkt_info_update_rate(rtwdev, pkt_info, skb); in rtw_tx_rsvd_page_pkt_info_update()
420 rtw_tx_pkt_info_update_sec(rtwdev, pkt_info, skb); in rtw_tx_rsvd_page_pkt_info_update()
426 rtw_tx_write_data_rsvd_page_get(struct rtw_dev *rtwdev, in rtw_tx_write_data_rsvd_page_get() argument
430 struct rtw_chip_info *chip = rtwdev->chip; in rtw_tx_write_data_rsvd_page_get()
439 rtw_err(rtwdev, "failed to alloc write data rsvd page skb\n"); in rtw_tx_write_data_rsvd_page_get()
445 rtw_tx_rsvd_page_pkt_info_update(rtwdev, pkt_info, skb, RSVD_BEACON); in rtw_tx_write_data_rsvd_page_get()
452 rtw_tx_write_data_h2c_get(struct rtw_dev *rtwdev, in rtw_tx_write_data_h2c_get() argument
456 struct rtw_chip_info *chip = rtwdev->chip; in rtw_tx_write_data_h2c_get()
465 rtw_err(rtwdev, "failed to alloc write data h2c skb\n"); in rtw_tx_write_data_h2c_get()
477 void rtw_tx(struct rtw_dev *rtwdev, in rtw_tx() argument
484 rtw_tx_pkt_info_update(rtwdev, &pkt_info, control->sta, skb); in rtw_tx()
485 ret = rtw_hci_tx_write(rtwdev, &pkt_info, skb); in rtw_tx()
487 rtw_err(rtwdev, "failed to write TX skb to HCI\n"); in rtw_tx()
491 rtw_hci_tx_kick_off(rtwdev); in rtw_tx()
496 ieee80211_free_txskb(rtwdev->hw, skb); in rtw_tx()
499 static void rtw_txq_check_agg(struct rtw_dev *rtwdev, in rtw_txq_check_agg() argument
528 ieee80211_queue_work(rtwdev->hw, &rtwdev->ba_work); in rtw_txq_check_agg()
531 static int rtw_txq_push_skb(struct rtw_dev *rtwdev, in rtw_txq_push_skb() argument
539 rtw_txq_check_agg(rtwdev, rtwtxq, skb); in rtw_txq_push_skb()
541 rtw_tx_pkt_info_update(rtwdev, &pkt_info, txq->sta, skb); in rtw_txq_push_skb()
542 ret = rtw_hci_tx_write(rtwdev, &pkt_info, skb); in rtw_txq_push_skb()
544 rtw_err(rtwdev, "failed to write TX skb to HCI\n"); in rtw_txq_push_skb()
552 static struct sk_buff *rtw_txq_dequeue(struct rtw_dev *rtwdev, in rtw_txq_dequeue() argument
558 skb = ieee80211_tx_dequeue(rtwdev->hw, txq); in rtw_txq_dequeue()
565 static void rtw_txq_push(struct rtw_dev *rtwdev, in rtw_txq_push() argument
576 skb = rtw_txq_dequeue(rtwdev, rtwtxq); in rtw_txq_push()
580 ret = rtw_txq_push_skb(rtwdev, rtwtxq, skb); in rtw_txq_push()
582 rtw_err(rtwdev, "failed to pusk skb, ret %d\n", ret); in rtw_txq_push()
592 struct rtw_dev *rtwdev = from_tasklet(rtwdev, t, tx_tasklet); in rtw_tx_tasklet() local
595 spin_lock_bh(&rtwdev->txq_lock); in rtw_tx_tasklet()
597 list_for_each_entry_safe(rtwtxq, tmp, &rtwdev->txqs, list) { in rtw_tx_tasklet()
603 rtw_txq_push(rtwdev, rtwtxq, frame_cnt); in rtw_tx_tasklet()
608 rtw_hci_tx_kick_off(rtwdev); in rtw_tx_tasklet()
610 spin_unlock_bh(&rtwdev->txq_lock); in rtw_tx_tasklet()
613 void rtw_txq_init(struct rtw_dev *rtwdev, struct ieee80211_txq *txq) in rtw_txq_init() argument
624 void rtw_txq_cleanup(struct rtw_dev *rtwdev, struct ieee80211_txq *txq) in rtw_txq_cleanup() argument
632 spin_lock_bh(&rtwdev->txq_lock); in rtw_txq_cleanup()
635 spin_unlock_bh(&rtwdev->txq_lock); in rtw_txq_cleanup()