[PATCH] wext: Add signal_poll callback

Jean-Marie Lemetayer jeanmarie.lemetayer at gmail.com
Fri Aug 8 02:18:00 EDT 2014


Add a basic implementation of a signal_poll callback for wext drivers.

Signed-off-by: Jean-Marie Lemetayer <jeanmarie.lemetayer at 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


More information about the HostAP mailing list