wext: Add signal_poll callback
Add a basic implementation of a signal_poll callback for wext drivers. Signed-off-by: Jean-Marie Lemetayer <jeanmarie.lemetayer@gmail.com>
This commit is contained in:
parent
af65bc36bb
commit
61157afb1c
1 changed files with 32 additions and 0 deletions
|
@ -2320,6 +2320,37 @@ static const char * wext_get_radio_name(void *priv)
|
|||
}
|
||||
|
||||
|
||||
static int wpa_driver_wext_signal_poll(void *priv, struct wpa_signal_info *si)
|
||||
{
|
||||
struct wpa_driver_wext_data *drv = priv;
|
||||
struct iw_statistics stats;
|
||||
struct iwreq iwr;
|
||||
|
||||
os_memset(si, 0, sizeof(*si));
|
||||
si->current_signal = -9999;
|
||||
si->current_noise = 9999;
|
||||
si->chanwidth = CHAN_WIDTH_UNKNOWN;
|
||||
|
||||
os_memset(&iwr, 0, sizeof(iwr));
|
||||
os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
|
||||
iwr.u.data.pointer = (caddr_t) &stats;
|
||||
iwr.u.data.length = sizeof(stats);
|
||||
iwr.u.data.flags = 1;
|
||||
|
||||
if (ioctl(drv->ioctl_sock, SIOCGIWSTATS, &iwr) < 0) {
|
||||
wpa_printf(MSG_ERROR, "WEXT: SIOCGIWSTATS: %s",
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
si->current_signal = stats.qual.level -
|
||||
((stats.qual.updated & IW_QUAL_DBM) ? 0x100 : 0);
|
||||
si->current_noise = stats.qual.noise -
|
||||
((stats.qual.updated & IW_QUAL_DBM) ? 0x100 : 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
const struct wpa_driver_ops wpa_driver_wext_ops = {
|
||||
.name = "wext",
|
||||
.desc = "Linux wireless extensions (generic)",
|
||||
|
@ -2339,4 +2370,5 @@ const struct wpa_driver_ops wpa_driver_wext_ops = {
|
|||
.get_capa = wpa_driver_wext_get_capa,
|
||||
.set_operstate = wpa_driver_wext_set_operstate,
|
||||
.get_radio_name = wext_get_radio_name,
|
||||
.signal_poll = wpa_driver_wext_signal_poll,
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue