mwifiex: Make resume actually do something useful again on SDIO cards
authorDouglas Anderson <dianders@chromium.org>
Thu, 4 Apr 2019 04:01:06 +0000 (21:01 -0700)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 25 Apr 2019 11:05:14 +0000 (14:05 +0300)
The commit fc3a2fcaa1ba ("mwifiex: use atomic bitops to represent
adapter status variables") had a fairly straightforward bug in it.  It
contained this bit of diff:

 - if (!adapter->is_suspended) {
 + if (test_bit(MWIFIEX_IS_SUSPENDED, &adapter->work_flags)) {

As you can see the patch missed the "!" when converting to the atomic
bitops.  This meant that the resume hasn't done anything at all since
that commit landed and suspend/resume for mwifiex SDIO cards has been
totally broken.

After fixing this mwifiex suspend/resume appears to work again, at
least with the simple testing I've done.

Fixes: fc3a2fcaa1ba ("mwifiex: use atomic bitops to represent adapter status variables")
Cc: <stable@vger.kernel.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/marvell/mwifiex/sdio.c

index a85648342d15bcd3b906624bc1c2b15df2c08b6f..d5a70340a9457fda1f80efb38cec2fefdf0874f9 100644 (file)
@@ -181,7 +181,7 @@ static int mwifiex_sdio_resume(struct device *dev)
 
        adapter = card->adapter;
 
-       if (test_bit(MWIFIEX_IS_SUSPENDED, &adapter->work_flags)) {
+       if (!test_bit(MWIFIEX_IS_SUSPENDED, &adapter->work_flags)) {
                mwifiex_dbg(adapter, WARN,
                            "device already resumed\n");
                return 0;