kernel-ark/drivers/net/wimax/i2400m
Cindy H Kao 5b45bfe501 wimax/i2400m: fix the bootmode RX deadlock in SDIO driver
i2400ms_bus_bm_wait_for_ack() causes a race condition. It happens
because this function clears i2400ms->bm_ack_size before waiting for
an interrupt, which is set by the interrupt service routine i2400ms_rx()
to indicate reception and size of received data; thus, if the interrupt
came right before the clearing/waiting, it is lost.

The fix is clear the bm_ack_size to -EINPROGRESS before we are enabling
the RX interrupt configuration in i2400ms_rx_setup(). Then everytime
when the interrupt service routine i2400ms_rx() is invoked during bootmode,
bm_ack_size is updated with the actual rx_size and it is cleared to
-EINPROGRESS again after the RX data is handled.

Signed-off-by: Cindy H Kao <cindy.h.kao@intel.com>
Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
2009-10-19 15:55:33 +09:00
..
control.c
debug-levels.h
debugfs.c
driver.c
fw.c
i2400m-sdio.h
i2400m-usb.h
i2400m.h
Kconfig
Makefile
netdev.c wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
op-rfkill.c
rx.c
sdio-debug-levels.h
sdio-fw.c wimax/i2400m: fix the bootmode RX deadlock in SDIO driver 2009-10-19 15:55:33 +09:00
sdio-rx.c wimax/i2400m: fix the bootmode RX deadlock in SDIO driver 2009-10-19 15:55:33 +09:00
sdio-tx.c
sdio.c net: Add DEVTYPE support for Ethernet based devices 2009-09-11 12:54:55 -07:00
sysfs.c
tx.c
usb-debug-levels.h
usb-fw.c
usb-notif.c
usb-rx.c
usb-tx.c
usb.c wimax/i2400m/usb: remove unnecessary power management primitive in i2400m 2009-10-19 15:55:32 +09:00