Message ID | 1407487500-3726-1-git-send-email-jeanmarie.lemetayer@gmail.com |
---|---|
State | Accepted |
Headers | show |
Hi, Sorry for the first email, the indentation was not well renderred. This time it should be ok. Regards, JML 2014-08-08 10:45 GMT+02:00 Jean-Marie Lemetayer <jeanmarie.lemetayer@gmail.com>: > Add a basic implementation of a signal_poll callback for wext drivers. > > Signed-off-by: Jean-Marie Lemetayer <jeanmarie.lemetayer@gmail.com> > --- > src/drivers/driver_wext.c | 31 +++++++++++++++++++++++++++++++ > 1 file changed, 31 insertions(+) > > diff --git a/src/drivers/driver_wext.c b/src/drivers/driver_wext.c > index a4f9cec..105d15e 100644 > --- a/src/drivers/driver_wext.c > +++ b/src/drivers/driver_wext.c > @@ -2319,6 +2319,36 @@ static const char * wext_get_radio_name(void *priv) > return drv->phyname; > } > > +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", > @@ -2339,4 +2369,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, > }; > -- > 1.9.1 >
On Fri, Aug 08, 2014 at 10:45:00AM +0200, Jean-Marie Lemetayer wrote:
> Add a basic implementation of a signal_poll callback for wext drivers.
Thanks, applied.
diff --git a/src/drivers/driver_wext.c b/src/drivers/driver_wext.c index a4f9cec..105d15e 100644 --- a/src/drivers/driver_wext.c +++ b/src/drivers/driver_wext.c @@ -2319,6 +2319,36 @@ static const char * wext_get_radio_name(void *priv) return drv->phyname; } +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", @@ -2339,4 +2369,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, };
Add a basic implementation of a signal_poll callback for wext drivers. Signed-off-by: Jean-Marie Lemetayer <jeanmarie.lemetayer@gmail.com> --- src/drivers/driver_wext.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)