ramips: add support for the Senao/EnGenius ESR-9753 board
[openwrt.git] / package / iwinfo / src / iwinfo_nl80211.c
index b3da838..4672b9d 100644 (file)
@@ -1628,3 +1628,74 @@ int nl80211_get_mbssid_support(const char *ifname, int *buf)
 
        return -1;
 }
+
+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);
+}
+
+static const struct iwinfo_hardware_entry *
+nl80211_get_hardware_entry(const char *ifname)
+{
+       struct iwinfo_hardware_id id;
+
+       if (nl80211_get_hardware_id(ifname, (char *)&id))
+               return NULL;
+
+       return iwinfo_hardware(&id);
+}
+
+int nl80211_get_hardware_name(const char *ifname, char *buf)
+{
+       const struct iwinfo_hardware_entry *hw;
+
+       if (!(hw = nl80211_get_hardware_entry(ifname)))
+               sprintf(buf, "Generic MAC80211");
+       else
+               sprintf(buf, "%s %s", hw->vendor_name, hw->device_name);
+
+       return 0;
+}
+
+int nl80211_get_txpower_offset(const char *ifname, int *buf)
+{
+       const struct iwinfo_hardware_entry *hw;
+
+       if (!(hw = nl80211_get_hardware_entry(ifname)))
+               return -1;
+
+       *buf = hw->txpower_offset;
+       return 0;
+}
+
+int nl80211_get_frequency_offset(const char *ifname, int *buf)
+{
+       const struct iwinfo_hardware_entry *hw;
+
+       if (!(hw = nl80211_get_hardware_entry(ifname)))
+               return -1;
+
+       *buf = hw->frequency_offset;
+       return 0;
+}
This page took 0.030138 seconds and 4 git commands to generate.