Search Linux Wireless

Re: Driver for rtw8723ds

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jernej,

On Mon, May 15, 2023 at 10:37 PM Jernej Škrabec
<jernej.skrabec@xxxxxxxxx> wrote:
[...]
> > With aggregation disabled, we still get "Invalid RX packet size!" messages. I am
> > changing the statement to log (curr_pkt_len + pkt_desc_sz) > rx_len. I will let
> > you know when the OP responds.
>
> Yeah, I saw. I just find another possible reason, which fits nicely in current
> situation. Vendor driver parses drv_info_sz and shift fields only if packet
> is normal, e.g. not c2h type. However, rtw88 always parses those fields. It's
> possible that they have some value which should be ignored on 8723ds. I
> appended another patch to test.
I tried that patch and it didn't work for me (I can't get the card to
assoc to my AP with that patch).
Additionally I tried a simplified version (attached) and it didn't work.

I'm out of time for today though so I cannot continue testing.


Best regards,
Martin
diff --git a/drivers/net/wireless/realtek/rtw88/sdio.c b/drivers/net/wireless/realtek/rtw88/sdio.c
index 06fce7c3adda..f96e98818184 100644
--- a/drivers/net/wireless/realtek/rtw88/sdio.c
+++ b/drivers/net/wireless/realtek/rtw88/sdio.c
@@ -961,8 +961,10 @@ static void rtw_sdio_rxfifo_recv(struct rtw_dev *rtwdev, u32 rx_len)
 		rx_desc = skb->data;
 		chip->ops->query_rx_desc(rtwdev, rx_desc, &pkt_stat,
 					 &rx_status);
-		pkt_offset = pkt_desc_sz + pkt_stat.drv_info_sz +
-			     pkt_stat.shift;
+
+		pkt_offset = pkt_desc_sz;
+		if (!pkt_stat.is_c2h)
+			pkt_offset += pkt_stat.drv_info_sz + pkt_stat.shift;
 
 		curr_pkt_len = ALIGN(pkt_offset + pkt_stat.pkt_len,
 				     RTW_SDIO_DATA_PTR_ALIGN);

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux