From 54fe4ffece284613903a23400fcef57a6840f6d9 Mon Sep 17 00:00:00 2001 From: Carter Li Date: Wed, 19 Aug 2026 09:32:27 +0800 Subject: [PATCH] Wifi (FreeBSD): adds channel width detection --- src/detection/wifi/wifi_bsd.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/detection/wifi/wifi_bsd.c b/src/detection/wifi/wifi_bsd.c index 7ef816ad5..ce634637e 100644 --- a/src/detection/wifi/wifi_bsd.c +++ b/src/detection/wifi/wifi_bsd.c @@ -27,6 +27,7 @@ const char* ffDetectWifi(FFlist* result) { FFWifiResult* item = FF_LIST_ADD(FFWifiResult, *result); ffStrbufInitS(&item->inf.description, i->if_name); + ffStrbufInit(&item->inf.driver); ffStrbufInit(&item->inf.status); ffStrbufInit(&item->conn.status); ffStrbufInit(&item->conn.ssid); @@ -37,6 +38,7 @@ const char* ffDetectWifi(FFlist* result) { item->conn.rxRate = -DBL_MAX; item->conn.txRate = -DBL_MAX; item->conn.channel = 0; + item->conn.channelWidth = 0; item->conn.frequency = 0; char ssid[IEEE80211_NWID_LEN + 1] = {}; @@ -80,6 +82,16 @@ const char* ffDetectWifi(FFlist* result) { item->conn.channel = curchan.ic_ieee; item->conn.frequency = curchan.ic_freq; + // Determine channel width from channel flags + if (curchan.ic_flags & IEEE80211_CHAN_VHT160) + item->conn.channelWidth = 160; + else if (curchan.ic_flags & IEEE80211_CHAN_VHT80) + item->conn.channelWidth = 80; + else if (curchan.ic_flags & IEEE80211_CHAN_HT40) + item->conn.channelWidth = 40; + else + item->conn.channelWidth = 20; + #ifdef IEEE80211_IS_CHAN_HE // for future use if (IEEE80211_IS_CHAN_HE(&curchan)) { ffStrbufSetStatic(&item->conn.protocol, "802.11ax (Wi-Fi 6)");