Loading net/mac80211/mesh_hwmp.c +7 −19 Original line number Diff line number Diff line Loading @@ -1130,16 +1130,13 @@ int mesh_nexthop_resolve(struct ieee80211_sub_if_data *sdata, struct mesh_path *mpath; struct sk_buff *skb_to_free = NULL; u8 *target_addr = hdr->addr3; int err = 0; /* Nulls are only sent to peers for PS and should be pre-addressed */ if (ieee80211_is_qos_nullfunc(hdr->frame_control)) return 0; rcu_read_lock(); err = mesh_nexthop_lookup(sdata, skb); if (!err) goto endlookup; if (!mesh_nexthop_lookup(sdata, skb)) return 0; /* no nexthop found, start resolving */ mpath = mesh_path_lookup(sdata, target_addr); Loading @@ -1147,8 +1144,7 @@ int mesh_nexthop_resolve(struct ieee80211_sub_if_data *sdata, mpath = mesh_path_add(sdata, target_addr); if (IS_ERR(mpath)) { mesh_path_discard_frame(sdata, skb); err = PTR_ERR(mpath); goto endlookup; return PTR_ERR(mpath); } } Loading @@ -1161,13 +1157,10 @@ int mesh_nexthop_resolve(struct ieee80211_sub_if_data *sdata, info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING; ieee80211_set_qos_hdr(sdata, skb); skb_queue_tail(&mpath->frame_queue, skb); err = -ENOENT; if (skb_to_free) mesh_path_discard_frame(sdata, skb_to_free); endlookup: rcu_read_unlock(); return err; return -ENOENT; } /** Loading @@ -1187,13 +1180,10 @@ int mesh_nexthop_lookup(struct ieee80211_sub_if_data *sdata, struct sta_info *next_hop; struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; u8 *target_addr = hdr->addr3; int err = -ENOENT; rcu_read_lock(); mpath = mesh_path_lookup(sdata, target_addr); if (!mpath || !(mpath->flags & MESH_PATH_ACTIVE)) goto endlookup; return -ENOENT; if (time_after(jiffies, mpath->exp_time - Loading @@ -1208,12 +1198,10 @@ int mesh_nexthop_lookup(struct ieee80211_sub_if_data *sdata, memcpy(hdr->addr1, next_hop->sta.addr, ETH_ALEN); memcpy(hdr->addr2, sdata->vif.addr, ETH_ALEN); ieee80211_mps_set_frame_flags(sdata, next_hop, hdr); err = 0; return 0; } endlookup: rcu_read_unlock(); return err; return -ENOENT; } void mesh_path_timer(struct timer_list *t) Loading net/mac80211/mesh_pathtbl.c +1 −1 Original line number Diff line number Diff line Loading @@ -217,7 +217,7 @@ static struct mesh_path *mpath_lookup(struct mesh_table *tbl, const u8 *dst, { struct mesh_path *mpath; mpath = rhashtable_lookup_fast(&tbl->rhead, dst, mesh_rht_params); mpath = rhashtable_lookup(&tbl->rhead, dst, mesh_rht_params); if (mpath && mpath_expired(mpath)) { spin_lock_bh(&mpath->state_lock); Loading Loading
net/mac80211/mesh_hwmp.c +7 −19 Original line number Diff line number Diff line Loading @@ -1130,16 +1130,13 @@ int mesh_nexthop_resolve(struct ieee80211_sub_if_data *sdata, struct mesh_path *mpath; struct sk_buff *skb_to_free = NULL; u8 *target_addr = hdr->addr3; int err = 0; /* Nulls are only sent to peers for PS and should be pre-addressed */ if (ieee80211_is_qos_nullfunc(hdr->frame_control)) return 0; rcu_read_lock(); err = mesh_nexthop_lookup(sdata, skb); if (!err) goto endlookup; if (!mesh_nexthop_lookup(sdata, skb)) return 0; /* no nexthop found, start resolving */ mpath = mesh_path_lookup(sdata, target_addr); Loading @@ -1147,8 +1144,7 @@ int mesh_nexthop_resolve(struct ieee80211_sub_if_data *sdata, mpath = mesh_path_add(sdata, target_addr); if (IS_ERR(mpath)) { mesh_path_discard_frame(sdata, skb); err = PTR_ERR(mpath); goto endlookup; return PTR_ERR(mpath); } } Loading @@ -1161,13 +1157,10 @@ int mesh_nexthop_resolve(struct ieee80211_sub_if_data *sdata, info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING; ieee80211_set_qos_hdr(sdata, skb); skb_queue_tail(&mpath->frame_queue, skb); err = -ENOENT; if (skb_to_free) mesh_path_discard_frame(sdata, skb_to_free); endlookup: rcu_read_unlock(); return err; return -ENOENT; } /** Loading @@ -1187,13 +1180,10 @@ int mesh_nexthop_lookup(struct ieee80211_sub_if_data *sdata, struct sta_info *next_hop; struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; u8 *target_addr = hdr->addr3; int err = -ENOENT; rcu_read_lock(); mpath = mesh_path_lookup(sdata, target_addr); if (!mpath || !(mpath->flags & MESH_PATH_ACTIVE)) goto endlookup; return -ENOENT; if (time_after(jiffies, mpath->exp_time - Loading @@ -1208,12 +1198,10 @@ int mesh_nexthop_lookup(struct ieee80211_sub_if_data *sdata, memcpy(hdr->addr1, next_hop->sta.addr, ETH_ALEN); memcpy(hdr->addr2, sdata->vif.addr, ETH_ALEN); ieee80211_mps_set_frame_flags(sdata, next_hop, hdr); err = 0; return 0; } endlookup: rcu_read_unlock(); return err; return -ENOENT; } void mesh_path_timer(struct timer_list *t) Loading
net/mac80211/mesh_pathtbl.c +1 −1 Original line number Diff line number Diff line Loading @@ -217,7 +217,7 @@ static struct mesh_path *mpath_lookup(struct mesh_table *tbl, const u8 *dst, { struct mesh_path *mpath; mpath = rhashtable_lookup_fast(&tbl->rhead, dst, mesh_rht_params); mpath = rhashtable_lookup(&tbl->rhead, dst, mesh_rht_params); if (mpath && mpath_expired(mpath)) { spin_lock_bh(&mpath->state_lock); Loading