Re: [PATCH] Bluetooth: hci_event: Mask data status from LE ext adv reports

From: Luiz Augusto von Dentz
Date: Mon Jul 21 2025 - 09:35:18 EST


Hi Chris,

On Sat, Jul 19, 2025 at 12:04 PM Chris Down <chris@xxxxxxxxxxxxxx> wrote:
>
> Hi Luiz,
>
> >Try to capture one of them using btmon and then add to the patch description.
>
> Thanks, I have one now and will add for v2.
>
> >> >> - if (evt_type == LE_EXT_ADV_NON_CONN_IND ||
> >> >> - evt_type & LE_EXT_ADV_DIRECT_IND)
> >> >> + if (pdu_type == LE_EXT_ADV_NON_CONN_IND ||
> >> >
> >> >I'm not sure I would keep checking for LE_EXT_ADV_NON_CONN_IND, maybe
> >> >just return LE_ADV_NONCONN_IND, LE_EXT_ADV_NON_CONN_IND is not
> >> >actually a bit it is the absence of any bits being set, so I guess the
> >> >only invalid adv are the ones for legacy which seem to require a bit
> >> >to be set.
> >>
> >> So are you thinking of doing this?
> >>
> >> if (!(pdu_type & ~(LE_EXT_ADV_DIRECT_IND)))
> >> return LE_ADV_NONCONN_IND;
> >
> >We can probably return early on if (!evt_type) return
> >LE_ADV_NONCONN_IND since there is no point in evaluating it if it is
> >zero.
>
> I guess you meant `if (!pdu_type)`? That correctly handles the 0x40 case (where
> pdu_type becomes 0), but it would miss non-connectable directed advertisements
> (PDU type 0x04), right? Or maybe you meant something else?

Yes, we can just test for !pdu_type and return LE_ADV_NONCONN_IND
skipping any testing of bits.

--
Luiz Augusto von Dentz