summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/realtek/rtw88/pci.c
diff options
context:
space:
mode:
authorYan-Hsuan Chuang <yhchuang@realtek.com>2019-07-31 20:22:45 +0800
committerKalle Valo <kvalo@codeaurora.org>2019-08-06 15:42:11 +0300
commit0d762f031d702272a17910fbeb45ab15b9673617 (patch)
treef2ef9c8eb7c34a26b462628469a9351d18ecc9eb /drivers/net/wireless/realtek/rtw88/pci.c
parentd1d1a96bdb4408d02e2bfcb32b71aba165458a80 (diff)
downloadlinux-next-0d762f031d702272a17910fbeb45ab15b9673617.tar.gz
rtw88: allow c2h operation in irq context
Some of the c2h operations are small and can be done under interrupt context. For the rest that requires more operations or can go sleep, enqueue onto c2h queue. Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/realtek/rtw88/pci.c')
-rw-r--r--drivers/net/wireless/realtek/rtw88/pci.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/net/wireless/realtek/rtw88/pci.c b/drivers/net/wireless/realtek/rtw88/pci.c
index c56251539874..00ef229552d5 100644
--- a/drivers/net/wireless/realtek/rtw88/pci.c
+++ b/drivers/net/wireless/realtek/rtw88/pci.c
@@ -8,6 +8,7 @@
#include "pci.h"
#include "tx.h"
#include "rx.h"
+#include "fw.h"
#include "debug.h"
static u32 rtw_pci_tx_queue_idx_addr[] = {
@@ -822,10 +823,7 @@ static void rtw_pci_rx_isr(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci,
skb_put_data(new, skb->data, new_len);
if (pkt_stat.is_c2h) {
- /* pass rx_desc & offset for further operation */
- *((u32 *)new->cb) = pkt_offset;
- skb_queue_tail(&rtwdev->c2h_queue, new);
- ieee80211_queue_work(rtwdev->hw, &rtwdev->c2h_work);
+ rtw_fw_c2h_cmd_rx_irqsafe(rtwdev, pkt_offset, new);
} else {
/* remove rx_desc */
skb_pull(new, pkt_offset);