Linux bluetooth development
 help / color / mirror / Atom feed
From: Pauli Virtanen <pav@iki.fi>
To: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH BlueZ] shared/bap: reset local ep states on bap session detach
Date: Mon, 11 Aug 2025 20:05:48 +0300	[thread overview]
Message-ID: <84edc0cd137307d7baba0b8d3a002e7a3593d111.camel@iki.fi> (raw)
In-Reply-To: <17eac95c2065b3a21f3d647a3422b3f099cccb46.camel@iki.fi>

ma, 2025-08-11 kello 19:54 +0300, Pauli Virtanen kirjoitti:

[clip]
> We could reset the endpoint state in stream_set_state() if there is no
> session, if that sounds better, instead of doing it in bt_bap_detach()
> like here.
> 
> IIUC stream_set_state() is supposed to be called only for streams to
> local endpoints, but not 100% sure if it's so in practice (re:
> broadcast or stream_io_disconnected).

Well, now that I wrote it down, of course bt_bap_detach() itself calls
stream_set_state() also as BAP Client. That would change remote EP
states, and not sure if we want to do that.

> > > Fix by resetting all ASE to IDLE state after detaching all streams.
> > > ---
> > >  src/shared/bap.c | 9 +++++++++
> > >  1 file changed, 9 insertions(+)
> > > 
> > > diff --git a/src/shared/bap.c b/src/shared/bap.c
> > > index ed5c322b4..d4beb9818 100644
> > > --- a/src/shared/bap.c
> > > +++ b/src/shared/bap.c
> > > @@ -5664,6 +5664,14 @@ static void stream_foreach_detach(void *data, void *user_data)
> > >         stream_set_state(stream, BT_BAP_STREAM_STATE_IDLE);
> > >  }
> > > 
> > > +static void ep_foreach_detach(void *data, void *user_data)
> > > +{
> > > +       struct bt_bap_endpoint *ep = data;
> > > +
> > > +       ep->state = BT_ASCS_ASE_STATE_IDLE;
> > > +       ep->old_state = BT_ASCS_ASE_STATE_IDLE;
> > > +}
> > > +
> > >  static void bap_req_detach(void *data)
> > >  {
> > >         struct bt_bap_req *req = data;
> > > @@ -5696,6 +5704,7 @@ void bt_bap_detach(struct bt_bap *bap)
> > >         bap->att = NULL;
> > > 
> > >         queue_foreach(bap->streams, stream_foreach_detach, bap);
> > > +       queue_foreach(bap->local_eps, ep_foreach_detach, bap);
> > 
> > This sounds more like a workaround though, the stream_foreach_detach
> > should have cleaned up all existing streams and their endpoints, we
> > could perhaps print a message if the ep->state is not idle then it
> > means something is not quite right.
> > 
> > >         queue_foreach(bap_cbs, bap_detached, bap);
> > >  }
> > > 
> > > --
> > > 2.50.1
> > > 
> > > 
> > 

-- 
Pauli Virtanen

  reply	other threads:[~2025-08-11 17:05 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-10 18:18 [PATCH BlueZ] shared/bap: reset local ep states on bap session detach Pauli Virtanen
2025-08-10 19:57 ` [BlueZ] " bluez.test.bot
2025-08-11 14:38 ` [PATCH BlueZ] " Luiz Augusto von Dentz
2025-08-11 16:54   ` Pauli Virtanen
2025-08-11 17:05     ` Pauli Virtanen [this message]
2025-08-11 17:05     ` Luiz Augusto von Dentz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=84edc0cd137307d7baba0b8d3a002e7a3593d111.camel@iki.fi \
    --to=pav@iki.fi \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=luiz.dentz@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox