blob: 060cd1d5760f9b255a2807cd315c40db2aba375b [file] [log] [blame]
From 5ae87796b8e9d6836693ec0c70a5eba063b606b9 Mon Sep 17 00:00:00 2001
From: Michael Lee <michael-cy.lee@mediatek.com>
Date: Wed, 3 May 2023 16:10:57 +0800
Subject: [PATCH 33/35] hostapd: mtk: Fix unexpected AP beacon state transition
When AP fails to set the beacon, it assigns bss->beacon_set to 0 no
matter what the error number is.
However, in the case that the error number is -EBUSY, the driver might
not free the beacon and expect a later beacon re-setting. If hostapd set
a new beacon under this case, the driver will return -EALREADY.
This patch checks the error number after hostapd fails to set the
beacon. If the error number is -EBUSY, bss->beacon_set will not be
assigned to 0.
Signed-off-by: Michael Lee <michael-cy.lee@mediatek.com>
---
src/drivers/driver_nl80211.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 3d71405..e744a18 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -4976,7 +4976,8 @@ static int wpa_driver_nl80211_set_ap(void *priv,
ret, strerror(-ret));
if (!bss->beacon_set)
ret = 0;
- bss->beacon_set = 0;
+ if (ret != -EBUSY)
+ bss->beacon_set = 0;
} else {
bss->beacon_set = 1;
nl80211_set_bss(bss, params->cts_protect, params->preamble,
--
2.18.0