Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 66223
b: refs/heads/master
c: 340e11f
h: refs/heads/master
i:
  66221: 1ae0f84
  66219: fb8b63b
  66215: 239cbc5
  66207: 0975284
v: v3
  • Loading branch information
Johannes Berg authored and David S. Miller committed Oct 10, 2007
1 parent d5d28e6 commit b99beed
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 52865dfd520ddd3d1176947106759ff944f0f8af
refs/heads/master: 340e11f332c695c43f506e82b1d39d00716c5005
42 changes: 28 additions & 14 deletions trunk/net/mac80211/rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1387,21 +1387,35 @@ void __ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb,
if (!prepres)
continue;

if (prev) {
skb_new = skb_copy(skb, GFP_ATOMIC);
if (!skb_new) {
if (net_ratelimit())
printk(KERN_DEBUG "%s: failed to copy "
"multicast frame for %s",
local->mdev->name, prev->dev->name);
continue;
}
rx.skb = skb_new;
rx.dev = prev->dev;
rx.sdata = prev;
ieee80211_invoke_rx_handlers(local, local->rx_handlers,
&rx, sta);
/*
* frame is destined for this interface, but if it's not
* also for the previous one we handle that after the
* loop to avoid copying the SKB once too much
*/

if (!prev) {
prev = sdata;
continue;
}

/*
* frame was destined for the previous interface
* so invoke RX handlers for it
*/

skb_new = skb_copy(skb, GFP_ATOMIC);
if (!skb_new) {
if (net_ratelimit())
printk(KERN_DEBUG "%s: failed to copy "
"multicast frame for %s",
local->mdev->name, prev->dev->name);
continue;
}
rx.skb = skb_new;
rx.dev = prev->dev;
rx.sdata = prev;
ieee80211_invoke_rx_handlers(local, local->rx_handlers,
&rx, sta);
prev = sdata;
}
if (prev) {
Expand Down

0 comments on commit b99beed

Please sign in to comment.