mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 15:41:36 +00:00
mwifiex: do not process broadcast mac address for del_sta
Generally broadcast mac address deauth is followed by stop_ap or start_ap. In both cases, FW already has provision to send deauth; so there is no need to handle broadcast mac deauthentication. Signed-off-by: Avinash Patil <patila@marvell.com> Signed-off-by: Cathy Luo <cluo@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
c11fb9857f
commit
fc99dd0829
@ -1296,31 +1296,30 @@ mwifiex_cfg80211_del_station(struct wiphy *wiphy, struct net_device *dev,
|
||||
{
|
||||
struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev);
|
||||
struct mwifiex_sta_node *sta_node;
|
||||
u8 deauth_mac[ETH_ALEN];
|
||||
unsigned long flags;
|
||||
|
||||
if (list_empty(&priv->sta_list) || !priv->bss_started)
|
||||
return 0;
|
||||
|
||||
if (!params->mac || is_broadcast_ether_addr(params->mac)) {
|
||||
wiphy_dbg(wiphy, "%s: NULL/broadcast mac address\n", __func__);
|
||||
list_for_each_entry(sta_node, &priv->sta_list, list) {
|
||||
if (mwifiex_send_cmd(priv, HostCmd_CMD_UAP_STA_DEAUTH,
|
||||
HostCmd_ACT_GEN_SET, 0,
|
||||
sta_node->mac_addr, true))
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
wiphy_dbg(wiphy, "%s: mac address %pM\n", __func__,
|
||||
params->mac);
|
||||
spin_lock_irqsave(&priv->sta_list_spinlock, flags);
|
||||
sta_node = mwifiex_get_sta_entry(priv, params->mac);
|
||||
spin_unlock_irqrestore(&priv->sta_list_spinlock, flags);
|
||||
if (sta_node) {
|
||||
if (mwifiex_send_cmd(priv, HostCmd_CMD_UAP_STA_DEAUTH,
|
||||
HostCmd_ACT_GEN_SET, 0,
|
||||
sta_node->mac_addr, true))
|
||||
return -1;
|
||||
}
|
||||
if (!params->mac || is_broadcast_ether_addr(params->mac))
|
||||
return 0;
|
||||
|
||||
wiphy_dbg(wiphy, "%s: mac address %pM\n", __func__, params->mac);
|
||||
|
||||
memset(deauth_mac, 0, ETH_ALEN);
|
||||
|
||||
spin_lock_irqsave(&priv->sta_list_spinlock, flags);
|
||||
sta_node = mwifiex_get_sta_entry(priv, params->mac);
|
||||
if (sta_node)
|
||||
ether_addr_copy(deauth_mac, params->mac);
|
||||
spin_unlock_irqrestore(&priv->sta_list_spinlock, flags);
|
||||
|
||||
if (is_valid_ether_addr(deauth_mac)) {
|
||||
if (mwifiex_send_cmd(priv, HostCmd_CMD_UAP_STA_DEAUTH,
|
||||
HostCmd_ACT_GEN_SET, 0,
|
||||
deauth_mac, true))
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user