mirror of https://gitee.com/openkylin/linux.git
mwifiex: inform disconnection initiator correctly.
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>
This commit is contained in:
parent
5c87a55adb
commit
c62d50a406
drivers/net/wireless/marvell/mwifiex
|
@ -1281,7 +1281,7 @@ int mwifiex_ret_802_11_ad_hoc(struct mwifiex_private *priv,
|
||||||
if (result) {
|
if (result) {
|
||||||
mwifiex_dbg(priv->adapter, ERROR, "ADHOC_RESP: failed\n");
|
mwifiex_dbg(priv->adapter, ERROR, "ADHOC_RESP: failed\n");
|
||||||
if (priv->media_connected)
|
if (priv->media_connected)
|
||||||
mwifiex_reset_connect_state(priv, result);
|
mwifiex_reset_connect_state(priv, result, true);
|
||||||
|
|
||||||
memset(&priv->curr_bss_params.bss_descriptor,
|
memset(&priv->curr_bss_params.bss_descriptor,
|
||||||
0x00, sizeof(struct mwifiex_bssdescriptor));
|
0x00, sizeof(struct mwifiex_bssdescriptor));
|
||||||
|
|
|
@ -1128,7 +1128,8 @@ int mwifiex_cmd_802_11_associate(struct mwifiex_private *priv,
|
||||||
struct mwifiex_bssdescriptor *bss_desc);
|
struct mwifiex_bssdescriptor *bss_desc);
|
||||||
int mwifiex_ret_802_11_associate(struct mwifiex_private *priv,
|
int mwifiex_ret_802_11_associate(struct mwifiex_private *priv,
|
||||||
struct host_cmd_ds_command *resp);
|
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);
|
u8 mwifiex_band_to_radio_type(u8 band);
|
||||||
int mwifiex_deauthenticate(struct mwifiex_private *priv, u8 *mac);
|
int mwifiex_deauthenticate(struct mwifiex_private *priv, u8 *mac);
|
||||||
void mwifiex_deauthenticate_all(struct mwifiex_adapter *adapter);
|
void mwifiex_deauthenticate_all(struct mwifiex_adapter *adapter);
|
||||||
|
|
|
@ -553,7 +553,8 @@ static int mwifiex_ret_802_11_deauthenticate(struct mwifiex_private *priv,
|
||||||
if (!memcmp(resp->params.deauth.mac_addr,
|
if (!memcmp(resp->params.deauth.mac_addr,
|
||||||
&priv->curr_bss_params.bss_descriptor.mac_address,
|
&priv->curr_bss_params.bss_descriptor.mac_address,
|
||||||
sizeof(resp->params.deauth.mac_addr)))
|
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;
|
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,
|
static int mwifiex_ret_802_11_ad_hoc_stop(struct mwifiex_private *priv,
|
||||||
struct host_cmd_ds_command *resp)
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,8 +40,8 @@
|
||||||
* - Erases current SSID and BSSID information
|
* - Erases current SSID and BSSID information
|
||||||
* - Sends a disconnect event to upper layers/applications.
|
* - Sends a disconnect event to upper layers/applications.
|
||||||
*/
|
*/
|
||||||
void
|
void mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason_code,
|
||||||
mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason_code)
|
bool from_ap)
|
||||||
{
|
{
|
||||||
struct mwifiex_adapter *adapter = priv->adapter;
|
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 ||
|
if (priv->bss_mode == NL80211_IFTYPE_STATION ||
|
||||||
priv->bss_mode == NL80211_IFTYPE_P2P_CLIENT) {
|
priv->bss_mode == NL80211_IFTYPE_P2P_CLIENT) {
|
||||||
cfg80211_disconnected(priv->netdev, reason_code, NULL, 0,
|
cfg80211_disconnected(priv->netdev, reason_code, NULL, 0,
|
||||||
false, GFP_KERNEL);
|
!from_ap, GFP_KERNEL);
|
||||||
}
|
}
|
||||||
eth_zero_addr(priv->cfg_bssid);
|
eth_zero_addr(priv->cfg_bssid);
|
||||||
|
|
||||||
|
@ -574,7 +574,7 @@ int mwifiex_process_sta_event(struct mwifiex_private *priv)
|
||||||
if (priv->media_connected) {
|
if (priv->media_connected) {
|
||||||
reason_code =
|
reason_code =
|
||||||
le16_to_cpu(*(__le16 *)adapter->event_body);
|
le16_to_cpu(*(__le16 *)adapter->event_body);
|
||||||
mwifiex_reset_connect_state(priv, reason_code);
|
mwifiex_reset_connect_state(priv, reason_code, true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -589,7 +589,7 @@ int mwifiex_process_sta_event(struct mwifiex_private *priv)
|
||||||
if (priv->media_connected) {
|
if (priv->media_connected) {
|
||||||
reason_code =
|
reason_code =
|
||||||
le16_to_cpu(*(__le16 *)adapter->event_body);
|
le16_to_cpu(*(__le16 *)adapter->event_body);
|
||||||
mwifiex_reset_connect_state(priv, reason_code);
|
mwifiex_reset_connect_state(priv, reason_code, true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -599,7 +599,7 @@ int mwifiex_process_sta_event(struct mwifiex_private *priv)
|
||||||
if (priv->media_connected) {
|
if (priv->media_connected) {
|
||||||
reason_code =
|
reason_code =
|
||||||
le16_to_cpu(*(__le16 *)adapter->event_body);
|
le16_to_cpu(*(__le16 *)adapter->event_body);
|
||||||
mwifiex_reset_connect_state(priv, reason_code);
|
mwifiex_reset_connect_state(priv, reason_code, true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue