mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-18 02:04:05 +08:00
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>
This commit is contained in:
parent
aa7a00809c
commit
b22bd5221c
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user