diff options
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 206 |
1 files changed, 49 insertions, 157 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 0a310d09ab07..4a3bddd206d8 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -346,7 +346,7 @@ static void ieee80211_sta_wmm_params(struct net_device *dev, | |||
346 | params.cw_max = ecw2cw((pos[1] & 0xf0) >> 4); | 346 | params.cw_max = ecw2cw((pos[1] & 0xf0) >> 4); |
347 | params.cw_min = ecw2cw(pos[1] & 0x0f); | 347 | params.cw_min = ecw2cw(pos[1] & 0x0f); |
348 | params.txop = pos[2] | (pos[3] << 8); | 348 | params.txop = pos[2] | (pos[3] << 8); |
349 | #ifdef CONFIG_MAC80211_DEBUG | 349 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG |
350 | printk(KERN_DEBUG "%s: WMM queue=%d aci=%d acm=%d aifs=%d " | 350 | printk(KERN_DEBUG "%s: WMM queue=%d aci=%d acm=%d aifs=%d " |
351 | "cWmin=%d cWmax=%d txop=%d\n", | 351 | "cWmin=%d cWmax=%d txop=%d\n", |
352 | dev->name, queue, aci, acm, params.aifs, params.cw_min, | 352 | dev->name, queue, aci, acm, params.aifs, params.cw_min, |
@@ -371,6 +371,7 @@ static u32 ieee80211_handle_protect_preamb(struct ieee80211_sub_if_data *sdata, | |||
371 | u32 changed = 0; | 371 | u32 changed = 0; |
372 | 372 | ||
373 | if (use_protection != bss_conf->use_cts_prot) { | 373 | if (use_protection != bss_conf->use_cts_prot) { |
374 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG | ||
374 | if (net_ratelimit()) { | 375 | if (net_ratelimit()) { |
375 | printk(KERN_DEBUG "%s: CTS protection %s (BSSID=" | 376 | printk(KERN_DEBUG "%s: CTS protection %s (BSSID=" |
376 | "%s)\n", | 377 | "%s)\n", |
@@ -378,11 +379,13 @@ static u32 ieee80211_handle_protect_preamb(struct ieee80211_sub_if_data *sdata, | |||
378 | use_protection ? "enabled" : "disabled", | 379 | use_protection ? "enabled" : "disabled", |
379 | print_mac(mac, ifsta->bssid)); | 380 | print_mac(mac, ifsta->bssid)); |
380 | } | 381 | } |
382 | #endif | ||
381 | bss_conf->use_cts_prot = use_protection; | 383 | bss_conf->use_cts_prot = use_protection; |
382 | changed |= BSS_CHANGED_ERP_CTS_PROT; | 384 | changed |= BSS_CHANGED_ERP_CTS_PROT; |
383 | } | 385 | } |
384 | 386 | ||
385 | if (use_short_preamble != bss_conf->use_short_preamble) { | 387 | if (use_short_preamble != bss_conf->use_short_preamble) { |
388 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG | ||
386 | if (net_ratelimit()) { | 389 | if (net_ratelimit()) { |
387 | printk(KERN_DEBUG "%s: switched to %s barker preamble" | 390 | printk(KERN_DEBUG "%s: switched to %s barker preamble" |
388 | " (BSSID=%s)\n", | 391 | " (BSSID=%s)\n", |
@@ -390,6 +393,7 @@ static u32 ieee80211_handle_protect_preamb(struct ieee80211_sub_if_data *sdata, | |||
390 | use_short_preamble ? "short" : "long", | 393 | use_short_preamble ? "short" : "long", |
391 | print_mac(mac, ifsta->bssid)); | 394 | print_mac(mac, ifsta->bssid)); |
392 | } | 395 | } |
396 | #endif | ||
393 | bss_conf->use_short_preamble = use_short_preamble; | 397 | bss_conf->use_short_preamble = use_short_preamble; |
394 | changed |= BSS_CHANGED_ERP_PREAMBLE; | 398 | changed |= BSS_CHANGED_ERP_PREAMBLE; |
395 | } | 399 | } |
@@ -1175,14 +1179,10 @@ static void ieee80211_auth_challenge(struct net_device *dev, | |||
1175 | u8 *pos; | 1179 | u8 *pos; |
1176 | struct ieee802_11_elems elems; | 1180 | struct ieee802_11_elems elems; |
1177 | 1181 | ||
1178 | printk(KERN_DEBUG "%s: replying to auth challenge\n", dev->name); | ||
1179 | pos = mgmt->u.auth.variable; | 1182 | pos = mgmt->u.auth.variable; |
1180 | ieee802_11_parse_elems(pos, len - (pos - (u8 *) mgmt), &elems); | 1183 | ieee802_11_parse_elems(pos, len - (pos - (u8 *) mgmt), &elems); |
1181 | if (!elems.challenge) { | 1184 | if (!elems.challenge) |
1182 | printk(KERN_DEBUG "%s: no challenge IE in shared key auth " | ||
1183 | "frame\n", dev->name); | ||
1184 | return; | 1185 | return; |
1185 | } | ||
1186 | ieee80211_send_auth(dev, ifsta, 3, elems.challenge - 2, | 1186 | ieee80211_send_auth(dev, ifsta, 3, elems.challenge - 2, |
1187 | elems.challenge_len + 2, 1); | 1187 | elems.challenge_len + 2, 1); |
1188 | } | 1188 | } |
@@ -1364,9 +1364,11 @@ static void ieee80211_sta_process_addba_request(struct net_device *dev, | |||
1364 | sta->ampdu_mlme.tid_rx[tid] = | 1364 | sta->ampdu_mlme.tid_rx[tid] = |
1365 | kmalloc(sizeof(struct tid_ampdu_rx), GFP_ATOMIC); | 1365 | kmalloc(sizeof(struct tid_ampdu_rx), GFP_ATOMIC); |
1366 | if (!sta->ampdu_mlme.tid_rx[tid]) { | 1366 | if (!sta->ampdu_mlme.tid_rx[tid]) { |
1367 | #ifdef CONFIG_MAC80211_HT_DEBUG | ||
1367 | if (net_ratelimit()) | 1368 | if (net_ratelimit()) |
1368 | printk(KERN_ERR "allocate rx mlme to tid %d failed\n", | 1369 | printk(KERN_ERR "allocate rx mlme to tid %d failed\n", |
1369 | tid); | 1370 | tid); |
1371 | #endif | ||
1370 | goto end; | 1372 | goto end; |
1371 | } | 1373 | } |
1372 | /* rx timer */ | 1374 | /* rx timer */ |
@@ -1382,9 +1384,11 @@ static void ieee80211_sta_process_addba_request(struct net_device *dev, | |||
1382 | tid_agg_rx->reorder_buf = | 1384 | tid_agg_rx->reorder_buf = |
1383 | kmalloc(buf_size * sizeof(struct sk_buff *), GFP_ATOMIC); | 1385 | kmalloc(buf_size * sizeof(struct sk_buff *), GFP_ATOMIC); |
1384 | if (!tid_agg_rx->reorder_buf) { | 1386 | if (!tid_agg_rx->reorder_buf) { |
1387 | #ifdef CONFIG_MAC80211_HT_DEBUG | ||
1385 | if (net_ratelimit()) | 1388 | if (net_ratelimit()) |
1386 | printk(KERN_ERR "can not allocate reordering buffer " | 1389 | printk(KERN_ERR "can not allocate reordering buffer " |
1387 | "to tid %d\n", tid); | 1390 | "to tid %d\n", tid); |
1391 | #endif | ||
1388 | kfree(sta->ampdu_mlme.tid_rx[tid]); | 1392 | kfree(sta->ampdu_mlme.tid_rx[tid]); |
1389 | goto end; | 1393 | goto end; |
1390 | } | 1394 | } |
@@ -1451,8 +1455,6 @@ static void ieee80211_sta_process_addba_resp(struct net_device *dev, | |||
1451 | 1455 | ||
1452 | if (!(*state & HT_ADDBA_REQUESTED_MSK)) { | 1456 | if (!(*state & HT_ADDBA_REQUESTED_MSK)) { |
1453 | spin_unlock_bh(&sta->lock); | 1457 | spin_unlock_bh(&sta->lock); |
1454 | printk(KERN_DEBUG "state not HT_ADDBA_REQUESTED_MSK:" | ||
1455 | "%d\n", *state); | ||
1456 | goto addba_resp_exit; | 1458 | goto addba_resp_exit; |
1457 | } | 1459 | } |
1458 | 1460 | ||
@@ -1471,22 +1473,14 @@ static void ieee80211_sta_process_addba_resp(struct net_device *dev, | |||
1471 | #endif /* CONFIG_MAC80211_HT_DEBUG */ | 1473 | #endif /* CONFIG_MAC80211_HT_DEBUG */ |
1472 | if (le16_to_cpu(mgmt->u.action.u.addba_resp.status) | 1474 | if (le16_to_cpu(mgmt->u.action.u.addba_resp.status) |
1473 | == WLAN_STATUS_SUCCESS) { | 1475 | == WLAN_STATUS_SUCCESS) { |
1474 | if (*state & HT_ADDBA_RECEIVED_MSK) | ||
1475 | printk(KERN_DEBUG "double addBA response\n"); | ||
1476 | |||
1477 | *state |= HT_ADDBA_RECEIVED_MSK; | 1476 | *state |= HT_ADDBA_RECEIVED_MSK; |
1478 | sta->ampdu_mlme.addba_req_num[tid] = 0; | 1477 | sta->ampdu_mlme.addba_req_num[tid] = 0; |
1479 | 1478 | ||
1480 | if (*state == HT_AGG_STATE_OPERATIONAL) { | 1479 | if (*state == HT_AGG_STATE_OPERATIONAL) |
1481 | printk(KERN_DEBUG "Aggregation on for tid %d \n", tid); | ||
1482 | ieee80211_wake_queue(hw, sta->tid_to_tx_q[tid]); | 1480 | ieee80211_wake_queue(hw, sta->tid_to_tx_q[tid]); |
1483 | } | ||
1484 | 1481 | ||
1485 | spin_unlock_bh(&sta->lock); | 1482 | spin_unlock_bh(&sta->lock); |
1486 | printk(KERN_DEBUG "recipient accepted agg: tid %d \n", tid); | ||
1487 | } else { | 1483 | } else { |
1488 | printk(KERN_DEBUG "recipient rejected agg: tid %d \n", tid); | ||
1489 | |||
1490 | sta->ampdu_mlme.addba_req_num[tid]++; | 1484 | sta->ampdu_mlme.addba_req_num[tid]++; |
1491 | /* this will allow the state check in stop_BA_session */ | 1485 | /* this will allow the state check in stop_BA_session */ |
1492 | *state = HT_AGG_STATE_OPERATIONAL; | 1486 | *state = HT_AGG_STATE_OPERATIONAL; |
@@ -1585,7 +1579,7 @@ void ieee80211_sta_stop_rx_ba_session(struct net_device *dev, u8 *ra, u16 tid, | |||
1585 | ra, tid, NULL); | 1579 | ra, tid, NULL); |
1586 | if (ret) | 1580 | if (ret) |
1587 | printk(KERN_DEBUG "HW problem - can not stop rx " | 1581 | printk(KERN_DEBUG "HW problem - can not stop rx " |
1588 | "aggergation for tid %d\n", tid); | 1582 | "aggregation for tid %d\n", tid); |
1589 | 1583 | ||
1590 | /* shutdown timer has not expired */ | 1584 | /* shutdown timer has not expired */ |
1591 | if (initiator != WLAN_BACK_TIMER) | 1585 | if (initiator != WLAN_BACK_TIMER) |
@@ -1691,12 +1685,16 @@ void sta_addba_resp_timer_expired(unsigned long data) | |||
1691 | if (!(*state & HT_ADDBA_REQUESTED_MSK)) { | 1685 | if (!(*state & HT_ADDBA_REQUESTED_MSK)) { |
1692 | spin_unlock_bh(&sta->lock); | 1686 | spin_unlock_bh(&sta->lock); |
1693 | *state = HT_AGG_STATE_IDLE; | 1687 | *state = HT_AGG_STATE_IDLE; |
1688 | #ifdef CONFIG_MAC80211_HT_DEBUG | ||
1694 | printk(KERN_DEBUG "timer expired on tid %d but we are not " | 1689 | printk(KERN_DEBUG "timer expired on tid %d but we are not " |
1695 | "expecting addBA response there", tid); | 1690 | "expecting addBA response there", tid); |
1691 | #endif | ||
1696 | goto timer_expired_exit; | 1692 | goto timer_expired_exit; |
1697 | } | 1693 | } |
1698 | 1694 | ||
1695 | #ifdef CONFIG_MAC80211_HT_DEBUG | ||
1699 | printk(KERN_DEBUG "addBA response timer expired on tid %d\n", tid); | 1696 | printk(KERN_DEBUG "addBA response timer expired on tid %d\n", tid); |
1697 | #endif | ||
1700 | 1698 | ||
1701 | /* go through the state check in stop_BA_session */ | 1699 | /* go through the state check in stop_BA_session */ |
1702 | *state = HT_AGG_STATE_OPERATIONAL; | 1700 | *state = HT_AGG_STATE_OPERATIONAL; |
@@ -1724,7 +1722,9 @@ static void sta_rx_agg_session_timer_expired(unsigned long data) | |||
1724 | struct sta_info *sta = container_of(timer_to_id, struct sta_info, | 1722 | struct sta_info *sta = container_of(timer_to_id, struct sta_info, |
1725 | timer_to_tid[0]); | 1723 | timer_to_tid[0]); |
1726 | 1724 | ||
1725 | #ifdef CONFIG_MAC80211_HT_DEBUG | ||
1727 | printk(KERN_DEBUG "rx session timer expired on tid %d\n", (u16)*ptid); | 1726 | printk(KERN_DEBUG "rx session timer expired on tid %d\n", (u16)*ptid); |
1727 | #endif | ||
1728 | ieee80211_sta_stop_rx_ba_session(sta->sdata->dev, sta->addr, | 1728 | ieee80211_sta_stop_rx_ba_session(sta->sdata->dev, sta->addr, |
1729 | (u16)*ptid, WLAN_BACK_TIMER, | 1729 | (u16)*ptid, WLAN_BACK_TIMER, |
1730 | WLAN_REASON_QSTA_TIMEOUT); | 1730 | WLAN_REASON_QSTA_TIMEOUT); |
@@ -1819,47 +1819,24 @@ static void ieee80211_rx_mgmt_auth(struct net_device *dev, | |||
1819 | DECLARE_MAC_BUF(mac); | 1819 | DECLARE_MAC_BUF(mac); |
1820 | 1820 | ||
1821 | if (ifsta->state != IEEE80211_AUTHENTICATE && | 1821 | if (ifsta->state != IEEE80211_AUTHENTICATE && |
1822 | sdata->vif.type != IEEE80211_IF_TYPE_IBSS) { | 1822 | sdata->vif.type != IEEE80211_IF_TYPE_IBSS) |
1823 | printk(KERN_DEBUG "%s: authentication frame received from " | ||
1824 | "%s, but not in authenticate state - ignored\n", | ||
1825 | dev->name, print_mac(mac, mgmt->sa)); | ||
1826 | return; | 1823 | return; |
1827 | } | ||
1828 | 1824 | ||
1829 | if (len < 24 + 6) { | 1825 | if (len < 24 + 6) |
1830 | printk(KERN_DEBUG "%s: too short (%zd) authentication frame " | ||
1831 | "received from %s - ignored\n", | ||
1832 | dev->name, len, print_mac(mac, mgmt->sa)); | ||
1833 | return; | 1826 | return; |
1834 | } | ||
1835 | 1827 | ||
1836 | if (sdata->vif.type != IEEE80211_IF_TYPE_IBSS && | 1828 | if (sdata->vif.type != IEEE80211_IF_TYPE_IBSS && |
1837 | memcmp(ifsta->bssid, mgmt->sa, ETH_ALEN) != 0) { | 1829 | memcmp(ifsta->bssid, mgmt->sa, ETH_ALEN) != 0) |
1838 | printk(KERN_DEBUG "%s: authentication frame received from " | ||
1839 | "unknown AP (SA=%s BSSID=%s) - " | ||
1840 | "ignored\n", dev->name, print_mac(mac, mgmt->sa), | ||
1841 | print_mac(mac, mgmt->bssid)); | ||
1842 | return; | 1830 | return; |
1843 | } | ||
1844 | 1831 | ||
1845 | if (sdata->vif.type != IEEE80211_IF_TYPE_IBSS && | 1832 | if (sdata->vif.type != IEEE80211_IF_TYPE_IBSS && |
1846 | memcmp(ifsta->bssid, mgmt->bssid, ETH_ALEN) != 0) { | 1833 | memcmp(ifsta->bssid, mgmt->bssid, ETH_ALEN) != 0) |
1847 | printk(KERN_DEBUG "%s: authentication frame received from " | ||
1848 | "unknown BSSID (SA=%s BSSID=%s) - " | ||
1849 | "ignored\n", dev->name, print_mac(mac, mgmt->sa), | ||
1850 | print_mac(mac, mgmt->bssid)); | ||
1851 | return; | 1834 | return; |
1852 | } | ||
1853 | 1835 | ||
1854 | auth_alg = le16_to_cpu(mgmt->u.auth.auth_alg); | 1836 | auth_alg = le16_to_cpu(mgmt->u.auth.auth_alg); |
1855 | auth_transaction = le16_to_cpu(mgmt->u.auth.auth_transaction); | 1837 | auth_transaction = le16_to_cpu(mgmt->u.auth.auth_transaction); |
1856 | status_code = le16_to_cpu(mgmt->u.auth.status_code); | 1838 | status_code = le16_to_cpu(mgmt->u.auth.status_code); |
1857 | 1839 | ||
1858 | printk(KERN_DEBUG "%s: RX authentication from %s (alg=%d " | ||
1859 | "transaction=%d status=%d)\n", | ||
1860 | dev->name, print_mac(mac, mgmt->sa), auth_alg, | ||
1861 | auth_transaction, status_code); | ||
1862 | |||
1863 | if (sdata->vif.type == IEEE80211_IF_TYPE_IBSS) { | 1840 | if (sdata->vif.type == IEEE80211_IF_TYPE_IBSS) { |
1864 | /* | 1841 | /* |
1865 | * IEEE 802.11 standard does not require authentication in IBSS | 1842 | * IEEE 802.11 standard does not require authentication in IBSS |
@@ -1867,26 +1844,16 @@ static void ieee80211_rx_mgmt_auth(struct net_device *dev, | |||
1867 | * However, try to reply to authentication attempts if someone | 1844 | * However, try to reply to authentication attempts if someone |
1868 | * has actually implemented this. | 1845 | * has actually implemented this. |
1869 | */ | 1846 | */ |
1870 | if (auth_alg != WLAN_AUTH_OPEN || auth_transaction != 1) { | 1847 | if (auth_alg != WLAN_AUTH_OPEN || auth_transaction != 1) |
1871 | printk(KERN_DEBUG "%s: unexpected IBSS authentication " | ||
1872 | "frame (alg=%d transaction=%d)\n", | ||
1873 | dev->name, auth_alg, auth_transaction); | ||
1874 | return; | 1848 | return; |
1875 | } | ||
1876 | ieee80211_send_auth(dev, ifsta, 2, NULL, 0, 0); | 1849 | ieee80211_send_auth(dev, ifsta, 2, NULL, 0, 0); |
1877 | } | 1850 | } |
1878 | 1851 | ||
1879 | if (auth_alg != ifsta->auth_alg || | 1852 | if (auth_alg != ifsta->auth_alg || |
1880 | auth_transaction != ifsta->auth_transaction) { | 1853 | auth_transaction != ifsta->auth_transaction) |
1881 | printk(KERN_DEBUG "%s: unexpected authentication frame " | ||
1882 | "(alg=%d transaction=%d)\n", | ||
1883 | dev->name, auth_alg, auth_transaction); | ||
1884 | return; | 1854 | return; |
1885 | } | ||
1886 | 1855 | ||
1887 | if (status_code != WLAN_STATUS_SUCCESS) { | 1856 | if (status_code != WLAN_STATUS_SUCCESS) { |
1888 | printk(KERN_DEBUG "%s: AP denied authentication (auth_alg=%d " | ||
1889 | "code=%d)\n", dev->name, ifsta->auth_alg, status_code); | ||
1890 | if (status_code == WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG) { | 1857 | if (status_code == WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG) { |
1891 | u8 algs[3]; | 1858 | u8 algs[3]; |
1892 | const int num_algs = ARRAY_SIZE(algs); | 1859 | const int num_algs = ARRAY_SIZE(algs); |
@@ -1915,9 +1882,6 @@ static void ieee80211_rx_mgmt_auth(struct net_device *dev, | |||
1915 | !ieee80211_sta_wep_configured(dev)) | 1882 | !ieee80211_sta_wep_configured(dev)) |
1916 | continue; | 1883 | continue; |
1917 | ifsta->auth_alg = algs[pos]; | 1884 | ifsta->auth_alg = algs[pos]; |
1918 | printk(KERN_DEBUG "%s: set auth_alg=%d for " | ||
1919 | "next try\n", | ||
1920 | dev->name, ifsta->auth_alg); | ||
1921 | break; | 1885 | break; |
1922 | } | 1886 | } |
1923 | } | 1887 | } |
@@ -1947,27 +1911,14 @@ static void ieee80211_rx_mgmt_deauth(struct net_device *dev, | |||
1947 | u16 reason_code; | 1911 | u16 reason_code; |
1948 | DECLARE_MAC_BUF(mac); | 1912 | DECLARE_MAC_BUF(mac); |
1949 | 1913 | ||
1950 | if (len < 24 + 2) { | 1914 | if (len < 24 + 2) |
1951 | printk(KERN_DEBUG "%s: too short (%zd) deauthentication frame " | ||
1952 | "received from %s - ignored\n", | ||
1953 | dev->name, len, print_mac(mac, mgmt->sa)); | ||
1954 | return; | 1915 | return; |
1955 | } | ||
1956 | 1916 | ||
1957 | if (memcmp(ifsta->bssid, mgmt->sa, ETH_ALEN) != 0) { | 1917 | if (memcmp(ifsta->bssid, mgmt->sa, ETH_ALEN)) |
1958 | printk(KERN_DEBUG "%s: deauthentication frame received from " | ||
1959 | "unknown AP (SA=%s BSSID=%s) - " | ||
1960 | "ignored\n", dev->name, print_mac(mac, mgmt->sa), | ||
1961 | print_mac(mac, mgmt->bssid)); | ||
1962 | return; | 1918 | return; |
1963 | } | ||
1964 | 1919 | ||
1965 | reason_code = le16_to_cpu(mgmt->u.deauth.reason_code); | 1920 | reason_code = le16_to_cpu(mgmt->u.deauth.reason_code); |
1966 | 1921 | ||
1967 | printk(KERN_DEBUG "%s: RX deauthentication from %s" | ||
1968 | " (reason=%d)\n", | ||
1969 | dev->name, print_mac(mac, mgmt->sa), reason_code); | ||
1970 | |||
1971 | if (ifsta->flags & IEEE80211_STA_AUTHENTICATED) | 1922 | if (ifsta->flags & IEEE80211_STA_AUTHENTICATED) |
1972 | printk(KERN_DEBUG "%s: deauthenticated\n", dev->name); | 1923 | printk(KERN_DEBUG "%s: deauthenticated\n", dev->name); |
1973 | 1924 | ||
@@ -1992,27 +1943,14 @@ static void ieee80211_rx_mgmt_disassoc(struct net_device *dev, | |||
1992 | u16 reason_code; | 1943 | u16 reason_code; |
1993 | DECLARE_MAC_BUF(mac); | 1944 | DECLARE_MAC_BUF(mac); |
1994 | 1945 | ||
1995 | if (len < 24 + 2) { | 1946 | if (len < 24 + 2) |
1996 | printk(KERN_DEBUG "%s: too short (%zd) disassociation frame " | ||
1997 | "received from %s - ignored\n", | ||
1998 | dev->name, len, print_mac(mac, mgmt->sa)); | ||
1999 | return; | 1947 | return; |
2000 | } | ||
2001 | 1948 | ||
2002 | if (memcmp(ifsta->bssid, mgmt->sa, ETH_ALEN) != 0) { | 1949 | if (memcmp(ifsta->bssid, mgmt->sa, ETH_ALEN)) |
2003 | printk(KERN_DEBUG "%s: disassociation frame received from " | ||
2004 | "unknown AP (SA=%s BSSID=%s) - " | ||
2005 | "ignored\n", dev->name, print_mac(mac, mgmt->sa), | ||
2006 | print_mac(mac, mgmt->bssid)); | ||
2007 | return; | 1950 | return; |
2008 | } | ||
2009 | 1951 | ||
2010 | reason_code = le16_to_cpu(mgmt->u.disassoc.reason_code); | 1952 | reason_code = le16_to_cpu(mgmt->u.disassoc.reason_code); |
2011 | 1953 | ||
2012 | printk(KERN_DEBUG "%s: RX disassociation from %s" | ||
2013 | " (reason=%d)\n", | ||
2014 | dev->name, print_mac(mac, mgmt->sa), reason_code); | ||
2015 | |||
2016 | if (ifsta->flags & IEEE80211_STA_ASSOCIATED) | 1954 | if (ifsta->flags & IEEE80211_STA_ASSOCIATED) |
2017 | printk(KERN_DEBUG "%s: disassociated\n", dev->name); | 1955 | printk(KERN_DEBUG "%s: disassociated\n", dev->name); |
2018 | 1956 | ||
@@ -2048,27 +1986,14 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata, | |||
2048 | /* AssocResp and ReassocResp have identical structure, so process both | 1986 | /* AssocResp and ReassocResp have identical structure, so process both |
2049 | * of them in this function. */ | 1987 | * of them in this function. */ |
2050 | 1988 | ||
2051 | if (ifsta->state != IEEE80211_ASSOCIATE) { | 1989 | if (ifsta->state != IEEE80211_ASSOCIATE) |
2052 | printk(KERN_DEBUG "%s: association frame received from " | ||
2053 | "%s, but not in associate state - ignored\n", | ||
2054 | dev->name, print_mac(mac, mgmt->sa)); | ||
2055 | return; | 1990 | return; |
2056 | } | ||
2057 | 1991 | ||
2058 | if (len < 24 + 6) { | 1992 | if (len < 24 + 6) |
2059 | printk(KERN_DEBUG "%s: too short (%zd) association frame " | ||
2060 | "received from %s - ignored\n", | ||
2061 | dev->name, len, print_mac(mac, mgmt->sa)); | ||
2062 | return; | 1993 | return; |
2063 | } | ||
2064 | 1994 | ||
2065 | if (memcmp(ifsta->bssid, mgmt->sa, ETH_ALEN) != 0) { | 1995 | if (memcmp(ifsta->bssid, mgmt->sa, ETH_ALEN) != 0) |
2066 | printk(KERN_DEBUG "%s: association frame received from " | ||
2067 | "unknown AP (SA=%s BSSID=%s) - " | ||
2068 | "ignored\n", dev->name, print_mac(mac, mgmt->sa), | ||
2069 | print_mac(mac, mgmt->bssid)); | ||
2070 | return; | 1996 | return; |
2071 | } | ||
2072 | 1997 | ||
2073 | capab_info = le16_to_cpu(mgmt->u.assoc_resp.capab_info); | 1998 | capab_info = le16_to_cpu(mgmt->u.assoc_resp.capab_info); |
2074 | status_code = le16_to_cpu(mgmt->u.assoc_resp.status_code); | 1999 | status_code = le16_to_cpu(mgmt->u.assoc_resp.status_code); |
@@ -2663,12 +2588,6 @@ static void ieee80211_rx_bss_info(struct net_device *dev, | |||
2663 | if (!beacon && memcmp(mgmt->da, dev->dev_addr, ETH_ALEN)) | 2588 | if (!beacon && memcmp(mgmt->da, dev->dev_addr, ETH_ALEN)) |
2664 | return; /* ignore ProbeResp to foreign address */ | 2589 | return; /* ignore ProbeResp to foreign address */ |
2665 | 2590 | ||
2666 | #if 0 | ||
2667 | printk(KERN_DEBUG "%s: RX %s from %s to %s\n", | ||
2668 | dev->name, beacon ? "Beacon" : "Probe Response", | ||
2669 | print_mac(mac, mgmt->sa), print_mac(mac2, mgmt->da)); | ||
2670 | #endif | ||
2671 | |||
2672 | beacon_timestamp = le64_to_cpu(mgmt->u.beacon.timestamp); | 2591 | beacon_timestamp = le64_to_cpu(mgmt->u.beacon.timestamp); |
2673 | 2592 | ||
2674 | if (ieee80211_vif_is_mesh(&sdata->vif) && elems->mesh_id && | 2593 | if (ieee80211_vif_is_mesh(&sdata->vif) && elems->mesh_id && |
@@ -2698,15 +2617,6 @@ static void ieee80211_rx_bss_info(struct net_device *dev, | |||
2698 | sta->supp_rates[rx_status->band] = | 2617 | sta->supp_rates[rx_status->band] = |
2699 | sdata->u.sta.supp_rates_bits[rx_status->band]; | 2618 | sdata->u.sta.supp_rates_bits[rx_status->band]; |
2700 | } | 2619 | } |
2701 | if (sta->supp_rates[rx_status->band] != prev_rates) { | ||
2702 | printk(KERN_DEBUG "%s: updated supp_rates set for " | ||
2703 | "%s based on beacon info (0x%llx & 0x%llx -> " | ||
2704 | "0x%llx)\n", | ||
2705 | dev->name, print_mac(mac, sta->addr), | ||
2706 | (unsigned long long) prev_rates, | ||
2707 | (unsigned long long) supp_rates, | ||
2708 | (unsigned long long) sta->supp_rates[rx_status->band]); | ||
2709 | } | ||
2710 | } | 2620 | } |
2711 | 2621 | ||
2712 | rcu_read_unlock(); | 2622 | rcu_read_unlock(); |
@@ -2962,11 +2872,10 @@ static void ieee80211_rx_bss_info(struct net_device *dev, | |||
2962 | #endif /* CONFIG_MAC80211_IBSS_DEBUG */ | 2872 | #endif /* CONFIG_MAC80211_IBSS_DEBUG */ |
2963 | if (beacon_timestamp > rx_timestamp) { | 2873 | if (beacon_timestamp > rx_timestamp) { |
2964 | #ifndef CONFIG_MAC80211_IBSS_DEBUG | 2874 | #ifndef CONFIG_MAC80211_IBSS_DEBUG |
2965 | if (net_ratelimit()) | 2875 | printk(KERN_DEBUG "%s: beacon TSF higher than " |
2876 | "local TSF - IBSS merge with BSSID %s\n", | ||
2877 | dev->name, print_mac(mac, mgmt->bssid)); | ||
2966 | #endif | 2878 | #endif |
2967 | printk(KERN_DEBUG "%s: beacon TSF higher than " | ||
2968 | "local TSF - IBSS merge with BSSID %s\n", | ||
2969 | dev->name, print_mac(mac, mgmt->bssid)); | ||
2970 | ieee80211_sta_join_ibss(dev, &sdata->u.sta, bss); | 2879 | ieee80211_sta_join_ibss(dev, &sdata->u.sta, bss); |
2971 | ieee80211_ibss_add_sta(dev, NULL, | 2880 | ieee80211_ibss_add_sta(dev, NULL, |
2972 | mgmt->bssid, mgmt->sa, | 2881 | mgmt->bssid, mgmt->sa, |
@@ -3106,11 +3015,11 @@ static void ieee80211_rx_mgmt_probe_req(struct net_device *dev, | |||
3106 | pos = mgmt->u.probe_req.variable; | 3015 | pos = mgmt->u.probe_req.variable; |
3107 | if (pos[0] != WLAN_EID_SSID || | 3016 | if (pos[0] != WLAN_EID_SSID || |
3108 | pos + 2 + pos[1] > end) { | 3017 | pos + 2 + pos[1] > end) { |
3109 | if (net_ratelimit()) { | 3018 | #ifdef CONFIG_MAC80211_IBSS_DEBUG |
3110 | printk(KERN_DEBUG "%s: Invalid SSID IE in ProbeReq " | 3019 | printk(KERN_DEBUG "%s: Invalid SSID IE in ProbeReq " |
3111 | "from %s\n", | 3020 | "from %s\n", |
3112 | dev->name, print_mac(mac, mgmt->sa)); | 3021 | dev->name, print_mac(mac, mgmt->sa)); |
3113 | } | 3022 | #endif |
3114 | return; | 3023 | return; |
3115 | } | 3024 | } |
3116 | if (pos[1] != 0 && | 3025 | if (pos[1] != 0 && |
@@ -3179,11 +3088,6 @@ static void ieee80211_rx_mgmt_action(struct net_device *dev, | |||
3179 | break; | 3088 | break; |
3180 | ieee80211_sta_process_delba(dev, mgmt, len); | 3089 | ieee80211_sta_process_delba(dev, mgmt, len); |
3181 | break; | 3090 | break; |
3182 | default: | ||
3183 | if (net_ratelimit()) | ||
3184 | printk(KERN_DEBUG "%s: Rx unknown A-MPDU action\n", | ||
3185 | dev->name); | ||
3186 | break; | ||
3187 | } | 3091 | } |
3188 | break; | 3092 | break; |
3189 | case PLINK_CATEGORY: | 3093 | case PLINK_CATEGORY: |
@@ -3194,11 +3098,6 @@ static void ieee80211_rx_mgmt_action(struct net_device *dev, | |||
3194 | if (ieee80211_vif_is_mesh(&sdata->vif)) | 3098 | if (ieee80211_vif_is_mesh(&sdata->vif)) |
3195 | mesh_rx_path_sel_frame(dev, mgmt, len); | 3099 | mesh_rx_path_sel_frame(dev, mgmt, len); |
3196 | break; | 3100 | break; |
3197 | default: | ||
3198 | if (net_ratelimit()) | ||
3199 | printk(KERN_DEBUG "%s: Rx unknown action frame - " | ||
3200 | "category=%d\n", dev->name, mgmt->u.action.category); | ||
3201 | break; | ||
3202 | } | 3101 | } |
3203 | } | 3102 | } |
3204 | 3103 | ||
@@ -3234,11 +3133,6 @@ void ieee80211_sta_rx_mgmt(struct net_device *dev, struct sk_buff *skb, | |||
3234 | skb_queue_tail(&ifsta->skb_queue, skb); | 3133 | skb_queue_tail(&ifsta->skb_queue, skb); |
3235 | queue_work(local->hw.workqueue, &ifsta->work); | 3134 | queue_work(local->hw.workqueue, &ifsta->work); |
3236 | return; | 3135 | return; |
3237 | default: | ||
3238 | printk(KERN_DEBUG "%s: received unknown management frame - " | ||
3239 | "stype=%d\n", dev->name, | ||
3240 | (fc & IEEE80211_FCTL_STYPE) >> 4); | ||
3241 | break; | ||
3242 | } | 3136 | } |
3243 | 3137 | ||
3244 | fail: | 3138 | fail: |
@@ -3367,8 +3261,10 @@ static void ieee80211_sta_expire(struct net_device *dev, unsigned long exp_time) | |||
3367 | spin_lock_irqsave(&local->sta_lock, flags); | 3261 | spin_lock_irqsave(&local->sta_lock, flags); |
3368 | list_for_each_entry_safe(sta, tmp, &local->sta_list, list) | 3262 | list_for_each_entry_safe(sta, tmp, &local->sta_list, list) |
3369 | if (time_after(jiffies, sta->last_rx + exp_time)) { | 3263 | if (time_after(jiffies, sta->last_rx + exp_time)) { |
3264 | #ifdef CONFIG_MAC80211_IBSS_DEBUG | ||
3370 | printk(KERN_DEBUG "%s: expiring inactive STA %s\n", | 3265 | printk(KERN_DEBUG "%s: expiring inactive STA %s\n", |
3371 | dev->name, print_mac(mac, sta->addr)); | 3266 | dev->name, print_mac(mac, sta->addr)); |
3267 | #endif | ||
3372 | __sta_info_unlink(&sta); | 3268 | __sta_info_unlink(&sta); |
3373 | if (sta) | 3269 | if (sta) |
3374 | list_add(&sta->list, &tmp_list); | 3270 | list_add(&sta->list, &tmp_list); |
@@ -3451,13 +3347,10 @@ void ieee80211_sta_work(struct work_struct *work) | |||
3451 | if (local->sta_sw_scanning || local->sta_hw_scanning) | 3347 | if (local->sta_sw_scanning || local->sta_hw_scanning) |
3452 | return; | 3348 | return; |
3453 | 3349 | ||
3454 | if (sdata->vif.type != IEEE80211_IF_TYPE_STA && | 3350 | if (WARN_ON(sdata->vif.type != IEEE80211_IF_TYPE_STA && |
3455 | sdata->vif.type != IEEE80211_IF_TYPE_IBSS && | 3351 | sdata->vif.type != IEEE80211_IF_TYPE_IBSS && |
3456 | sdata->vif.type != IEEE80211_IF_TYPE_MESH_POINT) { | 3352 | sdata->vif.type != IEEE80211_IF_TYPE_MESH_POINT)) |
3457 | printk(KERN_DEBUG "%s: ieee80211_sta_work: non-STA interface " | ||
3458 | "(type=%d)\n", dev->name, sdata->vif.type); | ||
3459 | return; | 3353 | return; |
3460 | } | ||
3461 | ifsta = &sdata->u.sta; | 3354 | ifsta = &sdata->u.sta; |
3462 | 3355 | ||
3463 | while ((skb = skb_dequeue(&ifsta->skb_queue))) | 3356 | while ((skb = skb_dequeue(&ifsta->skb_queue))) |
@@ -3511,8 +3404,7 @@ void ieee80211_sta_work(struct work_struct *work) | |||
3511 | break; | 3404 | break; |
3512 | #endif | 3405 | #endif |
3513 | default: | 3406 | default: |
3514 | printk(KERN_DEBUG "ieee80211_sta_work: Unknown state %d\n", | 3407 | WARN_ON(1); |
3515 | ifsta->state); | ||
3516 | break; | 3408 | break; |
3517 | } | 3409 | } |
3518 | 3410 | ||
@@ -3547,8 +3439,6 @@ static void ieee80211_sta_reset_auth(struct net_device *dev, | |||
3547 | ifsta->auth_alg = WLAN_AUTH_LEAP; | 3439 | ifsta->auth_alg = WLAN_AUTH_LEAP; |
3548 | else | 3440 | else |
3549 | ifsta->auth_alg = WLAN_AUTH_OPEN; | 3441 | ifsta->auth_alg = WLAN_AUTH_OPEN; |
3550 | printk(KERN_DEBUG "%s: Initial auth_alg=%d\n", dev->name, | ||
3551 | ifsta->auth_alg); | ||
3552 | ifsta->auth_transaction = -1; | 3442 | ifsta->auth_transaction = -1; |
3553 | ifsta->flags &= ~IEEE80211_STA_ASSOCIATED; | 3443 | ifsta->flags &= ~IEEE80211_STA_ASSOCIATED; |
3554 | ifsta->auth_tries = ifsta->assoc_tries = 0; | 3444 | ifsta->auth_tries = ifsta->assoc_tries = 0; |
@@ -4474,8 +4364,10 @@ struct sta_info *ieee80211_ibss_add_sta(struct net_device *dev, | |||
4474 | if (!ieee80211_bssid_match(bssid, sdata->u.sta.bssid)) | 4364 | if (!ieee80211_bssid_match(bssid, sdata->u.sta.bssid)) |
4475 | return NULL; | 4365 | return NULL; |
4476 | 4366 | ||
4367 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG | ||
4477 | printk(KERN_DEBUG "%s: Adding new IBSS station %s (dev=%s)\n", | 4368 | printk(KERN_DEBUG "%s: Adding new IBSS station %s (dev=%s)\n", |
4478 | wiphy_name(local->hw.wiphy), print_mac(mac, addr), dev->name); | 4369 | wiphy_name(local->hw.wiphy), print_mac(mac, addr), dev->name); |
4370 | #endif | ||
4479 | 4371 | ||
4480 | sta = sta_info_alloc(sdata, addr, GFP_ATOMIC); | 4372 | sta = sta_info_alloc(sdata, addr, GFP_ATOMIC); |
4481 | if (!sta) | 4373 | if (!sta) |
@@ -4502,7 +4394,7 @@ int ieee80211_sta_deauthenticate(struct net_device *dev, u16 reason) | |||
4502 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); | 4394 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); |
4503 | struct ieee80211_if_sta *ifsta = &sdata->u.sta; | 4395 | struct ieee80211_if_sta *ifsta = &sdata->u.sta; |
4504 | 4396 | ||
4505 | printk(KERN_DEBUG "%s: deauthenticate(reason=%d)\n", | 4397 | printk(KERN_DEBUG "%s: deauthenticating by local choice (reason=%d)\n", |
4506 | dev->name, reason); | 4398 | dev->name, reason); |
4507 | 4399 | ||
4508 | if (sdata->vif.type != IEEE80211_IF_TYPE_STA && | 4400 | if (sdata->vif.type != IEEE80211_IF_TYPE_STA && |
@@ -4520,7 +4412,7 @@ int ieee80211_sta_disassociate(struct net_device *dev, u16 reason) | |||
4520 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); | 4412 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); |
4521 | struct ieee80211_if_sta *ifsta = &sdata->u.sta; | 4413 | struct ieee80211_if_sta *ifsta = &sdata->u.sta; |
4522 | 4414 | ||
4523 | printk(KERN_DEBUG "%s: disassociate(reason=%d)\n", | 4415 | printk(KERN_DEBUG "%s: disassociating by local choice (reason=%d)\n", |
4524 | dev->name, reason); | 4416 | dev->name, reason); |
4525 | 4417 | ||
4526 | if (sdata->vif.type != IEEE80211_IF_TYPE_STA) | 4418 | if (sdata->vif.type != IEEE80211_IF_TYPE_STA) |