mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
linux: rtw88: upstream patches
This commit is contained in:
parent
b318ff9271
commit
524966c973
231
packages/linux/patches/default/linux-122-rtw88-USB-fixes.patch
Normal file
231
packages/linux/patches/default/linux-122-rtw88-USB-fixes.patch
Normal file
@ -0,0 +1,231 @@
|
||||
From: Sascha Hauer <s.hauer@pengutronix.de>
|
||||
To: linux-wireless@vger.kernel.org
|
||||
Cc: Neo Jou <neojou@gmail.com>, Hans Ulli Kroll <linux@ulli-kroll.de>,
|
||||
Ping-Ke Shih <pkshih@realtek.com>,
|
||||
Yan-Hsuan Chuang <tony0620emma@gmail.com>,
|
||||
Kalle Valo <kvalo@kernel.org>, netdev@vger.kernel.org,
|
||||
linux-kernel@vger.kernel.org,
|
||||
Martin Blumenstingl <martin.blumenstingl@googlemail.com>,
|
||||
kernel@pengutronix.de, Alexander Hochbaum <alex@appudo.com>,
|
||||
Da Xue <da@libre.computer>, Po-Hao Huang <phhuang@realtek.com>,
|
||||
Andreas Henriksson <andreas@fatal.se>,
|
||||
Viktor Petrenko <g0000ga@gmail.com>,
|
||||
Sascha Hauer <s.hauer@pengutronix.de>
|
||||
Subject: [PATCH v2 0/3] wifi: rtw88: USB fixes
|
||||
Date: Fri, 10 Feb 2023 12:16:29 +0100
|
||||
Message-Id: <20230210111632.1985205-1-s.hauer@pengutronix.de>
|
||||
X-Mailer: git-send-email 2.30.2
|
||||
MIME-Version: 1.0
|
||||
X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2
|
||||
X-SA-Exim-Mail-From: sha@pengutronix.de
|
||||
X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de);
|
||||
SAEximRunCond expanded to false
|
||||
X-PTX-Original-Recipient: linux-wireless@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <linux-wireless.vger.kernel.org>
|
||||
X-Mailing-List: linux-wireless@vger.kernel.org
|
||||
|
||||
This series addresses issues for the recently added RTW88 USB support
|
||||
reported by Andreas Henriksson and also our customer.
|
||||
|
||||
The hardware can't handle urbs that have a size of multiple of the
|
||||
bulkout_size (usually 512 bytes). The symptom is that the hardware
|
||||
stalls completely. The issue can be reproduced by sending a suitably
|
||||
sized ping packet from the device:
|
||||
|
||||
ping -s 394 <somehost>
|
||||
|
||||
(It's 394 bytes here on a RTL8822CU and RTL8821CU, the actual size may
|
||||
differ on other chips, it was 402 bytes on a RTL8723DU)
|
||||
|
||||
Other than that qsel was not set correctly. The sympton here is that
|
||||
only one of multiple bulk endpoints was used to send data.
|
||||
|
||||
Changes since v1:
|
||||
- Use URB_ZERO_PACKET to let the USB host controller handle it automatically
|
||||
rather than working around the issue.
|
||||
|
||||
Sascha Hauer (3):
|
||||
wifi: rtw88: usb: Set qsel correctly
|
||||
wifi: rtw88: usb: send Zero length packets if necessary
|
||||
wifi: rtw88: usb: drop now unnecessary URB size check
|
||||
|
||||
drivers/net/wireless/realtek/rtw88/usb.c | 18 +++---------------
|
||||
1 file changed, 3 insertions(+), 15 deletions(-)
|
||||
Reported-by: Andreas Henriksson <andreas@fatal.se>
|
||||
Tested-by: Andreas Henriksson <andreas@fatal.se>
|
||||
|
||||
From: Sascha Hauer <s.hauer@pengutronix.de>
|
||||
To: linux-wireless@vger.kernel.org
|
||||
Cc: Neo Jou <neojou@gmail.com>, Hans Ulli Kroll <linux@ulli-kroll.de>,
|
||||
Ping-Ke Shih <pkshih@realtek.com>,
|
||||
Yan-Hsuan Chuang <tony0620emma@gmail.com>,
|
||||
Kalle Valo <kvalo@kernel.org>, netdev@vger.kernel.org,
|
||||
linux-kernel@vger.kernel.org,
|
||||
Martin Blumenstingl <martin.blumenstingl@googlemail.com>,
|
||||
kernel@pengutronix.de, Alexander Hochbaum <alex@appudo.com>,
|
||||
Da Xue <da@libre.computer>, Po-Hao Huang <phhuang@realtek.com>,
|
||||
Andreas Henriksson <andreas@fatal.se>,
|
||||
Viktor Petrenko <g0000ga@gmail.com>,
|
||||
Sascha Hauer <s.hauer@pengutronix.de>
|
||||
Subject: [PATCH v2 1/3] wifi: rtw88: usb: Set qsel correctly
|
||||
Date: Fri, 10 Feb 2023 12:16:30 +0100
|
||||
Message-Id: <20230210111632.1985205-2-s.hauer@pengutronix.de>
|
||||
X-Mailer: git-send-email 2.30.2
|
||||
In-Reply-To: <20230210111632.1985205-1-s.hauer@pengutronix.de>
|
||||
References: <20230210111632.1985205-1-s.hauer@pengutronix.de>
|
||||
MIME-Version: 1.0
|
||||
X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2
|
||||
X-SA-Exim-Mail-From: sha@pengutronix.de
|
||||
X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de);
|
||||
SAEximRunCond expanded to false
|
||||
X-PTX-Original-Recipient: linux-wireless@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <linux-wireless.vger.kernel.org>
|
||||
X-Mailing-List: linux-wireless@vger.kernel.org
|
||||
|
||||
We have to extract qsel from the skb before doing skb_push() on it,
|
||||
otherwise qsel will always be 0.
|
||||
|
||||
Fixes: a82dfd33d1237 ("wifi: rtw88: Add common USB chip support")
|
||||
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw88/usb.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c
|
||||
index 4ef38279b64c9..d9e995544e405 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/usb.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/usb.c
|
||||
@@ -471,9 +471,9 @@ static int rtw_usb_tx_write(struct rtw_dev *rtwdev,
|
||||
u8 *pkt_desc;
|
||||
int ep;
|
||||
|
||||
+ pkt_info->qsel = rtw_usb_tx_queue_mapping_to_qsel(skb);
|
||||
pkt_desc = skb_push(skb, chip->tx_pkt_desc_sz);
|
||||
memset(pkt_desc, 0, chip->tx_pkt_desc_sz);
|
||||
- pkt_info->qsel = rtw_usb_tx_queue_mapping_to_qsel(skb);
|
||||
ep = qsel_to_ep(rtwusb, pkt_info->qsel);
|
||||
rtw_tx_fill_tx_desc(pkt_info, skb);
|
||||
rtw_tx_fill_txdesc_checksum(rtwdev, pkt_info, skb->data);
|
||||
|
||||
From: Sascha Hauer <s.hauer@pengutronix.de>
|
||||
To: linux-wireless@vger.kernel.org
|
||||
Cc: Neo Jou <neojou@gmail.com>, Hans Ulli Kroll <linux@ulli-kroll.de>,
|
||||
Ping-Ke Shih <pkshih@realtek.com>,
|
||||
Yan-Hsuan Chuang <tony0620emma@gmail.com>,
|
||||
Kalle Valo <kvalo@kernel.org>, netdev@vger.kernel.org,
|
||||
linux-kernel@vger.kernel.org,
|
||||
Martin Blumenstingl <martin.blumenstingl@googlemail.com>,
|
||||
kernel@pengutronix.de, Alexander Hochbaum <alex@appudo.com>,
|
||||
Da Xue <da@libre.computer>, Po-Hao Huang <phhuang@realtek.com>,
|
||||
Andreas Henriksson <andreas@fatal.se>,
|
||||
Viktor Petrenko <g0000ga@gmail.com>,
|
||||
Sascha Hauer <s.hauer@pengutronix.de>
|
||||
Subject: [PATCH v2 2/3] wifi: rtw88: usb: send Zero length packets if
|
||||
necessary
|
||||
Date: Fri, 10 Feb 2023 12:16:31 +0100
|
||||
Message-Id: <20230210111632.1985205-3-s.hauer@pengutronix.de>
|
||||
X-Mailer: git-send-email 2.30.2
|
||||
In-Reply-To: <20230210111632.1985205-1-s.hauer@pengutronix.de>
|
||||
References: <20230210111632.1985205-1-s.hauer@pengutronix.de>
|
||||
MIME-Version: 1.0
|
||||
X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2
|
||||
X-SA-Exim-Mail-From: sha@pengutronix.de
|
||||
X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de);
|
||||
SAEximRunCond expanded to false
|
||||
X-PTX-Original-Recipient: linux-wireless@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <linux-wireless.vger.kernel.org>
|
||||
X-Mailing-List: linux-wireless@vger.kernel.org
|
||||
|
||||
Zero length packets are necessary when sending URBs with size
|
||||
multiple of bulkout_size, otherwise the hardware just stalls.
|
||||
|
||||
Fixes: a82dfd33d1237 ("wifi: rtw88: Add common USB chip support")
|
||||
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw88/usb.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c
|
||||
index d9e995544e405..1a09c9288198a 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/usb.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/usb.c
|
||||
@@ -271,6 +271,7 @@ static int rtw_usb_write_port(struct rtw_dev *rtwdev, u8 qsel, struct sk_buff *s
|
||||
return -ENOMEM;
|
||||
|
||||
usb_fill_bulk_urb(urb, usbd, pipe, skb->data, skb->len, cb, context);
|
||||
+ urb->transfer_flags |= URB_ZERO_PACKET;
|
||||
ret = usb_submit_urb(urb, GFP_ATOMIC);
|
||||
|
||||
usb_free_urb(urb);
|
||||
|
||||
From: Sascha Hauer <s.hauer@pengutronix.de>
|
||||
To: linux-wireless@vger.kernel.org
|
||||
Cc: Neo Jou <neojou@gmail.com>, Hans Ulli Kroll <linux@ulli-kroll.de>,
|
||||
Ping-Ke Shih <pkshih@realtek.com>,
|
||||
Yan-Hsuan Chuang <tony0620emma@gmail.com>,
|
||||
Kalle Valo <kvalo@kernel.org>, netdev@vger.kernel.org,
|
||||
linux-kernel@vger.kernel.org,
|
||||
Martin Blumenstingl <martin.blumenstingl@googlemail.com>,
|
||||
kernel@pengutronix.de, Alexander Hochbaum <alex@appudo.com>,
|
||||
Da Xue <da@libre.computer>, Po-Hao Huang <phhuang@realtek.com>,
|
||||
Andreas Henriksson <andreas@fatal.se>,
|
||||
Viktor Petrenko <g0000ga@gmail.com>,
|
||||
Sascha Hauer <s.hauer@pengutronix.de>
|
||||
Subject: [PATCH v2 3/3] wifi: rtw88: usb: drop now unnecessary URB size check
|
||||
Date: Fri, 10 Feb 2023 12:16:32 +0100
|
||||
Message-Id: <20230210111632.1985205-4-s.hauer@pengutronix.de>
|
||||
X-Mailer: git-send-email 2.30.2
|
||||
In-Reply-To: <20230210111632.1985205-1-s.hauer@pengutronix.de>
|
||||
References: <20230210111632.1985205-1-s.hauer@pengutronix.de>
|
||||
MIME-Version: 1.0
|
||||
X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2
|
||||
X-SA-Exim-Mail-From: sha@pengutronix.de
|
||||
X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de);
|
||||
SAEximRunCond expanded to false
|
||||
X-PTX-Original-Recipient: linux-wireless@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <linux-wireless.vger.kernel.org>
|
||||
X-Mailing-List: linux-wireless@vger.kernel.org
|
||||
|
||||
Now that we send URBs with the URB_ZERO_PACKET flag set we no longer
|
||||
need to make sure that the URB sizes are not multiple of the
|
||||
bulkout_size. Drop the check.
|
||||
|
||||
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw88/usb.c | 15 +--------------
|
||||
1 file changed, 1 insertion(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c
|
||||
index 1a09c9288198a..2a8336b1847a5 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/usb.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/usb.c
|
||||
@@ -414,24 +414,11 @@ static int rtw_usb_write_data_rsvd_page(struct rtw_dev *rtwdev, u8 *buf,
|
||||
u32 size)
|
||||
{
|
||||
const struct rtw_chip_info *chip = rtwdev->chip;
|
||||
- struct rtw_usb *rtwusb;
|
||||
struct rtw_tx_pkt_info pkt_info = {0};
|
||||
- u32 len, desclen;
|
||||
-
|
||||
- rtwusb = rtw_get_usb_priv(rtwdev);
|
||||
|
||||
pkt_info.tx_pkt_size = size;
|
||||
pkt_info.qsel = TX_DESC_QSEL_BEACON;
|
||||
-
|
||||
- desclen = chip->tx_pkt_desc_sz;
|
||||
- len = desclen + size;
|
||||
- if (len % rtwusb->bulkout_size == 0) {
|
||||
- len += RTW_USB_PACKET_OFFSET_SZ;
|
||||
- pkt_info.offset = desclen + RTW_USB_PACKET_OFFSET_SZ;
|
||||
- pkt_info.pkt_offset = 1;
|
||||
- } else {
|
||||
- pkt_info.offset = desclen;
|
||||
- }
|
||||
+ pkt_info.offset = chip->tx_pkt_desc_sz;
|
||||
|
||||
return rtw_usb_write_data(rtwdev, &pkt_info, buf);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user