android_kernel_xiaomi_sm8350/drivers/net/wimax/i2400m
Inaky Perez-Gonzalez 923d708fed wimax/i2400m: fix reboot echo/ack barker deadlock
The i2400m based devices can get in a sort of a deadlock some times;
when they boot, they send a reboot "barker" (a magic number) and then
the driver has to echo that same barker to ack reception
(echo/ack). Then the device does a final ack by sending an ACK barker.

The first time this happens, we don't know ahead of time with barker
the device is going to send, as different device models and SKUs will
send different barker depending on the EEPROM programming.

If the device has sent the barker before the driver has been able to
read it, the driver looses, as it doesn't know which barker it has to
echo/ack back. With older devices, we tried a couple of combinations
and that always worked; but now, with adding support for more, in
which we have an unlimited number of new barkers, that is not an
option.

So we rework said case so that when the device gets stuck, we just
cycle through all the known types until one forces the device to send
an ack. Otherwise, the driver gives up and aborts.

Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
2009-10-19 15:55:55 +09:00
..
control.c i2400m: keep index within ms_to_errno[] 2009-10-19 15:55:35 +09:00
debug-levels.h wimax/i2400m: allow control of the base-station idle mode timeout 2009-03-02 03:10:25 -08:00
debugfs.c wimax: fix build issue when debugfs is disabled 2009-01-29 17:18:31 -08:00
driver.c wimax/i2400m: rework bootrom initialization to be more flexible 2009-10-19 15:55:53 +09:00
fw.c wimax/i2400m: fix reboot echo/ack barker deadlock 2009-10-19 15:55:55 +09:00
i2400m-sdio.h wimax/iwmc3200: increase wait time before enable retry 2009-10-19 15:55:43 +09:00
i2400m-usb.h wimax/i2400m: USB driver uses a configurable endpoint map 2009-10-19 15:55:44 +09:00
i2400m.h wimax/i2400m: rework bootrom initialization to be more flexible 2009-10-19 15:55:53 +09:00
Kconfig i2400m: Makefile and Kconfig 2009-01-07 10:00:22 -08:00
Makefile wimax/i2400m: allow control of the base-station idle mode timeout 2009-03-02 03:10:25 -08:00
netdev.c i2400m: minimal ethtool support 2009-10-19 15:55:37 +09:00
op-rfkill.c wimax: fix gcc warnings in sh4 when calling BUG() 2009-06-11 11:47:39 -07:00
rx.c wimax/i2400m: rework bootrom initialization to be more flexible 2009-10-19 15:55:53 +09:00
sdio-debug-levels.h i2400m/SDIO: header for the SDIO subdriver 2009-01-07 10:00:22 -08:00
sdio-fw.c wimax/i2400m: be smarter about copying command buffer to bm_cmd_buf 2009-10-19 15:55:46 +09:00
sdio-rx.c wimax/i2400m: rework bootrom initialization to be more flexible 2009-10-19 15:55:53 +09:00
sdio-tx.c i2400m/SDIO: TX and RX path backends 2009-01-07 10:00:22 -08:00
sdio.c wimax: allow specifying debug levels as command line option 2009-10-19 15:55:50 +09:00
sysfs.c wimax/i2400m: allow control of the base-station idle mode timeout 2009-03-02 03:10:25 -08:00
tx.c wimax: misplaced parenthesis 2009-10-19 15:55:36 +09:00
usb-debug-levels.h i2400m/USB: header for the USB bus driver 2009-01-07 10:00:21 -08:00
usb-fw.c wimax/i2400m: workaround not-so-working %zd printf format 2009-10-19 15:55:51 +09:00
usb-notif.c wimax/i2400m: rework bootrom initialization to be more flexible 2009-10-19 15:55:53 +09:00
usb-rx.c wimax/i2400m: USB driver uses a configurable endpoint map 2009-10-19 15:55:44 +09:00
usb-tx.c wimax/i2400m: USB driver uses a configurable endpoint map 2009-10-19 15:55:44 +09:00
usb.c wimax: allow specifying debug levels as command line option 2009-10-19 15:55:50 +09:00