blob: 74c685bafbb0daae0811629f5115b183b9d752f1 [file] [log] [blame]
developer428a8d22023-09-01 15:00:06 +08001From 25b1c0f5e4f674ea2b72949bce83c05204d19653 Mon Sep 17 00:00:00 2001
2From: Michael-CY Lee <michael-cy.lee@mediatek.com>
3Date: Thu, 24 Aug 2023 16:44:30 +0800
4Subject: [PATCH] hostapd: mtk: synchronize bandwidth in AP/STA support
5
6Signed-off-by: Michael Lee <michael-cy.lee@mediatek.com>
7---
8 src/utils/ucode.c | 1 +
9 wpa_supplicant/ucode.c | 10 ++++++++++
10 2 files changed, 11 insertions(+)
11
12diff --git a/src/utils/ucode.c b/src/utils/ucode.c
13index 44169f0..41c19fb 100644
14--- a/src/utils/ucode.c
15+++ b/src/utils/ucode.c
16@@ -115,6 +115,7 @@ uc_value_t *uc_wpa_freq_info(uc_vm_t *vm, size_t nargs)
17 ucv_object_add(ret, "hw_mode_str", ucv_get(ucv_string_new(modestr)));
18 ucv_object_add(ret, "sec_channel", ucv_int64_new(sec_channel));
19 ucv_object_add(ret, "frequency", ucv_int64_new(freq_val));
20+ ucv_object_add(ret, "oper_chwidth", ucv_int64_new(chanwidth));
21
22 if (!sec_channel)
23 return ret;
24diff --git a/wpa_supplicant/ucode.c b/wpa_supplicant/ucode.c
25index d0a78d1..dbf57fa 100644
26--- a/wpa_supplicant/ucode.c
27+++ b/wpa_supplicant/ucode.c
28@@ -6,6 +6,7 @@
29 #include "wps_supplicant.h"
30 #include "bss.h"
31 #include "ucode.h"
32+#include "driver_i.h"
33
34 static struct wpa_global *wpa_global;
35 static uc_resource_type_t *global_type, *iface_type;
36@@ -194,6 +195,9 @@ uc_wpas_iface_status(uc_vm_t *vm, size_t nargs)
37 struct wpa_supplicant *wpa_s = uc_fn_thisval("wpas.iface");
38 struct wpa_bss *bss;
39 uc_value_t *ret, *val;
40+ struct wpa_channel_info ci;
41+ u8 op_class, channel;
42+ enum oper_chan_width ch_width;
43
44 if (!wpa_s)
45 return NULL;
46@@ -222,6 +226,12 @@ uc_wpas_iface_status(uc_vm_t *vm, size_t nargs)
47
48 ucv_object_add(ret, "sec_chan_offset", ucv_int64_new(sec_chan));
49 ucv_object_add(ret, "frequency", ucv_int64_new(bss->freq));
50+
51+ wpa_drv_channel_info(wpa_s, &ci);
52+ ieee80211_chaninfo_to_channel(ci.frequency, ci.chanwidth,
53+ sec_chan, &op_class, &channel);
54+ ch_width = op_class_to_ch_width(op_class);
55+ ucv_object_add(ret, "ch_width", ucv_int64_new(ch_width));
56 }
57
58 return ret;
59--
602.25.1
61