Re: [PATCH 1/2] mwifiex: Use non-posted PCI register writes
From: Johannes Berg <johannes@sipsolutions.net>
Date: 2021-09-01 17:08:22
Also in:
linux-wireless, lkml, netdev
From: Johannes Berg <johannes@sipsolutions.net>
Date: 2021-09-01 17:08:22
Also in:
linux-wireless, lkml, netdev
On Wed, 2021-09-01 at 18:51 +0200, Heiner Kallweit wrote:
On 01.09.2021 17:51, Pali Rohár wrote:quoted
On Wednesday 01 September 2021 16:01:54 Jonas Dreßler wrote:quoted
On 8/30/21 2:49 PM, Andy Shevchenko wrote:quoted
On Mon, Aug 30, 2021 at 3:38 PM Jonas Dreßler [off-list ref] wrote:quoted
On the 88W8897 card it's very important the TX ring write pointer is updated correctly to its new value before setting the TX ready interrupt, otherwise the firmware appears to crash (probably because it's trying to DMA-read from the wrong place).This sounds somehow like the typical case where you write DMA descriptors and then ring the doorbell. This normally requires a dma_wmb(). Maybe something like that is missing here?
But it looks like this "TX ring write pointer" is actually the register? However, I would agree that doing it in mwifiex_write_reg() is possibly too big a hammer - could be done only for reg->tx_wrptr, not all the registers? Actually, can two writes actually cross on PCI? johannes