diff options
author | David S. Miller <davem@davemloft.net> | 2009-12-30 16:51:29 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-12-30 16:51:29 -0500 |
commit | 3a999e6eb5d277cd6a321dcda3fc43c3d9e4e4b8 (patch) | |
tree | b0ad8d03710ee556e97515ba1c949233859391ce /net/mac80211/rx.c | |
parent | 6cd9b49d7328c4656bfc17fcb47fb814955d40d2 (diff) | |
parent | 891dc5e73783eeabd2a704a9425e2a199b39c9f9 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r-- | net/mac80211/rx.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 6cbf1a7b3157..bfcf09eb64b4 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -289,7 +289,7 @@ ieee80211_rx_monitor(struct ieee80211_local *local, struct sk_buff *origskb, | |||
289 | if (sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES) | 289 | if (sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES) |
290 | continue; | 290 | continue; |
291 | 291 | ||
292 | if (!netif_running(sdata->dev)) | 292 | if (!ieee80211_sdata_running(sdata)) |
293 | continue; | 293 | continue; |
294 | 294 | ||
295 | if (prev_dev) { | 295 | if (prev_dev) { |
@@ -1945,6 +1945,7 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx) | |||
1945 | { | 1945 | { |
1946 | struct ieee80211_sub_if_data *sdata = rx->sdata; | 1946 | struct ieee80211_sub_if_data *sdata = rx->sdata; |
1947 | struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *) rx->skb->data; | 1947 | struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *) rx->skb->data; |
1948 | ieee80211_rx_result rxs; | ||
1948 | 1949 | ||
1949 | if (!(rx->flags & IEEE80211_RX_RA_MATCH)) | 1950 | if (!(rx->flags & IEEE80211_RX_RA_MATCH)) |
1950 | return RX_DROP_MONITOR; | 1951 | return RX_DROP_MONITOR; |
@@ -1952,6 +1953,10 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx) | |||
1952 | if (ieee80211_drop_unencrypted(rx, mgmt->frame_control)) | 1953 | if (ieee80211_drop_unencrypted(rx, mgmt->frame_control)) |
1953 | return RX_DROP_MONITOR; | 1954 | return RX_DROP_MONITOR; |
1954 | 1955 | ||
1956 | rxs = ieee80211_work_rx_mgmt(rx->sdata, rx->skb); | ||
1957 | if (rxs != RX_CONTINUE) | ||
1958 | return rxs; | ||
1959 | |||
1955 | if (ieee80211_vif_is_mesh(&sdata->vif)) | 1960 | if (ieee80211_vif_is_mesh(&sdata->vif)) |
1956 | return ieee80211_mesh_rx_mgmt(sdata, rx->skb); | 1961 | return ieee80211_mesh_rx_mgmt(sdata, rx->skb); |
1957 | 1962 | ||
@@ -2056,7 +2061,7 @@ static void ieee80211_rx_cooked_monitor(struct ieee80211_rx_data *rx, | |||
2056 | skb->protocol = htons(ETH_P_802_2); | 2061 | skb->protocol = htons(ETH_P_802_2); |
2057 | 2062 | ||
2058 | list_for_each_entry_rcu(sdata, &local->interfaces, list) { | 2063 | list_for_each_entry_rcu(sdata, &local->interfaces, list) { |
2059 | if (!netif_running(sdata->dev)) | 2064 | if (!ieee80211_sdata_running(sdata)) |
2060 | continue; | 2065 | continue; |
2061 | 2066 | ||
2062 | if (sdata->vif.type != NL80211_IFTYPE_MONITOR || | 2067 | if (sdata->vif.type != NL80211_IFTYPE_MONITOR || |
@@ -2318,7 +2323,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw, | |||
2318 | } | 2323 | } |
2319 | if (!found_sta) { | 2324 | if (!found_sta) { |
2320 | list_for_each_entry_rcu(sdata, &local->interfaces, list) { | 2325 | list_for_each_entry_rcu(sdata, &local->interfaces, list) { |
2321 | if (!netif_running(sdata->dev)) | 2326 | if (!ieee80211_sdata_running(sdata)) |
2322 | continue; | 2327 | continue; |
2323 | 2328 | ||
2324 | if (sdata->vif.type == NL80211_IFTYPE_MONITOR || | 2329 | if (sdata->vif.type == NL80211_IFTYPE_MONITOR || |