mwl8k: Fix rate_idx underflow
authorPetr Štetiar <ynezz@true.cz>
Thu, 11 Apr 2019 18:13:30 +0000 (20:13 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 25 Apr 2019 16:52:45 +0000 (19:52 +0300)
commit6b583201fa219b7b1b6aebd8966c8fd9357ef9f4
treed264584eb5a698735a0e5a2b043f820df611d49c
parent09ac2694b0475f96be895848687ebcbba97eeecf
mwl8k: Fix rate_idx underflow

It was reported on OpenWrt bug tracking system[1], that several users
are affected by the endless reboot of their routers if they configure
5GHz interface with channel 44 or 48.

The reboot loop is caused by the following excessive number of WARN_ON
messages:

 WARNING: CPU: 0 PID: 0 at backports-4.19.23-1/net/mac80211/rx.c:4516
                             ieee80211_rx_napi+0x1fc/0xa54 [mac80211]

as the messages are being correctly emitted by the following guard:

 case RX_ENC_LEGACY:
      if (WARN_ON(status->rate_idx >= sband->n_bitrates))

as the rate_idx is in this case erroneously set to 251 (0xfb). This fix
simply converts previously used magic number to proper constant and
guards against substraction which is leading to the currently observed
underflow.

1. https://bugs.openwrt.org/index.php?do=details&task_id=2218

Fixes: 854783444bab ("mwl8k: properly set receive status rate index on 5 GHz receive")
Cc: <stable@vger.kernel.org>
Tested-by: Eubert Bao <bunnier@gmail.com>
Reported-by: Eubert Bao <bunnier@gmail.com>
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/marvell/mwl8k.c