Add current signal strength into signal quality change events

This commit is contained in:
Jouni Malinen 2010-08-27 16:58:06 +03:00
parent 9c77ad1889
commit 60a972a68d
7 changed files with 72 additions and 10 deletions

View file

@ -111,8 +111,10 @@ void bgscan_notify_beacon_loss(struct wpa_supplicant *wpa_s)
}
void bgscan_notify_signal_change(struct wpa_supplicant *wpa_s, int above)
void bgscan_notify_signal_change(struct wpa_supplicant *wpa_s, int above,
int current_signal)
{
if (wpa_s->bgscan && wpa_s->bgscan_priv)
wpa_s->bgscan->notify_signal_change(wpa_s->bgscan_priv, above);
wpa_s->bgscan->notify_signal_change(wpa_s->bgscan_priv, above,
current_signal);
}

View file

@ -27,7 +27,8 @@ struct bgscan_ops {
int (*notify_scan)(void *priv, struct wpa_scan_results *scan_res);
void (*notify_beacon_loss)(void *priv);
void (*notify_signal_change)(void *priv, int above);
void (*notify_signal_change)(void *priv, int above,
int current_signal);
};
#ifdef CONFIG_BGSCAN
@ -37,7 +38,8 @@ void bgscan_deinit(struct wpa_supplicant *wpa_s);
int bgscan_notify_scan(struct wpa_supplicant *wpa_s,
struct wpa_scan_results *scan_res);
void bgscan_notify_beacon_loss(struct wpa_supplicant *wpa_s);
void bgscan_notify_signal_change(struct wpa_supplicant *wpa_s, int above);
void bgscan_notify_signal_change(struct wpa_supplicant *wpa_s, int above,
int current_signal);
#else /* CONFIG_BGSCAN */
@ -62,7 +64,7 @@ static inline void bgscan_notify_beacon_loss(struct wpa_supplicant *wpa_s)
}
static inline void bgscan_notify_signal_change(struct wpa_supplicant *wpa_s,
int above)
int above, int current_signal)
{
}

View file

@ -546,7 +546,8 @@ static void bgscan_learn_notify_beacon_loss(void *priv)
}
static void bgscan_learn_notify_signal_change(void *priv, int above)
static void bgscan_learn_notify_signal_change(void *priv, int above,
int current_signal)
{
struct bgscan_learn_data *data = priv;
@ -555,7 +556,7 @@ static void bgscan_learn_notify_signal_change(void *priv, int above)
return;
wpa_printf(MSG_DEBUG, "bgscan learn: signal level changed "
"(above=%d)", above);
"(above=%d current_signal=%d)", above, current_signal);
if (data->scan_interval == data->long_interval && !above) {
wpa_printf(MSG_DEBUG, "bgscan learn: Trigger immediate scan "
"and start using short bgscan interval");

View file

@ -167,7 +167,8 @@ static void bgscan_simple_notify_beacon_loss(void *priv)
}
static void bgscan_simple_notify_signal_change(void *priv, int above)
static void bgscan_simple_notify_signal_change(void *priv, int above,
int current_signal)
{
struct bgscan_simple_data *data = priv;
@ -176,7 +177,7 @@ static void bgscan_simple_notify_signal_change(void *priv, int above)
return;
wpa_printf(MSG_DEBUG, "bgscan simple: signal level changed "
"(above=%d)", above);
"(above=%d current_signal=%d)", above, current_signal);
if (data->scan_interval == data->long_interval && !above) {
wpa_printf(MSG_DEBUG, "bgscan simple: Trigger immediate scan "
"and start using short bgscan interval");

View file

@ -1752,7 +1752,8 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
break;
case EVENT_SIGNAL_CHANGE:
bgscan_notify_signal_change(
wpa_s, data->signal_change.above_threshold);
wpa_s, data->signal_change.above_threshold,
data->signal_change.current_signal);
break;
case EVENT_INTERFACE_ENABLED:
wpa_printf(MSG_DEBUG, "Interface was enabled");