mwifiex: inform disconnection initiator correctly.
authorAmitkumar Karwar <akarwar@marvell.com>
Wed, 25 May 2016 15:37:35 +0000 (08:37 -0700)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 14 Jun 2016 14:30:36 +0000 (17:30 +0300)
This patch ensures that 'locally_generated' parameter is correctly
passed to cfg80211_disconnected() API.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/marvell/mwifiex/join.c
drivers/net/wireless/marvell/mwifiex/main.h
drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
drivers/net/wireless/marvell/mwifiex/sta_event.c

index 62211fca91b7456ff71fae76be6e0ffe9a01753f..a4b773d102b37eaa8376f17c84eb73be77df7567 100644 (file)
@@ -1281,7 +1281,7 @@ int mwifiex_ret_802_11_ad_hoc(struct mwifiex_private *priv,
        if (result) {
                mwifiex_dbg(priv->adapter, ERROR, "ADHOC_RESP: failed\n");
                if (priv->media_connected)
-                       mwifiex_reset_connect_state(priv, result);
+                       mwifiex_reset_connect_state(priv, result, true);
 
                memset(&priv->curr_bss_params.bss_descriptor,
                       0x00, sizeof(struct mwifiex_bssdescriptor));
index 0207af00be42d6df18259f23947fbf61b673d0ae..f0cd055c0b2c0da0da29026fcdfad225b0731ead 100644 (file)
@@ -1128,7 +1128,8 @@ int mwifiex_cmd_802_11_associate(struct mwifiex_private *priv,
                                 struct mwifiex_bssdescriptor *bss_desc);
 int mwifiex_ret_802_11_associate(struct mwifiex_private *priv,
                                 struct host_cmd_ds_command *resp);
-void mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason);
+void mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason,
+                                bool from_ap);
 u8 mwifiex_band_to_radio_type(u8 band);
 int mwifiex_deauthenticate(struct mwifiex_private *priv, u8 *mac);
 void mwifiex_deauthenticate_all(struct mwifiex_adapter *adapter);
index d18c7979d723bfa972ed6ebb5ea091e6841b1596..bcfd4b74314563029e0cdebeb5d31db003e97686 100644 (file)
@@ -553,7 +553,8 @@ static int mwifiex_ret_802_11_deauthenticate(struct mwifiex_private *priv,
        if (!memcmp(resp->params.deauth.mac_addr,
                    &priv->curr_bss_params.bss_descriptor.mac_address,
                    sizeof(resp->params.deauth.mac_addr)))
-               mwifiex_reset_connect_state(priv, WLAN_REASON_DEAUTH_LEAVING);
+               mwifiex_reset_connect_state(priv, WLAN_REASON_DEAUTH_LEAVING,
+                                           false);
 
        return 0;
 }
@@ -566,7 +567,7 @@ static int mwifiex_ret_802_11_deauthenticate(struct mwifiex_private *priv,
 static int mwifiex_ret_802_11_ad_hoc_stop(struct mwifiex_private *priv,
                                          struct host_cmd_ds_command *resp)
 {
-       mwifiex_reset_connect_state(priv, WLAN_REASON_DEAUTH_LEAVING);
+       mwifiex_reset_connect_state(priv, WLAN_REASON_DEAUTH_LEAVING, false);
        return 0;
 }
 
index 0104108b4ea2f85360065c28dc2628726cccfd4d..0cefd40b27629193ce9b6f91b5f77a46f0b1f06c 100644 (file)
@@ -40,8 +40,8 @@
  *      - Erases current SSID and BSSID information
  *      - Sends a disconnect event to upper layers/applications.
  */
-void
-mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason_code)
+void mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason_code,
+                                bool from_ap)
 {
        struct mwifiex_adapter *adapter = priv->adapter;
 
@@ -140,7 +140,7 @@ mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason_code)
        if (priv->bss_mode == NL80211_IFTYPE_STATION ||
            priv->bss_mode == NL80211_IFTYPE_P2P_CLIENT) {
                cfg80211_disconnected(priv->netdev, reason_code, NULL, 0,
-                                     false, GFP_KERNEL);
+                                     !from_ap, GFP_KERNEL);
        }
        eth_zero_addr(priv->cfg_bssid);
 
@@ -574,7 +574,7 @@ int mwifiex_process_sta_event(struct mwifiex_private *priv)
                if (priv->media_connected) {
                        reason_code =
                                le16_to_cpu(*(__le16 *)adapter->event_body);
-                       mwifiex_reset_connect_state(priv, reason_code);
+                       mwifiex_reset_connect_state(priv, reason_code, true);
                }
                break;
 
@@ -589,7 +589,7 @@ int mwifiex_process_sta_event(struct mwifiex_private *priv)
                if (priv->media_connected) {
                        reason_code =
                                le16_to_cpu(*(__le16 *)adapter->event_body);
-                       mwifiex_reset_connect_state(priv, reason_code);
+                       mwifiex_reset_connect_state(priv, reason_code, true);
                }
                break;
 
@@ -599,7 +599,7 @@ int mwifiex_process_sta_event(struct mwifiex_private *priv)
                if (priv->media_connected) {
                        reason_code =
                                le16_to_cpu(*(__le16 *)adapter->event_body);
-                       mwifiex_reset_connect_state(priv, reason_code);
+                       mwifiex_reset_connect_state(priv, reason_code, true);
                }
                break;