mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
{nl,mac}80211: report gate connectivity in station info
Capture the current state of gate connectivity from the mesh formation field in mesh config whenever we receive a beacon, and report that via GET_STATION. This allows applications doing mesh peering in userspace to make peering decisions based on peers' current upstream connectivity. Signed-off-by: Bob Copeland <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
This commit is contained in:
parent
4a6ecd35f9
commit
dbdaee7aa6
7 changed files with 17 additions and 1 deletions
|
|
@ -590,6 +590,9 @@ void mesh_neighbour_update(struct ieee80211_sub_if_data *sdata,
|
|||
if (!sta)
|
||||
goto out;
|
||||
|
||||
sta->mesh->connected_to_gate = elems->mesh_config->meshconf_form &
|
||||
IEEE80211_MESHCONF_FORM_CONNECTED_TO_GATE;
|
||||
|
||||
if (mesh_peer_accepts_plinks(elems) &&
|
||||
sta->mesh->plink_state == NL80211_PLINK_LISTEN &&
|
||||
sdata->u.mesh.accepting_plinks &&
|
||||
|
|
|
|||
|
|
@ -2264,7 +2264,8 @@ void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo,
|
|||
BIT_ULL(NL80211_STA_INFO_PLINK_STATE) |
|
||||
BIT_ULL(NL80211_STA_INFO_LOCAL_PM) |
|
||||
BIT_ULL(NL80211_STA_INFO_PEER_PM) |
|
||||
BIT_ULL(NL80211_STA_INFO_NONPEER_PM);
|
||||
BIT_ULL(NL80211_STA_INFO_NONPEER_PM) |
|
||||
BIT_ULL(NL80211_STA_INFO_CONNECTED_TO_GATE);
|
||||
|
||||
sinfo->llid = sta->mesh->llid;
|
||||
sinfo->plid = sta->mesh->plid;
|
||||
|
|
@ -2276,6 +2277,7 @@ void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo,
|
|||
sinfo->local_pm = sta->mesh->local_pm;
|
||||
sinfo->peer_pm = sta->mesh->peer_pm;
|
||||
sinfo->nonpeer_pm = sta->mesh->nonpeer_pm;
|
||||
sinfo->connected_to_gate = sta->mesh->connected_to_gate;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -364,6 +364,7 @@ DECLARE_EWMA(mesh_fail_avg, 20, 8)
|
|||
* @nonpeer_pm: STA power save mode towards non-peer neighbors
|
||||
* @processed_beacon: set to true after peer rates and capabilities are
|
||||
* processed
|
||||
* @connected_to_gate: true if mesh STA has a path to a mesh gate
|
||||
* @fail_avg: moving percentage of failed MSDUs
|
||||
*/
|
||||
struct mesh_sta {
|
||||
|
|
@ -381,6 +382,7 @@ struct mesh_sta {
|
|||
u8 plink_retries;
|
||||
|
||||
bool processed_beacon;
|
||||
bool connected_to_gate;
|
||||
|
||||
enum nl80211_plink_state plink_state;
|
||||
u32 plink_timeout;
|
||||
|
|
|
|||
Loading…
Reference in a new issue