p54spi: use firmware/DMA bug workaround that work under hight load in p54spi_rx
authorMax Filippov <jcmvbkbc@gmail.com>
Sun, 17 May 2009 23:02:35 +0000 (03:02 +0400)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 20 May 2009 18:46:28 +0000 (14:46 -0400)
commitff561ac84e0bdfe1316ed355669dd73101609f24
treef7415ab89e184c943cc9f61e87a5b92e46d2e819
parent6edf534a3214e8fad943d7acd903603f0a5b9ac8
p54spi: use firmware/DMA bug workaround that work under hight load in p54spi_rx

Under high load first data word, read after available data size
is sometimes lost in p54spi_rx. It seems to depend on frequency
of interrupts and latency of data read request relatively to
'data available' interrupt. The worst consequence of this bug
is loss of packet transmission acknowledgement, which in turn
causes overflow of tx queues and permanent link loss.

Read data size and first data word in one SPI transaction.
No packets from LMAC should have length less than 1 word,
so this shouldn't interfere with the next read transaction.

Also call p54spi_sleep if p54spi_wake succeeded.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/p54/p54spi.c