aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-08-30 02:06:00 -0400
committerDavid S. Miller <davem@davemloft.net>2008-08-30 02:06:00 -0400
commitb171e19ed08c8ba832e5325fadf1be493f56665d (patch)
tree017208f9fcc4ef2cc3fe5cc3f262d2455eda9f61 /net/mac80211
parent143b11c03cd42f2284efe5128afc057d8fc86c78 (diff)
parent7c19a3d280297d43ef5ff7c6b205dc208a16d3d1 (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: net/mac80211/mlme.c
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/debugfs_netdev.c24
-rw-r--r--net/mac80211/ieee80211_i.h6
-rw-r--r--net/mac80211/mesh.c2
-rw-r--r--net/mac80211/mlme.c52
4 files changed, 30 insertions, 54 deletions
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,
248static void add_sta_files(struct ieee80211_sub_if_data *sdata) 248static 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)
283static void add_wds_files(struct ieee80211_sub_if_data *sdata) 283static 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)
292static void add_vlan_files(struct ieee80211_sub_if_data *sdata) 292static 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
299static void add_monitor_files(struct ieee80211_sub_if_data *sdata) 299static void add_monitor_files(struct ieee80211_sub_if_data *sdata)
@@ -381,8 +381,8 @@ static void add_files(struct ieee80211_sub_if_data *sdata)
381static void del_sta_files(struct ieee80211_sub_if_data *sdata) 381static 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)
416static void del_wds_files(struct ieee80211_sub_if_data *sdata) 416static 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)
425static void del_vlan_files(struct ieee80211_sub_if_data *sdata) 425static 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
432static void del_monitor_files(struct ieee80211_sub_if_data *sdata) 432static 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 2bb546744b94..570ae83c71b1 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -472,6 +472,8 @@ struct ieee80211_sub_if_data {
472 struct dentry *auth_transaction; 472 struct dentry *auth_transaction;
473 struct dentry *flags; 473 struct dentry *flags;
474 struct dentry *num_beacons_sta; 474 struct dentry *num_beacons_sta;
475 struct dentry *force_unicast_rateidx;
476 struct dentry *max_ratectrl_rateidx;
475 } sta; 477 } sta;
476 struct { 478 struct {
477 struct dentry *drop_unencrypted; 479 struct dentry *drop_unencrypted;
@@ -485,9 +487,13 @@ struct ieee80211_sub_if_data {
485 struct { 487 struct {
486 struct dentry *drop_unencrypted; 488 struct dentry *drop_unencrypted;
487 struct dentry *peer; 489 struct dentry *peer;
490 struct dentry *force_unicast_rateidx;
491 struct dentry *max_ratectrl_rateidx;
488 } wds; 492 } wds;
489 struct { 493 struct {
490 struct dentry *drop_unencrypted; 494 struct dentry *drop_unencrypted;
495 struct dentry *force_unicast_rateidx;
496 struct dentry *max_ratectrl_rateidx;
491 } vlan; 497 } vlan;
492 struct { 498 struct {
493 struct dentry *mode; 499 struct dentry *mode;
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
index b631703bcc82..3ccb3599c04f 100644
--- a/net/mac80211/mesh.c
+++ b/net/mac80211/mesh.c
@@ -376,7 +376,7 @@ errcopy:
376 hlist_for_each_safe(p, q, &newtbl->hash_buckets[i]) 376 hlist_for_each_safe(p, q, &newtbl->hash_buckets[i])
377 tbl->free_node(p, 0); 377 tbl->free_node(p, 0);
378 } 378 }
379 __mesh_table_free(tbl); 379 __mesh_table_free(newtbl);
380endgrow: 380endgrow:
381 return NULL; 381 return NULL;
382} 382}
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index e088b440aafa..7d53382f1a5b 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -500,51 +500,21 @@ int ieee80211_ht_addt_info_ie_to_ht_bss_info(
500static void ieee80211_sta_send_associnfo(struct ieee80211_sub_if_data *sdata, 500static void ieee80211_sta_send_associnfo(struct ieee80211_sub_if_data *sdata,
501 struct ieee80211_if_sta *ifsta) 501 struct ieee80211_if_sta *ifsta)
502{ 502{
503 char *buf;
504 size_t len;
505 int i;
506 union iwreq_data wrqu; 503 union iwreq_data wrqu;
507 504
508 if (!ifsta->assocreq_ies && !ifsta->assocresp_ies)
509 return;
510
511 buf = kmalloc(50 + 2 * (ifsta->assocreq_ies_len +
512 ifsta->assocresp_ies_len), GFP_KERNEL);
513 if (!buf)
514 return;
515
516 len = sprintf(buf, "ASSOCINFO(");
517 if (ifsta->assocreq_ies) { 505 if (ifsta->assocreq_ies) {
518 len += sprintf(buf + len, "ReqIEs="); 506 memset(&wrqu, 0, sizeof(wrqu));
519 for (i = 0; i < ifsta->assocreq_ies_len; i++) { 507 wrqu.data.length = ifsta->assocreq_ies_len;
520 len += sprintf(buf + len, "%02x", 508 wireless_send_event(sdata->dev, IWEVASSOCREQIE, &wrqu,
521 ifsta->assocreq_ies[i]); 509 ifsta->assocreq_ies);
522 }
523 } 510 }
524 if (ifsta->assocresp_ies) {
525 if (ifsta->assocreq_ies)
526 len += sprintf(buf + len, " ");
527 len += sprintf(buf + len, "RespIEs=");
528 for (i = 0; i < ifsta->assocresp_ies_len; i++) {
529 len += sprintf(buf + len, "%02x",
530 ifsta->assocresp_ies[i]);
531 }
532 }
533 len += sprintf(buf + len, ")");
534 511
535 if (len > IW_CUSTOM_MAX) { 512 if (ifsta->assocresp_ies) {
536 len = sprintf(buf, "ASSOCRESPIE="); 513 memset(&wrqu, 0, sizeof(wrqu));
537 for (i = 0; i < ifsta->assocresp_ies_len; i++) { 514 wrqu.data.length = ifsta->assocresp_ies_len;
538 len += sprintf(buf + len, "%02x", 515 wireless_send_event(sdata->dev, IWEVASSOCRESPIE, &wrqu,
539 ifsta->assocresp_ies[i]); 516 ifsta->assocresp_ies);
540 }
541 } 517 }
542
543 memset(&wrqu, 0, sizeof(wrqu));
544 wrqu.data.length = len;
545 wireless_send_event(sdata->dev, IWEVCUSTOM, &wrqu, buf);
546
547 kfree(buf);
548} 518}
549 519
550 520
@@ -864,7 +834,7 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata,
864 } 834 }
865 } 835 }
866 836
867 if (count == 8) { 837 if (rates_len > count) {
868 pos = skb_put(skb, rates_len - count + 2); 838 pos = skb_put(skb, rates_len - count + 2);
869 *pos++ = WLAN_EID_EXT_SUPP_RATES; 839 *pos++ = WLAN_EID_EXT_SUPP_RATES;
870 *pos++ = rates_len - count; 840 *pos++ = rates_len - count;
@@ -2788,7 +2758,7 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
2788 jiffies); 2758 jiffies);
2789#endif /* CONFIG_MAC80211_IBSS_DEBUG */ 2759#endif /* CONFIG_MAC80211_IBSS_DEBUG */
2790 if (beacon_timestamp > rx_timestamp) { 2760 if (beacon_timestamp > rx_timestamp) {
2791#ifndef CONFIG_MAC80211_IBSS_DEBUG 2761#ifdef CONFIG_MAC80211_IBSS_DEBUG
2792 printk(KERN_DEBUG "%s: beacon TSF higher than " 2762 printk(KERN_DEBUG "%s: beacon TSF higher than "
2793 "local TSF - IBSS merge with BSSID %s\n", 2763 "local TSF - IBSS merge with BSSID %s\n",
2794 sdata->dev->name, print_mac(mac, mgmt->bssid)); 2764 sdata->dev->name, print_mac(mac, mgmt->bssid));