On Microsoft Surface devices (PCIe-88W8897), the ps_mode causes
connection unstable, especially with 5GHz APs. Then, it eventually causes
fw crash.

This commit disables ps_mode by default instead of enabling it.

Required code is extracted from mwifiex_drv_set_power().

Signed-off-by: Tsuchiya Yuto <kita...@gmail.com>
---
 drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c 
b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
index d3a968ef21ef9..9b7b52fbc9c45 100644
--- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
+++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
@@ -2333,14 +2333,19 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, 
u8 first_sta, bool init)
                        return -1;
 
                if (priv->bss_type != MWIFIEX_BSS_TYPE_UAP) {
-                       /* Enable IEEE PS by default */
-                       priv->adapter->ps_mode = MWIFIEX_802_11_POWER_MODE_PSP;
+                       /* Disable IEEE PS by default */
+                       priv->adapter->ps_mode = MWIFIEX_802_11_POWER_MODE_CAM;
                        ret = mwifiex_send_cmd(priv,
                                               HostCmd_CMD_802_11_PS_MODE_ENH,
-                                              EN_AUTO_PS, BITMAP_STA_PS, NULL,
+                                              DIS_AUTO_PS, BITMAP_STA_PS, NULL,
                                               true);
                        if (ret)
                                return -1;
+                       ret = mwifiex_send_cmd(priv,
+                                              HostCmd_CMD_802_11_PS_MODE_ENH,
+                                              GET_PS, 0, NULL, false);
+                       if (ret)
+                               return -1;
                }
 
                if (drcs) {
-- 
2.29.1

Reply via email to