nl80211: simplify iterating over phy's devices
authorAndre Heider <a.heider@gmail.com>
Sat, 24 Dec 2022 10:53:36 +0000 (11:53 +0100)
committerChristian Marangi <ansuelsmth@gmail.com>
Fri, 20 Jan 2023 16:26:58 +0000 (17:26 +0100)
There's no need to iterate over all devices in /sys/class/net and check
if the phy index matches, sysfs already provides per phy devices.

Signed-off-by: Andre Heider <a.heider@gmail.com>
iwinfo_nl80211.c

index 6b2a87ad6157fd615c72e101284e10e2ccc3bc1c..d7e7d90a8266fdd0057f2c2d9ba74897beef4e4c 100644 (file)
@@ -826,24 +826,21 @@ static char * nl80211_phy2ifname(const char *ifname)
 
        memset(nif, 0, sizeof(nif));
 
-       if ((d = opendir("/sys/class/net")) != NULL)
+       snprintf(buffer, sizeof(buffer),
+                "/sys/class/ieee80211/phy%d/device/net", phyidx);
+
+       if ((d = opendir(buffer)) != NULL)
        {
                while ((e = readdir(d)) != NULL)
                {
                        snprintf(buffer, sizeof(buffer),
-                                "/sys/class/net/%s/phy80211/index", e->d_name);
+                                "/sys/class/net/%s/ifindex", e->d_name);
 
-                       if (nl80211_readint(buffer) == phyidx)
+                       if ((cifidx = nl80211_readint(buffer)) >= 0 &&
+                           ((ifidx < 0) || (cifidx < ifidx)))
                        {
-                               snprintf(buffer, sizeof(buffer),
-                                        "/sys/class/net/%s/ifindex", e->d_name);
-
-                               if ((cifidx = nl80211_readint(buffer)) >= 0 &&
-                                   ((ifidx < 0) || (cifidx < ifidx)))
-                               {
-                                       ifidx = cifidx;
-                                       strncpy(nif, e->d_name, sizeof(nif) - 1);
-                               }
+                               ifidx = cifidx;
+                               strncpy(nif, e->d_name, sizeof(nif) - 1);
                        }
                }