Re: [PATCH 10/10] Bluetooth: btusb: Detect if an ACL packet is in fact an ISO packet

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Marcel,

On Wed, Jan 8, 2020 at 1:25 PM Marcel Holtmann <marcel@xxxxxxxxxxxx> wrote:
>
> Hi Luiz,
>
> > Fix up the packet type if ISO packets are sent over the bulk endpoint.
> >
> > Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx>
> > ---
> > drivers/bluetooth/btusb.c | 7 +++++++
> > 1 file changed, 7 insertions(+)
> >
> > diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> > index ded0ba83bcce..c1e030fc272f 100644
> > --- a/drivers/bluetooth/btusb.c
> > +++ b/drivers/bluetooth/btusb.c
> > @@ -663,11 +663,18 @@ static int btusb_recv_bulk(struct btusb_data *data, void *buffer, int count)
> >               hci_skb_expect(skb) -= len;
> >
> >               if (skb->len == HCI_ACL_HDR_SIZE) {
> > +                     __u16 handle = __le16_to_cpu(hci_acl_hdr(skb)->handle);
> >                       __le16 dlen = hci_acl_hdr(skb)->dlen;
> > +                     __u8 type;
> >
> >                       /* Complete ACL header */
> >                       hci_skb_expect(skb) = __le16_to_cpu(dlen);
> >
> > +                     type = hci_conn_lookup_type(data->hdev,
> > +                                                 hci_handle(handle));
> > +                     if (type == ISO_LINK)
> > +                             hci_skb_pkt_type(skb) = HCI_ISODATA_PKT;
> > +
> >                       if (skb_tailroom(skb) < hci_skb_expect(skb)) {
> >                               kfree_skb(skb);
> >                               skb = NULL;
>
> is this a local hack for development. We can not just look up the connection type on every packet we receive.

Unfortunately there is no dedicated endpoint for ISO packets, what I
could do instead is try to figure out if there is any ISO connection
first and only then lookup but that would still incur in lookups when
an ISO link is up.

> Regards
>
> Marcel
>


-- 
Luiz Augusto von Dentz



[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux