diff options
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 5e25d320deae..383392b04282 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -419,9 +419,11 @@ static void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata, | |||
419 | mgmt->u.deauth.reason_code = cpu_to_le16(reason); | 419 | mgmt->u.deauth.reason_code = cpu_to_le16(reason); |
420 | 420 | ||
421 | if (stype == IEEE80211_STYPE_DEAUTH) | 421 | if (stype == IEEE80211_STYPE_DEAUTH) |
422 | cfg80211_send_deauth(sdata->dev, (u8 *) mgmt, skb->len); | 422 | cfg80211_send_deauth(sdata->dev, (u8 *) mgmt, skb->len, |
423 | GFP_KERNEL); | ||
423 | else | 424 | else |
424 | cfg80211_send_disassoc(sdata->dev, (u8 *) mgmt, skb->len); | 425 | cfg80211_send_disassoc(sdata->dev, (u8 *) mgmt, skb->len, |
426 | GFP_KERNEL); | ||
425 | ieee80211_tx_skb(sdata, skb, ifmgd->flags & IEEE80211_STA_MFP_ENABLED); | 427 | ieee80211_tx_skb(sdata, skb, ifmgd->flags & IEEE80211_STA_MFP_ENABLED); |
426 | } | 428 | } |
427 | 429 | ||
@@ -1006,7 +1008,8 @@ static void ieee80211_direct_probe(struct ieee80211_sub_if_data *sdata) | |||
1006 | sdata->dev->name, ifmgd->bssid); | 1008 | sdata->dev->name, ifmgd->bssid); |
1007 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; | 1009 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; |
1008 | ieee80211_recalc_idle(local); | 1010 | ieee80211_recalc_idle(local); |
1009 | cfg80211_send_auth_timeout(sdata->dev, ifmgd->bssid); | 1011 | cfg80211_send_auth_timeout(sdata->dev, ifmgd->bssid, |
1012 | GFP_KERNEL); | ||
1010 | 1013 | ||
1011 | /* | 1014 | /* |
1012 | * Most likely AP is not in the range so remove the | 1015 | * Most likely AP is not in the range so remove the |
@@ -1055,7 +1058,8 @@ static void ieee80211_authenticate(struct ieee80211_sub_if_data *sdata) | |||
1055 | sdata->dev->name, ifmgd->bssid); | 1058 | sdata->dev->name, ifmgd->bssid); |
1056 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; | 1059 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; |
1057 | ieee80211_recalc_idle(local); | 1060 | ieee80211_recalc_idle(local); |
1058 | cfg80211_send_auth_timeout(sdata->dev, ifmgd->bssid); | 1061 | cfg80211_send_auth_timeout(sdata->dev, ifmgd->bssid, |
1062 | GFP_KERNEL); | ||
1059 | ieee80211_rx_bss_remove(sdata, ifmgd->bssid, | 1063 | ieee80211_rx_bss_remove(sdata, ifmgd->bssid, |
1060 | sdata->local->hw.conf.channel->center_freq, | 1064 | sdata->local->hw.conf.channel->center_freq, |
1061 | ifmgd->ssid, ifmgd->ssid_len); | 1065 | ifmgd->ssid, ifmgd->ssid_len); |
@@ -1243,7 +1247,8 @@ static void ieee80211_associate(struct ieee80211_sub_if_data *sdata) | |||
1243 | sdata->dev->name, ifmgd->bssid); | 1247 | sdata->dev->name, ifmgd->bssid); |
1244 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; | 1248 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; |
1245 | ieee80211_recalc_idle(local); | 1249 | ieee80211_recalc_idle(local); |
1246 | cfg80211_send_assoc_timeout(sdata->dev, ifmgd->bssid); | 1250 | cfg80211_send_assoc_timeout(sdata->dev, ifmgd->bssid, |
1251 | GFP_KERNEL); | ||
1247 | ieee80211_rx_bss_remove(sdata, ifmgd->bssid, | 1252 | ieee80211_rx_bss_remove(sdata, ifmgd->bssid, |
1248 | sdata->local->hw.conf.channel->center_freq, | 1253 | sdata->local->hw.conf.channel->center_freq, |
1249 | ifmgd->ssid, ifmgd->ssid_len); | 1254 | ifmgd->ssid, ifmgd->ssid_len); |
@@ -1517,12 +1522,14 @@ static void ieee80211_rx_mgmt_auth(struct ieee80211_sub_if_data *sdata, | |||
1517 | case WLAN_AUTH_LEAP: | 1522 | case WLAN_AUTH_LEAP: |
1518 | case WLAN_AUTH_FT: | 1523 | case WLAN_AUTH_FT: |
1519 | ieee80211_auth_completed(sdata); | 1524 | ieee80211_auth_completed(sdata); |
1520 | cfg80211_send_rx_auth(sdata->dev, (u8 *) mgmt, len); | 1525 | cfg80211_send_rx_auth(sdata->dev, (u8 *) mgmt, len, |
1526 | GFP_KERNEL); | ||
1521 | break; | 1527 | break; |
1522 | case WLAN_AUTH_SHARED_KEY: | 1528 | case WLAN_AUTH_SHARED_KEY: |
1523 | if (ifmgd->auth_transaction == 4) { | 1529 | if (ifmgd->auth_transaction == 4) { |
1524 | ieee80211_auth_completed(sdata); | 1530 | ieee80211_auth_completed(sdata); |
1525 | cfg80211_send_rx_auth(sdata->dev, (u8 *) mgmt, len); | 1531 | cfg80211_send_rx_auth(sdata->dev, (u8 *) mgmt, len, |
1532 | GFP_KERNEL); | ||
1526 | } else | 1533 | } else |
1527 | ieee80211_auth_challenge(sdata, mgmt, len); | 1534 | ieee80211_auth_challenge(sdata, mgmt, len); |
1528 | break; | 1535 | break; |
@@ -1560,7 +1567,7 @@ static void ieee80211_rx_mgmt_deauth(struct ieee80211_sub_if_data *sdata, | |||
1560 | 1567 | ||
1561 | ieee80211_set_disassoc(sdata, true, false, 0); | 1568 | ieee80211_set_disassoc(sdata, true, false, 0); |
1562 | ifmgd->flags &= ~IEEE80211_STA_AUTHENTICATED; | 1569 | ifmgd->flags &= ~IEEE80211_STA_AUTHENTICATED; |
1563 | cfg80211_send_deauth(sdata->dev, (u8 *) mgmt, len); | 1570 | cfg80211_send_deauth(sdata->dev, (u8 *) mgmt, len, GFP_KERNEL); |
1564 | } | 1571 | } |
1565 | 1572 | ||
1566 | 1573 | ||
@@ -1591,7 +1598,7 @@ static void ieee80211_rx_mgmt_disassoc(struct ieee80211_sub_if_data *sdata, | |||
1591 | } | 1598 | } |
1592 | 1599 | ||
1593 | ieee80211_set_disassoc(sdata, false, false, reason_code); | 1600 | ieee80211_set_disassoc(sdata, false, false, reason_code); |
1594 | cfg80211_send_disassoc(sdata->dev, (u8 *) mgmt, len); | 1601 | cfg80211_send_disassoc(sdata->dev, (u8 *) mgmt, len, GFP_KERNEL); |
1595 | } | 1602 | } |
1596 | 1603 | ||
1597 | 1604 | ||
@@ -1660,7 +1667,8 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata, | |||
1660 | * association next time. This works around some broken APs | 1667 | * association next time. This works around some broken APs |
1661 | * which do not correctly reject reassociation requests. */ | 1668 | * which do not correctly reject reassociation requests. */ |
1662 | ifmgd->flags &= ~IEEE80211_STA_PREV_BSSID_SET; | 1669 | ifmgd->flags &= ~IEEE80211_STA_PREV_BSSID_SET; |
1663 | cfg80211_send_rx_assoc(sdata->dev, (u8 *) mgmt, len); | 1670 | cfg80211_send_rx_assoc(sdata->dev, (u8 *) mgmt, len, |
1671 | GFP_KERNEL); | ||
1664 | if (ifmgd->flags & IEEE80211_STA_EXT_SME) { | 1672 | if (ifmgd->flags & IEEE80211_STA_EXT_SME) { |
1665 | /* Wait for SME to decide what to do next */ | 1673 | /* Wait for SME to decide what to do next */ |
1666 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; | 1674 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; |
@@ -1823,7 +1831,7 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata, | |||
1823 | ifmgd->last_beacon = jiffies; | 1831 | ifmgd->last_beacon = jiffies; |
1824 | 1832 | ||
1825 | ieee80211_associated(sdata); | 1833 | ieee80211_associated(sdata); |
1826 | cfg80211_send_rx_assoc(sdata->dev, (u8 *) mgmt, len); | 1834 | cfg80211_send_rx_assoc(sdata->dev, (u8 *) mgmt, len, GFP_KERNEL); |
1827 | } | 1835 | } |
1828 | 1836 | ||
1829 | 1837 | ||