blob: 40755311875b1f2e07c36133ead07e6339bb6a1e [file] [log] [blame]
developer683be522023-05-11 14:24:50 +08001From 097b204ffed838a4bbf7649fb23310f64ace22ad Mon Sep 17 00:00:00 2001
2From: Evelyn Tsai <evelyn.tsai@mediatek.com>
3Date: Thu, 11 May 2023 14:12:44 +0800
4Subject: [PATCH 102/103] hostapd: mtk: Fix unexpected AP beacon state
5 transition
6
7When AP fails setting the beacon, it assigns bss->beacon_set to 0 no
8matter what the error number is.
9However, in the case that the error number is -EBUSY, the driver might
10not free the beacon and expect a later beacon re-setting. If hostapd set
11a new beacon under this case, driver will return -EALREADY.
12This patch checks the error number after hostapd fails setting the
13beacon. If the error number is -EBUSY, bss->beacon_set will not be
14assigned to 0.
15
16Signed-off-by: Michael Lee <michael-cy.lee@mediatek.com>
17---
18 src/drivers/driver_nl80211.c | 3 ++-
19 1 file changed, 2 insertions(+), 1 deletion(-)
20
21diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
22index 8400e57..ccfc2d0 100644
23--- a/src/drivers/driver_nl80211.c
24+++ b/src/drivers/driver_nl80211.c
25@@ -5126,7 +5126,8 @@ static int wpa_driver_nl80211_set_ap(void *priv,
26 ret, strerror(-ret));
27 if (!bss->flink->beacon_set)
28 ret = 0;
29- bss->flink->beacon_set = 0;
30+ if (ret != -EBUSY)
31+ bss->flink->beacon_set = 0;
32 } else {
33 bss->flink->beacon_set = 1;
34 nl80211_set_bss(bss, params->cts_protect, params->preamble,
35--
362.18.0
37