Loading include/net/cfg80211.h +23 −8 Original line number Diff line number Diff line Loading @@ -1809,30 +1809,45 @@ void cfg80211_send_assoc_timeout(struct net_device *dev, const u8 *addr); * @dev: network device * @buf: deauthentication frame (header + body) * @len: length of the frame data * @cookie: cookie from ->deauth if called within that callback, * %NULL otherwise * * This function is called whenever deauthentication has been processed in * station mode. This includes both received deauthentication frames and * locally generated ones. This function may sleep. */ void cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len, void *cookie); void cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len); /** * __cfg80211_send_deauth - notification of processed deauthentication * @dev: network device * @buf: deauthentication frame (header + body) * @len: length of the frame data * * Like cfg80211_send_deauth(), but doesn't take the wdev lock. */ void __cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len); /** * cfg80211_send_disassoc - notification of processed disassociation * @dev: network device * @buf: disassociation response frame (header + body) * @len: length of the frame data * @cookie: cookie from ->disassoc if called within that callback, * %NULL otherwise * * This function is called whenever disassociation has been processed in * station mode. This includes both received disassociation frames and locally * generated ones. This function may sleep. */ void cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len, void *cookie); void cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len); /** * __cfg80211_send_disassoc - notification of processed disassociation * @dev: network device * @buf: disassociation response frame (header + body) * @len: length of the frame data * * Like cfg80211_send_disassoc(), but doesn't take the wdev lock. */ void __cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len); /** * cfg80211_michael_mic_failure - notification of Michael MIC failure (TKIP) Loading net/mac80211/mlme.c +11 −7 Original line number Diff line number Diff line Loading @@ -458,9 +458,15 @@ static void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata, mgmt->u.deauth.reason_code = cpu_to_le16(reason); if (stype == IEEE80211_STYPE_DEAUTH) cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len, cookie); if (cookie) __cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len); else cfg80211_send_disassoc(sdata->dev, (u8 *)mgmt, skb->len, cookie); cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len); else if (cookie) __cfg80211_send_disassoc(sdata->dev, (u8 *)mgmt, skb->len); else cfg80211_send_disassoc(sdata->dev, (u8 *)mgmt, skb->len); ieee80211_tx_skb(sdata, skb, ifmgd->flags & IEEE80211_STA_MFP_ENABLED); } Loading Loading @@ -1959,12 +1965,10 @@ static void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, /* no action */ break; case RX_MGMT_CFG80211_DEAUTH: cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len, NULL); cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len); break; case RX_MGMT_CFG80211_DISASSOC: cfg80211_send_disassoc(sdata->dev, (u8 *)mgmt, skb->len, NULL); cfg80211_send_disassoc(sdata->dev, (u8 *)mgmt, skb->len); break; default: WARN(1, "unexpected: %d", rma); Loading Loading @@ -2019,7 +2023,7 @@ static void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, cfg80211_send_rx_assoc(sdata->dev, (u8 *) mgmt, skb->len); break; case RX_MGMT_CFG80211_DEAUTH: cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len, NULL); cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len); break; default: WARN(1, "unexpected: %d", rma); Loading net/wireless/mlme.c +12 −27 Original line number Diff line number Diff line Loading @@ -121,7 +121,7 @@ void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len) } EXPORT_SYMBOL(cfg80211_send_rx_assoc); static void __cfg80211_send_deauth(struct net_device *dev, void __cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len) { struct wireless_dev *wdev = dev->ieee80211_ptr; Loading Loading @@ -177,27 +177,19 @@ static void __cfg80211_send_deauth(struct net_device *dev, false, NULL); } } EXPORT_SYMBOL(__cfg80211_send_deauth); void cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len, void *cookie) void cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len) { struct wireless_dev *wdev = dev->ieee80211_ptr; BUG_ON(cookie && wdev != cookie); if (cookie) { /* called within callback */ __cfg80211_send_deauth(dev, buf, len); } else { wdev_lock(wdev); __cfg80211_send_deauth(dev, buf, len); wdev_unlock(wdev); } } EXPORT_SYMBOL(cfg80211_send_deauth); static void __cfg80211_send_disassoc(struct net_device *dev, void __cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len) { struct wireless_dev *wdev = dev->ieee80211_ptr; Loading Loading @@ -238,23 +230,16 @@ static void __cfg80211_send_disassoc(struct net_device *dev, from_ap = memcmp(mgmt->sa, dev->dev_addr, ETH_ALEN) != 0; __cfg80211_disconnected(dev, NULL, 0, reason_code, from_ap); } EXPORT_SYMBOL(__cfg80211_send_disassoc); void cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len, void *cookie) void cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len) { struct wireless_dev *wdev = dev->ieee80211_ptr; BUG_ON(cookie && wdev != cookie); if (cookie) { /* called within callback */ __cfg80211_send_disassoc(dev, buf, len); } else { wdev_lock(wdev); __cfg80211_send_disassoc(dev, buf, len); wdev_unlock(wdev); } } EXPORT_SYMBOL(cfg80211_send_disassoc); void cfg80211_send_auth_timeout(struct net_device *dev, const u8 *addr) Loading Loading
include/net/cfg80211.h +23 −8 Original line number Diff line number Diff line Loading @@ -1809,30 +1809,45 @@ void cfg80211_send_assoc_timeout(struct net_device *dev, const u8 *addr); * @dev: network device * @buf: deauthentication frame (header + body) * @len: length of the frame data * @cookie: cookie from ->deauth if called within that callback, * %NULL otherwise * * This function is called whenever deauthentication has been processed in * station mode. This includes both received deauthentication frames and * locally generated ones. This function may sleep. */ void cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len, void *cookie); void cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len); /** * __cfg80211_send_deauth - notification of processed deauthentication * @dev: network device * @buf: deauthentication frame (header + body) * @len: length of the frame data * * Like cfg80211_send_deauth(), but doesn't take the wdev lock. */ void __cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len); /** * cfg80211_send_disassoc - notification of processed disassociation * @dev: network device * @buf: disassociation response frame (header + body) * @len: length of the frame data * @cookie: cookie from ->disassoc if called within that callback, * %NULL otherwise * * This function is called whenever disassociation has been processed in * station mode. This includes both received disassociation frames and locally * generated ones. This function may sleep. */ void cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len, void *cookie); void cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len); /** * __cfg80211_send_disassoc - notification of processed disassociation * @dev: network device * @buf: disassociation response frame (header + body) * @len: length of the frame data * * Like cfg80211_send_disassoc(), but doesn't take the wdev lock. */ void __cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len); /** * cfg80211_michael_mic_failure - notification of Michael MIC failure (TKIP) Loading
net/mac80211/mlme.c +11 −7 Original line number Diff line number Diff line Loading @@ -458,9 +458,15 @@ static void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata, mgmt->u.deauth.reason_code = cpu_to_le16(reason); if (stype == IEEE80211_STYPE_DEAUTH) cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len, cookie); if (cookie) __cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len); else cfg80211_send_disassoc(sdata->dev, (u8 *)mgmt, skb->len, cookie); cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len); else if (cookie) __cfg80211_send_disassoc(sdata->dev, (u8 *)mgmt, skb->len); else cfg80211_send_disassoc(sdata->dev, (u8 *)mgmt, skb->len); ieee80211_tx_skb(sdata, skb, ifmgd->flags & IEEE80211_STA_MFP_ENABLED); } Loading Loading @@ -1959,12 +1965,10 @@ static void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, /* no action */ break; case RX_MGMT_CFG80211_DEAUTH: cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len, NULL); cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len); break; case RX_MGMT_CFG80211_DISASSOC: cfg80211_send_disassoc(sdata->dev, (u8 *)mgmt, skb->len, NULL); cfg80211_send_disassoc(sdata->dev, (u8 *)mgmt, skb->len); break; default: WARN(1, "unexpected: %d", rma); Loading Loading @@ -2019,7 +2023,7 @@ static void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, cfg80211_send_rx_assoc(sdata->dev, (u8 *) mgmt, skb->len); break; case RX_MGMT_CFG80211_DEAUTH: cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len, NULL); cfg80211_send_deauth(sdata->dev, (u8 *)mgmt, skb->len); break; default: WARN(1, "unexpected: %d", rma); Loading
net/wireless/mlme.c +12 −27 Original line number Diff line number Diff line Loading @@ -121,7 +121,7 @@ void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len) } EXPORT_SYMBOL(cfg80211_send_rx_assoc); static void __cfg80211_send_deauth(struct net_device *dev, void __cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len) { struct wireless_dev *wdev = dev->ieee80211_ptr; Loading Loading @@ -177,27 +177,19 @@ static void __cfg80211_send_deauth(struct net_device *dev, false, NULL); } } EXPORT_SYMBOL(__cfg80211_send_deauth); void cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len, void *cookie) void cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len) { struct wireless_dev *wdev = dev->ieee80211_ptr; BUG_ON(cookie && wdev != cookie); if (cookie) { /* called within callback */ __cfg80211_send_deauth(dev, buf, len); } else { wdev_lock(wdev); __cfg80211_send_deauth(dev, buf, len); wdev_unlock(wdev); } } EXPORT_SYMBOL(cfg80211_send_deauth); static void __cfg80211_send_disassoc(struct net_device *dev, void __cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len) { struct wireless_dev *wdev = dev->ieee80211_ptr; Loading Loading @@ -238,23 +230,16 @@ static void __cfg80211_send_disassoc(struct net_device *dev, from_ap = memcmp(mgmt->sa, dev->dev_addr, ETH_ALEN) != 0; __cfg80211_disconnected(dev, NULL, 0, reason_code, from_ap); } EXPORT_SYMBOL(__cfg80211_send_disassoc); void cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len, void *cookie) void cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len) { struct wireless_dev *wdev = dev->ieee80211_ptr; BUG_ON(cookie && wdev != cookie); if (cookie) { /* called within callback */ __cfg80211_send_disassoc(dev, buf, len); } else { wdev_lock(wdev); __cfg80211_send_disassoc(dev, buf, len); wdev_unlock(wdev); } } EXPORT_SYMBOL(cfg80211_send_disassoc); void cfg80211_send_auth_timeout(struct net_device *dev, const u8 *addr) Loading