nl80211/mac80211: mesh: add mesh path change count to mpath info
Expose path change count to destination in mpath info Signed-off-by: Julan Hsu <julanhsu@google.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
这个提交包含在:
@@ -1746,7 +1746,8 @@ static void mpath_set_pinfo(struct mesh_path *mpath, u8 *next_hop,
|
||||
MPATH_INFO_DISCOVERY_TIMEOUT |
|
||||
MPATH_INFO_DISCOVERY_RETRIES |
|
||||
MPATH_INFO_FLAGS |
|
||||
MPATH_INFO_HOP_COUNT;
|
||||
MPATH_INFO_HOP_COUNT |
|
||||
MPATH_INFO_PATH_CHANGE;
|
||||
|
||||
pinfo->frame_qlen = mpath->frame_queue.qlen;
|
||||
pinfo->sn = mpath->sn;
|
||||
@@ -1767,6 +1768,7 @@ static void mpath_set_pinfo(struct mesh_path *mpath, u8 *next_hop,
|
||||
if (mpath->flags & MESH_PATH_RESOLVED)
|
||||
pinfo->flags |= NL80211_MPATH_FLAG_RESOLVED;
|
||||
pinfo->hop_count = mpath->hop_count;
|
||||
pinfo->path_change_count = mpath->path_change_count;
|
||||
}
|
||||
|
||||
static int ieee80211_get_mpath(struct wiphy *wiphy, struct net_device *dev,
|
||||
|
@@ -94,6 +94,7 @@ enum mesh_deferred_task_flags {
|
||||
* @last_preq_to_root: Timestamp of last PREQ sent to root
|
||||
* @is_root: the destination station of this path is a root node
|
||||
* @is_gate: the destination station of this path is a mesh gate
|
||||
* @path_change_count: the number of path changes to destination
|
||||
*
|
||||
*
|
||||
* The dst address is unique in the mesh path table. Since the mesh_path is
|
||||
@@ -124,6 +125,7 @@ struct mesh_path {
|
||||
unsigned long last_preq_to_root;
|
||||
bool is_root;
|
||||
bool is_gate;
|
||||
u32 path_change_count;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -479,6 +479,8 @@ static u32 hwmp_route_info_get(struct ieee80211_sub_if_data *sdata,
|
||||
}
|
||||
|
||||
if (fresh_info) {
|
||||
if (rcu_access_pointer(mpath->next_hop) != sta)
|
||||
mpath->path_change_count++;
|
||||
mesh_path_assign_nexthop(mpath, sta);
|
||||
mpath->flags |= MESH_PATH_SN_VALID;
|
||||
mpath->metric = new_metric;
|
||||
@@ -523,6 +525,8 @@ static u32 hwmp_route_info_get(struct ieee80211_sub_if_data *sdata,
|
||||
}
|
||||
|
||||
if (fresh_info) {
|
||||
if (rcu_access_pointer(mpath->next_hop) != sta)
|
||||
mpath->path_change_count++;
|
||||
mesh_path_assign_nexthop(mpath, sta);
|
||||
mpath->metric = last_hop_metric;
|
||||
mpath->exp_time = time_after(mpath->exp_time, exp_time)
|
||||
|
在新工单中引用
屏蔽一个用户