Commit 5815814b authored by Javier Cardona's avatar Javier Cardona Committed by John W. Linville

mac80211: Early detection of broken mesh paths when using minstrel.

This change triggers a path discovery as soon as the link quality degrades
below a certain threshold.  This results in a faster path recovery time than
by simply relying on the periodic path refresh mechanism to detect broken
links.
Signed-off-by: default avatarJavier Cardona <javier@cozybit.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent d403a1c6
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
#include <linux/random.h> #include <linux/random.h>
#include <linux/ieee80211.h> #include <linux/ieee80211.h>
#include <net/mac80211.h> #include <net/mac80211.h>
#include "mesh.h"
#include "rate.h" #include "rate.h"
#include "rc80211_minstrel.h" #include "rc80211_minstrel.h"
...@@ -178,9 +179,14 @@ minstrel_tx_status(void *priv, struct ieee80211_supported_band *sband, ...@@ -178,9 +179,14 @@ minstrel_tx_status(void *priv, struct ieee80211_supported_band *sband,
if ((i != IEEE80211_TX_MAX_RATES - 1) && (ar[i + 1].idx < 0)) { if ((i != IEEE80211_TX_MAX_RATES - 1) && (ar[i + 1].idx < 0)) {
mi->r[ndx].success += success; mi->r[ndx].success += success;
if (si) if (si) {
si->fail_avg = (18050 - mi->r[ndx].probability) si->fail_avg = (18050 - mi->r[ndx].probability)
/ 180; / 180;
WARN_ON(si->fail_avg > 100);
if (si->fail_avg == 100 &&
ieee80211_vif_is_mesh(&si->sdata->vif))
mesh_plink_broken(si);
}
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment