wifi-scripts: add default channel to board.json in wifi-detect.uc
authorFelix Fietkau <nbd@nbd.name>
Tue, 11 Jun 2024 09:34:27 +0000 (11:34 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 21 Jun 2024 09:52:26 +0000 (11:52 +0200)
Preparation for avoiding iw calls in /lib/wifi/mac80211.sh

Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/network/config/wifi-scripts/files/usr/share/hostap/wifi-detect.uc

index 5f375880d2ba20c4ac2b24a8458185f41d006636..109b6a33cfce02385f43914fb037e46b0cb71cbc 100644 (file)
@@ -53,6 +53,26 @@ function wiphy_get_entry(phy, path) {
        return wlan[phy];
 }
 
+function freq_to_channel(freq) {
+       if (freq < 1000)
+               return 0;
+       if (freq == 2484)
+               return 14;
+       if (freq == 5935)
+               return 2;
+       if (freq < 2484)
+               return (freq - 2407) / 5;
+       if (freq >= 4910 && freq <= 4980)
+               return (freq - 4000) / 5;
+       if (freq < 5950)
+               return (freq - 5000) / 5;
+       if (freq <= 45000)
+               return (freq - 5950) / 5;
+       if (freq >= 58320 && freq <= 70200)
+               return (freq - 56160) / 2160;
+       return 0;
+}
+
 function wiphy_detect() {
        let phys = nl.request(nl.const.NL80211_CMD_GET_WIPHY, nl.const.NLM_F_DUMP, { split_wiphy_dump: true });
        if (!phys)
@@ -80,8 +100,10 @@ function wiphy_detect() {
                                band_name = "6G";
                        else if (freq > 4000)
                                band_name = "5G";
-                       else
+                       else if (freq > 2000)
                                band_name = "2G";
+                       else
+                               continue;
                        bands[band_name] = band_info;
                        if (band.ht_capa > 0)
                                band_info.ht = true;
@@ -124,6 +146,16 @@ function wiphy_detect() {
                        if (he_phy_cap & 0x2)
                                push(modes, "HE40");
 
+                       for (let freq in band.freqs) {
+                               if (freq.disabled)
+                                       continue;
+                               let chan = freq_to_channel(freq.freq);
+                               if (!chan)
+                                       continue;
+                               band_info.default_channel = chan;
+                               break;
+                       }
+
                        if (band_name == "2G")
                                continue;
                        if (band_info.vht)