diff options
Diffstat (limited to 'net/mac80211')
| -rw-r--r-- | net/mac80211/debugfs_key.c | 6 | ||||
| -rw-r--r-- | net/mac80211/debugfs_netdev.c | 24 | ||||
| -rw-r--r-- | net/mac80211/ieee80211_i.h | 10 | ||||
| -rw-r--r-- | net/mac80211/mesh.c | 2 | ||||
| -rw-r--r-- | net/mac80211/mlme.c | 54 |
5 files changed, 38 insertions, 58 deletions
diff --git a/net/mac80211/debugfs_key.c b/net/mac80211/debugfs_key.c index 7439b63df5d0..cf82acec913a 100644 --- a/net/mac80211/debugfs_key.c +++ b/net/mac80211/debugfs_key.c | |||
| @@ -265,7 +265,7 @@ void ieee80211_debugfs_key_add_default(struct ieee80211_sub_if_data *sdata) | |||
| 265 | key = sdata->default_key; | 265 | key = sdata->default_key; |
| 266 | if (key) { | 266 | if (key) { |
| 267 | sprintf(buf, "../keys/%d", key->debugfs.cnt); | 267 | sprintf(buf, "../keys/%d", key->debugfs.cnt); |
| 268 | sdata->debugfs.default_key = | 268 | sdata->common_debugfs.default_key = |
| 269 | debugfs_create_symlink("default_key", | 269 | debugfs_create_symlink("default_key", |
| 270 | sdata->debugfsdir, buf); | 270 | sdata->debugfsdir, buf); |
| 271 | } else | 271 | } else |
| @@ -277,8 +277,8 @@ void ieee80211_debugfs_key_remove_default(struct ieee80211_sub_if_data *sdata) | |||
| 277 | if (!sdata) | 277 | if (!sdata) |
| 278 | return; | 278 | return; |
| 279 | 279 | ||
| 280 | debugfs_remove(sdata->debugfs.default_key); | 280 | debugfs_remove(sdata->common_debugfs.default_key); |
| 281 | sdata->debugfs.default_key = NULL; | 281 | sdata->common_debugfs.default_key = NULL; |
| 282 | } | 282 | } |
| 283 | 283 | ||
| 284 | void ieee80211_debugfs_key_sta_del(struct ieee80211_key *key, | 284 | void ieee80211_debugfs_key_sta_del(struct ieee80211_key *key, |
diff --git a/net/mac80211/debugfs_netdev.c b/net/mac80211/debugfs_netdev.c index 475f89a8aee1..8165df578c92 100644 --- a/net/mac80211/debugfs_netdev.c +++ b/net/mac80211/debugfs_netdev.c | |||
| @@ -248,8 +248,8 @@ IEEE80211_IF_WFILE(min_discovery_timeout, | |||
| 248 | static void add_sta_files(struct ieee80211_sub_if_data *sdata) | 248 | static void add_sta_files(struct ieee80211_sub_if_data *sdata) |
| 249 | { | 249 | { |
| 250 | DEBUGFS_ADD(drop_unencrypted, sta); | 250 | DEBUGFS_ADD(drop_unencrypted, sta); |
| 251 | DEBUGFS_ADD(force_unicast_rateidx, ap); | 251 | DEBUGFS_ADD(force_unicast_rateidx, sta); |
| 252 | DEBUGFS_ADD(max_ratectrl_rateidx, ap); | 252 | DEBUGFS_ADD(max_ratectrl_rateidx, sta); |
| 253 | 253 | ||
| 254 | DEBUGFS_ADD(state, sta); | 254 | DEBUGFS_ADD(state, sta); |
| 255 | DEBUGFS_ADD(bssid, sta); | 255 | DEBUGFS_ADD(bssid, sta); |
| @@ -283,8 +283,8 @@ static void add_ap_files(struct ieee80211_sub_if_data *sdata) | |||
| 283 | static void add_wds_files(struct ieee80211_sub_if_data *sdata) | 283 | static void add_wds_files(struct ieee80211_sub_if_data *sdata) |
| 284 | { | 284 | { |
| 285 | DEBUGFS_ADD(drop_unencrypted, wds); | 285 | DEBUGFS_ADD(drop_unencrypted, wds); |
| 286 | DEBUGFS_ADD(force_unicast_rateidx, ap); | 286 | DEBUGFS_ADD(force_unicast_rateidx, wds); |
| 287 | DEBUGFS_ADD(max_ratectrl_rateidx, ap); | 287 | DEBUGFS_ADD(max_ratectrl_rateidx, wds); |
| 288 | 288 | ||
| 289 | DEBUGFS_ADD(peer, wds); | 289 | DEBUGFS_ADD(peer, wds); |
| 290 | } | 290 | } |
| @@ -292,8 +292,8 @@ static void add_wds_files(struct ieee80211_sub_if_data *sdata) | |||
| 292 | static void add_vlan_files(struct ieee80211_sub_if_data *sdata) | 292 | static void add_vlan_files(struct ieee80211_sub_if_data *sdata) |
| 293 | { | 293 | { |
| 294 | DEBUGFS_ADD(drop_unencrypted, vlan); | 294 | DEBUGFS_ADD(drop_unencrypted, vlan); |
| 295 | DEBUGFS_ADD(force_unicast_rateidx, ap); | 295 | DEBUGFS_ADD(force_unicast_rateidx, vlan); |
| 296 | DEBUGFS_ADD(max_ratectrl_rateidx, ap); | 296 | DEBUGFS_ADD(max_ratectrl_rateidx, vlan); |
| 297 | } | 297 | } |
| 298 | 298 | ||
| 299 | static void add_monitor_files(struct ieee80211_sub_if_data *sdata) | 299 | static void add_monitor_files(struct ieee80211_sub_if_data *sdata) |
| @@ -381,8 +381,8 @@ static void add_files(struct ieee80211_sub_if_data *sdata) | |||
| 381 | static void del_sta_files(struct ieee80211_sub_if_data *sdata) | 381 | static void del_sta_files(struct ieee80211_sub_if_data *sdata) |
| 382 | { | 382 | { |
| 383 | DEBUGFS_DEL(drop_unencrypted, sta); | 383 | DEBUGFS_DEL(drop_unencrypted, sta); |
| 384 | DEBUGFS_DEL(force_unicast_rateidx, ap); | 384 | DEBUGFS_DEL(force_unicast_rateidx, sta); |
| 385 | DEBUGFS_DEL(max_ratectrl_rateidx, ap); | 385 | DEBUGFS_DEL(max_ratectrl_rateidx, sta); |
| 386 | 386 | ||
| 387 | DEBUGFS_DEL(state, sta); | 387 | DEBUGFS_DEL(state, sta); |
| 388 | DEBUGFS_DEL(bssid, sta); | 388 | DEBUGFS_DEL(bssid, sta); |
| @@ -416,8 +416,8 @@ static void del_ap_files(struct ieee80211_sub_if_data *sdata) | |||
| 416 | static void del_wds_files(struct ieee80211_sub_if_data *sdata) | 416 | static void del_wds_files(struct ieee80211_sub_if_data *sdata) |
| 417 | { | 417 | { |
| 418 | DEBUGFS_DEL(drop_unencrypted, wds); | 418 | DEBUGFS_DEL(drop_unencrypted, wds); |
| 419 | DEBUGFS_DEL(force_unicast_rateidx, ap); | 419 | DEBUGFS_DEL(force_unicast_rateidx, wds); |
| 420 | DEBUGFS_DEL(max_ratectrl_rateidx, ap); | 420 | DEBUGFS_DEL(max_ratectrl_rateidx, wds); |
| 421 | 421 | ||
| 422 | DEBUGFS_DEL(peer, wds); | 422 | DEBUGFS_DEL(peer, wds); |
| 423 | } | 423 | } |
| @@ -425,8 +425,8 @@ static void del_wds_files(struct ieee80211_sub_if_data *sdata) | |||
| 425 | static void del_vlan_files(struct ieee80211_sub_if_data *sdata) | 425 | static void del_vlan_files(struct ieee80211_sub_if_data *sdata) |
| 426 | { | 426 | { |
| 427 | DEBUGFS_DEL(drop_unencrypted, vlan); | 427 | DEBUGFS_DEL(drop_unencrypted, vlan); |
| 428 | DEBUGFS_DEL(force_unicast_rateidx, ap); | 428 | DEBUGFS_DEL(force_unicast_rateidx, vlan); |
| 429 | DEBUGFS_DEL(max_ratectrl_rateidx, ap); | 429 | DEBUGFS_DEL(max_ratectrl_rateidx, vlan); |
| 430 | } | 430 | } |
| 431 | 431 | ||
| 432 | static void del_monitor_files(struct ieee80211_sub_if_data *sdata) | 432 | static void del_monitor_files(struct ieee80211_sub_if_data *sdata) |
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index ec59345af65b..4498d8713652 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
| @@ -470,6 +470,8 @@ struct ieee80211_sub_if_data { | |||
| 470 | struct dentry *auth_transaction; | 470 | struct dentry *auth_transaction; |
| 471 | struct dentry *flags; | 471 | struct dentry *flags; |
| 472 | struct dentry *num_beacons_sta; | 472 | struct dentry *num_beacons_sta; |
| 473 | struct dentry *force_unicast_rateidx; | ||
| 474 | struct dentry *max_ratectrl_rateidx; | ||
| 473 | } sta; | 475 | } sta; |
| 474 | struct { | 476 | struct { |
| 475 | struct dentry *drop_unencrypted; | 477 | struct dentry *drop_unencrypted; |
| @@ -483,15 +485,21 @@ struct ieee80211_sub_if_data { | |||
| 483 | struct { | 485 | struct { |
| 484 | struct dentry *drop_unencrypted; | 486 | struct dentry *drop_unencrypted; |
| 485 | struct dentry *peer; | 487 | struct dentry *peer; |
| 488 | struct dentry *force_unicast_rateidx; | ||
| 489 | struct dentry *max_ratectrl_rateidx; | ||
| 486 | } wds; | 490 | } wds; |
| 487 | struct { | 491 | struct { |
| 488 | struct dentry *drop_unencrypted; | 492 | struct dentry *drop_unencrypted; |
| 493 | struct dentry *force_unicast_rateidx; | ||
| 494 | struct dentry *max_ratectrl_rateidx; | ||
| 489 | } vlan; | 495 | } vlan; |
| 490 | struct { | 496 | struct { |
| 491 | struct dentry *mode; | 497 | struct dentry *mode; |
| 492 | } monitor; | 498 | } monitor; |
| 493 | struct dentry *default_key; | ||
| 494 | } debugfs; | 499 | } debugfs; |
| 500 | struct { | ||
| 501 | struct dentry *default_key; | ||
| 502 | } common_debugfs; | ||
| 495 | 503 | ||
| 496 | #ifdef CONFIG_MAC80211_MESH | 504 | #ifdef CONFIG_MAC80211_MESH |
| 497 | struct dentry *mesh_stats_dir; | 505 | struct dentry *mesh_stats_dir; |
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c index b5933b271491..35f2f95f2fa7 100644 --- a/net/mac80211/mesh.c +++ b/net/mac80211/mesh.c | |||
| @@ -383,7 +383,7 @@ errcopy: | |||
| 383 | hlist_for_each_safe(p, q, &newtbl->hash_buckets[i]) | 383 | hlist_for_each_safe(p, q, &newtbl->hash_buckets[i]) |
| 384 | tbl->free_node(p, 0); | 384 | tbl->free_node(p, 0); |
| 385 | } | 385 | } |
| 386 | __mesh_table_free(tbl); | 386 | __mesh_table_free(newtbl); |
| 387 | endgrow: | 387 | endgrow: |
| 388 | return NULL; | 388 | return NULL; |
| 389 | } | 389 | } |
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index e1d11c9b6729..9bb68c6a8f44 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
| @@ -478,51 +478,21 @@ int ieee80211_ht_addt_info_ie_to_ht_bss_info( | |||
| 478 | static void ieee80211_sta_send_associnfo(struct net_device *dev, | 478 | static void ieee80211_sta_send_associnfo(struct net_device *dev, |
| 479 | struct ieee80211_if_sta *ifsta) | 479 | struct ieee80211_if_sta *ifsta) |
| 480 | { | 480 | { |
| 481 | char *buf; | ||
| 482 | size_t len; | ||
| 483 | int i; | ||
| 484 | union iwreq_data wrqu; | 481 | union iwreq_data wrqu; |
| 485 | 482 | ||
| 486 | if (!ifsta->assocreq_ies && !ifsta->assocresp_ies) | ||
| 487 | return; | ||
| 488 | |||
| 489 | buf = kmalloc(50 + 2 * (ifsta->assocreq_ies_len + | ||
| 490 | ifsta->assocresp_ies_len), GFP_KERNEL); | ||
| 491 | if (!buf) | ||
| 492 | return; | ||
| 493 | |||
| 494 | len = sprintf(buf, "ASSOCINFO("); | ||
| 495 | if (ifsta->assocreq_ies) { | 483 | if (ifsta->assocreq_ies) { |
| 496 | len += sprintf(buf + len, "ReqIEs="); | 484 | memset(&wrqu, 0, sizeof(wrqu)); |
| 497 | for (i = 0; i < ifsta->assocreq_ies_len; i++) { | 485 | wrqu.data.length = ifsta->assocreq_ies_len; |
| 498 | len += sprintf(buf + len, "%02x", | 486 | wireless_send_event(dev, IWEVASSOCREQIE, &wrqu, |
| 499 | ifsta->assocreq_ies[i]); | 487 | ifsta->assocreq_ies); |
| 500 | } | ||
| 501 | } | 488 | } |
| 502 | if (ifsta->assocresp_ies) { | ||
| 503 | if (ifsta->assocreq_ies) | ||
| 504 | len += sprintf(buf + len, " "); | ||
| 505 | len += sprintf(buf + len, "RespIEs="); | ||
| 506 | for (i = 0; i < ifsta->assocresp_ies_len; i++) { | ||
| 507 | len += sprintf(buf + len, "%02x", | ||
| 508 | ifsta->assocresp_ies[i]); | ||
| 509 | } | ||
| 510 | } | ||
| 511 | len += sprintf(buf + len, ")"); | ||
| 512 | 489 | ||
| 513 | if (len > IW_CUSTOM_MAX) { | 490 | if (ifsta->assocresp_ies) { |
| 514 | len = sprintf(buf, "ASSOCRESPIE="); | 491 | memset(&wrqu, 0, sizeof(wrqu)); |
| 515 | for (i = 0; i < ifsta->assocresp_ies_len; i++) { | 492 | wrqu.data.length = ifsta->assocresp_ies_len; |
| 516 | len += sprintf(buf + len, "%02x", | 493 | wireless_send_event(dev, IWEVASSOCRESPIE, &wrqu, |
| 517 | ifsta->assocresp_ies[i]); | 494 | ifsta->assocresp_ies); |
| 518 | } | ||
| 519 | } | 495 | } |
| 520 | |||
| 521 | memset(&wrqu, 0, sizeof(wrqu)); | ||
| 522 | wrqu.data.length = len; | ||
| 523 | wireless_send_event(dev, IWEVCUSTOM, &wrqu, buf); | ||
| 524 | |||
| 525 | kfree(buf); | ||
| 526 | } | 496 | } |
| 527 | 497 | ||
| 528 | 498 | ||
| @@ -813,7 +783,7 @@ static void ieee80211_send_assoc(struct net_device *dev, | |||
| 813 | } | 783 | } |
| 814 | } | 784 | } |
| 815 | 785 | ||
| 816 | if (count == 8) { | 786 | if (rates_len > count) { |
| 817 | pos = skb_put(skb, rates_len - count + 2); | 787 | pos = skb_put(skb, rates_len - count + 2); |
| 818 | *pos++ = WLAN_EID_EXT_SUPP_RATES; | 788 | *pos++ = WLAN_EID_EXT_SUPP_RATES; |
| 819 | *pos++ = rates_len - count; | 789 | *pos++ = rates_len - count; |
| @@ -2103,6 +2073,8 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata, | |||
| 2103 | rcu_read_unlock(); | 2073 | rcu_read_unlock(); |
| 2104 | return; | 2074 | return; |
| 2105 | } | 2075 | } |
| 2076 | /* update new sta with its last rx activity */ | ||
| 2077 | sta->last_rx = jiffies; | ||
| 2106 | } | 2078 | } |
| 2107 | 2079 | ||
| 2108 | /* | 2080 | /* |
| @@ -2866,7 +2838,7 @@ static void ieee80211_rx_bss_info(struct net_device *dev, | |||
| 2866 | jiffies); | 2838 | jiffies); |
| 2867 | #endif /* CONFIG_MAC80211_IBSS_DEBUG */ | 2839 | #endif /* CONFIG_MAC80211_IBSS_DEBUG */ |
| 2868 | if (beacon_timestamp > rx_timestamp) { | 2840 | if (beacon_timestamp > rx_timestamp) { |
| 2869 | #ifndef CONFIG_MAC80211_IBSS_DEBUG | 2841 | #ifdef CONFIG_MAC80211_IBSS_DEBUG |
| 2870 | printk(KERN_DEBUG "%s: beacon TSF higher than " | 2842 | printk(KERN_DEBUG "%s: beacon TSF higher than " |
| 2871 | "local TSF - IBSS merge with BSSID %s\n", | 2843 | "local TSF - IBSS merge with BSSID %s\n", |
| 2872 | dev->name, print_mac(mac, mgmt->bssid)); | 2844 | dev->name, print_mac(mac, mgmt->bssid)); |
