aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-03-27 22:15:01 -0400
committerDavid S. Miller <davem@davemloft.net>2012-03-27 22:15:01 -0400
commit7dd30d447b7f4a129586cce8e57d0163dde876b0 (patch)
treef6a3c26bccbd31e144c8c68fda979988739d4af5 /net
parentde8856d2c11f562c60ed9340a83db4a4f829a6e6 (diff)
parent643c61e119459e9d750087b7b34be94491efebf9 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/agg-rx.c3
-rw-r--r--net/mac80211/main.c3
-rw-r--r--net/wireless/nl80211.c29
3 files changed, 21 insertions, 14 deletions
diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c
index 1068f668ac4..64d3ce5ea1a 100644
--- a/net/mac80211/agg-rx.c
+++ b/net/mac80211/agg-rx.c
@@ -49,6 +49,8 @@ static void ieee80211_free_tid_rx(struct rcu_head *h)
49 container_of(h, struct tid_ampdu_rx, rcu_head); 49 container_of(h, struct tid_ampdu_rx, rcu_head);
50 int i; 50 int i;
51 51
52 del_timer_sync(&tid_rx->reorder_timer);
53
52 for (i = 0; i < tid_rx->buf_size; i++) 54 for (i = 0; i < tid_rx->buf_size; i++)
53 dev_kfree_skb(tid_rx->reorder_buf[i]); 55 dev_kfree_skb(tid_rx->reorder_buf[i]);
54 kfree(tid_rx->reorder_buf); 56 kfree(tid_rx->reorder_buf);
@@ -91,7 +93,6 @@ void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid,
91 tid, WLAN_BACK_RECIPIENT, reason); 93 tid, WLAN_BACK_RECIPIENT, reason);
92 94
93 del_timer_sync(&tid_rx->session_timer); 95 del_timer_sync(&tid_rx->session_timer);
94 del_timer_sync(&tid_rx->reorder_timer);
95 96
96 call_rcu(&tid_rx->rcu_head, ieee80211_free_tid_rx); 97 call_rcu(&tid_rx->rcu_head, ieee80211_free_tid_rx);
97} 98}
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index b581a24fa15..16336480c63 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -102,9 +102,6 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
102 102
103 might_sleep(); 103 might_sleep();
104 104
105 /* If this off-channel logic ever changes, ieee80211_on_oper_channel
106 * may need to change as well.
107 */
108 offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL; 105 offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL;
109 if (local->scan_channel) { 106 if (local->scan_channel) {
110 chan = local->scan_channel; 107 chan = local->scan_channel;
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 4c1eb9472dd..e49da279702 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -2386,7 +2386,9 @@ nla_put_failure:
2386} 2386}
2387 2387
2388static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq, 2388static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq,
2389 int flags, struct net_device *dev, 2389 int flags,
2390 struct cfg80211_registered_device *rdev,
2391 struct net_device *dev,
2390 const u8 *mac_addr, struct station_info *sinfo) 2392 const u8 *mac_addr, struct station_info *sinfo)
2391{ 2393{
2392 void *hdr; 2394 void *hdr;
@@ -2425,12 +2427,18 @@ static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq,
2425 if (sinfo->filled & STATION_INFO_PLINK_STATE) 2427 if (sinfo->filled & STATION_INFO_PLINK_STATE)
2426 NLA_PUT_U8(msg, NL80211_STA_INFO_PLINK_STATE, 2428 NLA_PUT_U8(msg, NL80211_STA_INFO_PLINK_STATE,
2427 sinfo->plink_state); 2429 sinfo->plink_state);
2428 if (sinfo->filled & STATION_INFO_SIGNAL) 2430 switch (rdev->wiphy.signal_type) {
2429 NLA_PUT_U8(msg, NL80211_STA_INFO_SIGNAL, 2431 case CFG80211_SIGNAL_TYPE_MBM:
2430 sinfo->signal); 2432 if (sinfo->filled & STATION_INFO_SIGNAL)
2431 if (sinfo->filled & STATION_INFO_SIGNAL_AVG) 2433 NLA_PUT_U8(msg, NL80211_STA_INFO_SIGNAL,
2432 NLA_PUT_U8(msg, NL80211_STA_INFO_SIGNAL_AVG, 2434 sinfo->signal);
2433 sinfo->signal_avg); 2435 if (sinfo->filled & STATION_INFO_SIGNAL_AVG)
2436 NLA_PUT_U8(msg, NL80211_STA_INFO_SIGNAL_AVG,
2437 sinfo->signal_avg);
2438 break;
2439 default:
2440 break;
2441 }
2434 if (sinfo->filled & STATION_INFO_TX_BITRATE) { 2442 if (sinfo->filled & STATION_INFO_TX_BITRATE) {
2435 if (!nl80211_put_sta_rate(msg, &sinfo->txrate, 2443 if (!nl80211_put_sta_rate(msg, &sinfo->txrate,
2436 NL80211_STA_INFO_TX_BITRATE)) 2444 NL80211_STA_INFO_TX_BITRATE))
@@ -2523,7 +2531,7 @@ static int nl80211_dump_station(struct sk_buff *skb,
2523 if (nl80211_send_station(skb, 2531 if (nl80211_send_station(skb,
2524 NETLINK_CB(cb->skb).pid, 2532 NETLINK_CB(cb->skb).pid,
2525 cb->nlh->nlmsg_seq, NLM_F_MULTI, 2533 cb->nlh->nlmsg_seq, NLM_F_MULTI,
2526 netdev, mac_addr, 2534 dev, netdev, mac_addr,
2527 &sinfo) < 0) 2535 &sinfo) < 0)
2528 goto out; 2536 goto out;
2529 2537
@@ -2568,7 +2576,7 @@ static int nl80211_get_station(struct sk_buff *skb, struct genl_info *info)
2568 return -ENOMEM; 2576 return -ENOMEM;
2569 2577
2570 if (nl80211_send_station(msg, info->snd_pid, info->snd_seq, 0, 2578 if (nl80211_send_station(msg, info->snd_pid, info->snd_seq, 0,
2571 dev, mac_addr, &sinfo) < 0) { 2579 rdev, dev, mac_addr, &sinfo) < 0) {
2572 nlmsg_free(msg); 2580 nlmsg_free(msg);
2573 return -ENOBUFS; 2581 return -ENOBUFS;
2574 } 2582 }
@@ -7596,7 +7604,8 @@ void nl80211_send_sta_event(struct cfg80211_registered_device *rdev,
7596 if (!msg) 7604 if (!msg)
7597 return; 7605 return;
7598 7606
7599 if (nl80211_send_station(msg, 0, 0, 0, dev, mac_addr, sinfo) < 0) { 7607 if (nl80211_send_station(msg, 0, 0, 0,
7608 rdev, dev, mac_addr, sinfo) < 0) {
7600 nlmsg_free(msg); 7609 nlmsg_free(msg);
7601 return; 7610 return;
7602 } 7611 }