aboutsummaryrefslogtreecommitdiffstats
path: root/package/iwinfo
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2011-12-06 13:24:47 +0000
committerJo-Philipp Wich <jow@openwrt.org>2011-12-06 13:24:47 +0000
commit473fd911460feb8b650bd2867987bf32daa991ae (patch)
tree5267eecb20345adc4b282804e924b9d544758241 /package/iwinfo
parent554d2c450477304412b622dfd6bc76163e12b31f (diff)
downloadupstream-473fd911460feb8b650bd2867987bf32daa991ae.tar.gz
upstream-473fd911460feb8b650bd2867987bf32daa991ae.tar.bz2
upstream-473fd911460feb8b650bd2867987bf32daa991ae.zip
[package] iwinfo: support nl80211 hardware identification against radioX pseudo interfaces, useful if radio is not up yet
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@29462 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/iwinfo')
-rw-r--r--package/iwinfo/Makefile2
-rw-r--r--package/iwinfo/src/iwinfo_nl80211.c21
2 files changed, 22 insertions, 1 deletions
diff --git a/package/iwinfo/Makefile b/package/iwinfo/Makefile
index 471904432e..f69b86e8f7 100644
--- a/package/iwinfo/Makefile
+++ b/package/iwinfo/Makefile
@@ -7,7 +7,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=libiwinfo
-PKG_RELEASE:=20
+PKG_RELEASE:=21
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
diff --git a/package/iwinfo/src/iwinfo_nl80211.c b/package/iwinfo/src/iwinfo_nl80211.c
index 4b8b37daa8..4672b9d640 100644
--- a/package/iwinfo/src/iwinfo_nl80211.c
+++ b/package/iwinfo/src/iwinfo_nl80211.c
@@ -1631,6 +1631,27 @@ int nl80211_get_mbssid_support(const char *ifname, int *buf)
int nl80211_get_hardware_id(const char *ifname, char *buf)
{
+ int rv;
+ char *res;
+
+ /* Got a radioX pseudo interface, find some interface on it or create one */
+ if (!strncmp(ifname, "radio", 5))
+ {
+ /* Reuse existing interface */
+ if ((res = nl80211_phy2ifname(ifname)) != NULL)
+ {
+ return wext_get_hardware_id(res, buf);
+ }
+
+ /* Need to spawn a temporary iface for finding IDs */
+ else if ((res = nl80211_ifadd(ifname)) != NULL)
+ {
+ rv = wext_get_hardware_id(res, buf);
+ nl80211_ifdel(res);
+ return rv;
+ }
+ }
+
return wext_get_hardware_id(ifname, buf);
}