diff options
author | Thomas Pedersen <thomas@cozybit.com> | 2012-08-09 18:15:39 -0700 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-08-20 13:25:05 +0200 |
commit | b22bd5221cfe80ee3d345d9deccfd29edf9bafb4 (patch) | |
tree | 4ce0db440e12757c936cbef13c804bb169a4643f /net | |
parent | aa7a00809cf6afe3cd6f5af2889110b47b798667 (diff) | |
download | linux-b22bd5221cfe80ee3d345d9deccfd29edf9bafb4.tar.gz linux-b22bd5221cfe80ee3d345d9deccfd29edf9bafb4.tar.bz2 linux-b22bd5221cfe80ee3d345d9deccfd29edf9bafb4.zip |
mac80211: use skb_queue_walk() in mesh_path_assign_nexthop
Since all we really want is just to iterate over all skbs, do just that
and avoid (de)queueing to a clusmy tmpq.
Signed-off-by: Thomas Pedersen <thomas@cozybit.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/mesh_pathtbl.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/net/mac80211/mesh_pathtbl.c b/net/mac80211/mesh_pathtbl.c index bec7b281b5ba..b819d6b847d0 100644 --- a/net/mac80211/mesh_pathtbl.c +++ b/net/mac80211/mesh_pathtbl.c @@ -203,23 +203,17 @@ void mesh_path_assign_nexthop(struct mesh_path *mpath, struct sta_info *sta) { struct sk_buff *skb; struct ieee80211_hdr *hdr; - struct sk_buff_head tmpq; unsigned long flags; rcu_assign_pointer(mpath->next_hop, sta); - __skb_queue_head_init(&tmpq); - spin_lock_irqsave(&mpath->frame_queue.lock, flags); - - while ((skb = __skb_dequeue(&mpath->frame_queue)) != NULL) { + skb_queue_walk(&mpath->frame_queue, skb) { hdr = (struct ieee80211_hdr *) skb->data; memcpy(hdr->addr1, sta->sta.addr, ETH_ALEN); memcpy(hdr->addr2, mpath->sdata->vif.addr, ETH_ALEN); - __skb_queue_tail(&tmpq, skb); } - skb_queue_splice(&tmpq, &mpath->frame_queue); spin_unlock_irqrestore(&mpath->frame_queue.lock, flags); } |