[PATCH] P2P: Clear 'pending_listen_freq' on stop_listen()
Benjamin Berg
benjamin at sipsolutions.net
Thu Aug 13 07:02:15 PDT 2026
From: Ilan Peer <ilan.peer at intel.com>
In case that a P2P listen is done before it is actually started
the 'pending_listen_freq' state variable was not cleared, an thus
following operations (listen after search) are blocked.
To handle this in case the 'stop_listen' callback is called,
make sure that the 'pending_listen_freq' is also cleared'.
Signed-off-by: Ilan Peer <ilan.peer at intel.com>
---
src/p2p/p2p.c | 6 ++++++
src/p2p/p2p_invitation.c | 7 +++++++
2 files changed, 13 insertions(+)
diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c
index 0ec6c6870e..09ed2fe0fa 100644
--- a/src/p2p/p2p.c
+++ b/src/p2p/p2p.c
@@ -1051,6 +1051,12 @@ static void p2p_search(struct p2p_data *p2p)
p2p_dbg(p2p, "Driver is still in Listen state - wait for it to end before continuing");
return;
}
+
+ if (p2p->pending_listen_freq) {
+ p2p_dbg(p2p, "Clear pending_listen_freq for p2p_search");
+ p2p->pending_listen_freq = 0;
+ }
+
p2p->cfg->stop_listen(p2p->cfg->cb_ctx);
p2p->pending_listen_wait_drv = false;
diff --git a/src/p2p/p2p_invitation.c b/src/p2p/p2p_invitation.c
index a24fbb6863..50e73333ec 100644
--- a/src/p2p/p2p_invitation.c
+++ b/src/p2p/p2p_invitation.c
@@ -573,6 +573,13 @@ void p2p_process_invitation_resp(struct p2p_data *p2p, const u8 *sa,
&p2p->op_channel, NULL, NULL) == 0) {
p2p->retry_invite_req = 0;
p2p->cfg->send_action_done(p2p->cfg->cb_ctx);
+
+ if (p2p->pending_listen_freq) {
+ p2p_dbg(p2p,
+ "Clear pending_listen_freq for p2p_invite");
+ p2p->pending_listen_freq = 0;
+ }
+
p2p->cfg->stop_listen(p2p->cfg->cb_ctx);
p2p_set_state(p2p, P2P_INVITE);
p2p_dbg(p2p, "Resend Invitation Request setting op_class %u channel %u as operating channel",
--
2.55.0
More information about the Hostap
mailing list