Use multiple consecutive reads in rtw_sdio_read_port() to limit the number of bytes which are copied by the host from the card in one MMC/SDIO transfer. This allows receiving a buffer that's larger than the hosts max_req_size (number of bytes which can be transferred in one MMC/SDIO transfer). As a result of this the skb_over_panic error is gone as the rtw88 driver is now able to receive more than 1536 bytes from the card (either because the incoming packet is larger than that or because multiple packets have been aggregated). Signed-off-by: Patrick Yavitz <pyavitz@xxxxx.com>
35 lines
1.3 KiB
Diff
35 lines
1.3 KiB
Diff
From: Patrick Yavitz @ 2023-06-30
|
|
Subject: v2: rtw88: decrease the log level of tx report
|
|
|
|
Reduce 'failed to get tx report from firmware' dmesg spam.
|
|
|
|
https://lore.kernel.org/linux-wireless/20210713104524.47101-1-pkshih@realtek.com/
|
|
https://cgit.freebsd.org/src/commit/?id=e140d551b78670fbf99c83a59438cb13de50420f
|
|
|
|
Signed-off-by: Patrick Yavitz <pyavitz@xxxxx.com>
|
|
diff -Naur a/drivers/net/wireless/realtek/rtw88/tx.c b/drivers/net/wireless/realtek/rtw88/tx.c
|
|
--- a/drivers/net/wireless/realtek/rtw88/tx.c 2023-06-30 13:28:40.396914119 -0400
|
|
+++ b/drivers/net/wireless/realtek/rtw88/tx.c 2023-06-30 16:57:33.868259352 -0400
|
|
@@ -177,14 +177,16 @@
|
|
struct rtw_tx_report *tx_report = &rtwdev->tx_report;
|
|
unsigned long flags;
|
|
|
|
- if (skb_queue_len(&tx_report->queue) == 0)
|
|
- return;
|
|
-
|
|
- rtw_warn(rtwdev, "failed to get tx report from firmware\n");
|
|
+ uint32_t qlen;
|
|
|
|
spin_lock_irqsave(&tx_report->q_lock, flags);
|
|
- skb_queue_purge(&tx_report->queue);
|
|
+ qlen = skb_queue_len(&tx_report->queue);
|
|
+ if (qlen > 0)
|
|
+ skb_queue_purge(&tx_report->queue);
|
|
spin_unlock_irqrestore(&tx_report->q_lock, flags);
|
|
+
|
|
+ rtw_dbg(rtwdev, RTW_DBG_TX, "failed to get tx report from firmware: "
|
|
+ "txreport qlen %u\n", qlen);
|
|
}
|
|
|
|
void rtw_tx_report_enqueue(struct rtw_dev *rtwdev, struct sk_buff *skb, u8 sn)
|