All of lore.kernel.org
 help / color / mirror / Atom feed
From: "K, Kiran" <kiran.k@intel.com>
To: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Cc: "linux-bluetooth@vger.kernel.org"
	<linux-bluetooth@vger.kernel.org>,
	"Srivatsa, Ravishankar" <ravishankar.srivatsa@intel.com>,
	"Tumkur Narayan, Chethan" <chethan.tumkur.narayan@intel.com>,
	"Von Dentz, Luiz" <luiz.von.dentz@intel.com>
Subject: RE: [PATCH v1 1/3] Bluetooth: add support to enumerate codec capabilities
Date: Mon, 12 Apr 2021 08:31:11 +0000	[thread overview]
Message-ID: <DM8PR11MB5573378DE2583B2261C54627F5709@DM8PR11MB5573.namprd11.prod.outlook.com> (raw)
In-Reply-To: <CABBYNZLm5jqbzDVNLRG4G1bSgK8AwCPmz_gjGZ92Oo2EZxfpvQ@mail.gmail.com>

Hi Luiz,

Thanks for the comments.  I will fix and send out an updated version.

Regards,
Kiran

> -----Original Message-----
> From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
> Sent: Friday, April 9, 2021 10:32 PM
> To: K, Kiran <kiran.k@intel.com>
> Cc: linux-bluetooth@vger.kernel.org; Srivatsa, Ravishankar
> <ravishankar.srivatsa@intel.com>; Tumkur Narayan, Chethan
> <chethan.tumkur.narayan@intel.com>; Von Dentz, Luiz
> <luiz.von.dentz@intel.com>
> Subject: Re: [PATCH v1 1/3] Bluetooth: add support to enumerate codec
> capabilities
> 
> Hi Kiran,
> 
> On Fri, Apr 9, 2021 at 5:21 AM Kiran K <kiran.k@intel.com> wrote:
> >
> > add support to enumerate local supported codec capabilities
> >
> > < HCI Command: Read Local Suppor.. (0x04|0x000e) plen 7
> >         Codec: mSBC (0x05)
> >         Logical Transport Type: 0x00
> >         Direction: Input (Host to Controller) (0x00)
> > > HCI Event: Command Complete (0x0e) plen 12
> >       Read Local Supported Codec Capabilities (0x04|0x000e) ncmd 1
> >         Status: Success (0x00)
> >         Number of codec capabilities: 1
> >          Capabilities #0:
> >         00 00 11 15 02 33
> >
> > Signed-off-by: Kiran K <kiran.k@intel.com>
> > Signed-off-by: Chethan T N <chethan.tumkur.narayan@intel.com>
> > Signed-off-by: Srivatsa Ravishankar <ravishankar.srivatsa@intel.com>
> > ---
> >  include/net/bluetooth/hci.h |  7 +++++
> >  net/bluetooth/hci_event.c   | 56
> +++++++++++++++++++++++++++++++++++++
> >  2 files changed, 63 insertions(+)
> >
> > diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
> > index ea4ae551c426..e3f7771fe84f 100644
> > --- a/include/net/bluetooth/hci.h
> > +++ b/include/net/bluetooth/hci.h
> > @@ -1314,6 +1314,13 @@ struct hci_rp_read_local_pairing_opts {
> >         __u8     max_key_size;
> >  } __packed;
> >
> > +#define HCI_OP_READ_LOCAL_CODEC_CAPS   0x100e
> > +struct hci_op_read_local_codec_caps {
> > +       __u8    codec_id[5];
> > +       __u8    transport;
> > +       __u8    direction;
> > +} __packed;
> > +
> >  #define HCI_OP_READ_PAGE_SCAN_ACTIVITY 0x0c1b  struct
> > hci_rp_read_page_scan_activity {
> >         __u8     status;
> > diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
> > index 016b2999f219..ceed5a5d332b 100644
> > --- a/net/bluetooth/hci_event.c
> > +++ b/net/bluetooth/hci_event.c
> > @@ -887,6 +887,58 @@ static void hci_cc_read_data_block_size(struct
> hci_dev *hdev,
> >                hdev->block_cnt, hdev->block_len);  }
> >
> > +static void hci_cc_read_local_codecs(struct hci_dev *hdev,
> > +                                    struct sk_buff *skb) {
> > +       __u8 num_codecs;
> > +       __u8 *ptr;
> > +       struct hci_op_read_local_codec_caps caps;
> > +
> > +       bt_dev_dbg(hdev, "status 0x%2.2x", skb->data[0]);
> > +
> > +       if (skb->data[0])
> > +               return;
> > +
> > +       /* enumerate standard codecs */
> > +       skb_pull(skb, 1);
> 
> After each skb_pull check the expected length against skb->len.
> 
> > +       num_codecs = skb->data[0];
> > +
> > +       bt_dev_dbg(hdev, "Number of standard codecs: %u", num_codecs);
> > +
> > +       skb_pull(skb, 1);
> 
> Ditto.
> 
> > +       ptr = (__u8 *)skb->data;
> > +
> > +       skb_pull(skb, num_codecs);
> > +
> > +       while (num_codecs--) {
> > +               caps.codec_id[0] = *ptr++;
> 
> Lets just use skb_pull to advance on the codecs ids, that way we can properly
> check the remaining length with use of skb->len.
> 
> > +               caps.transport = 0x00;
> > +               caps.direction = 0x00;
> > +
> > +               hci_send_cmd(hdev, HCI_OP_READ_LOCAL_CODEC_CAPS,
> sizeof(caps),
> > +                            &caps);
> > +       }
> > +
> > +       /* enumerate vendor specific codecs */
> > +       num_codecs = skb->data[0];
> > +       skb_pull(skb, 1);
> > +
> > +       bt_dev_dbg(hdev, "Number of vendor specific codecs: %u",
> > + num_codecs);
> > +
> > +       ptr = (__u8 *)skb->data;
> > +
> > +       while (num_codecs--) {
> > +               caps.codec_id[0] = 0xFF;
> > +               memcpy(&caps.codec_id[1], ptr, 4);
> > +               ptr += 4;
> > +               caps.transport = 0x00;
> > +               caps.direction = 0x00;
> > +
> > +               hci_send_cmd(hdev, HCI_OP_READ_LOCAL_CODEC_CAPS,
> sizeof(caps),
> > +                            &caps);
> > +       }
> > +}
> > +
> >  static void hci_cc_read_clock(struct hci_dev *hdev, struct sk_buff
> > *skb)  {
> >         struct hci_rp_read_clock *rp = (void *) skb->data; @@ -3437,6
> > +3489,10 @@ static void hci_cmd_complete_evt(struct hci_dev *hdev,
> struct sk_buff *skb,
> >                 hci_cc_read_data_block_size(hdev, skb);
> >                 break;
> >
> > +       case HCI_OP_READ_LOCAL_CODECS:
> > +               hci_cc_read_local_codecs(hdev, skb);
> > +               break;
> > +
> >         case HCI_OP_READ_FLOW_CONTROL_MODE:
> >                 hci_cc_read_flow_control_mode(hdev, skb);
> >                 break;
> > --
> > 2.17.1
> >
> 
> 
> --
> Luiz Augusto von Dentz

  reply	other threads:[~2021-04-12  8:31 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-09 12:24 [PATCH v1 0/3] Enumerate supported codecs and cache the data at driver Kiran K
2021-04-09 12:24 ` [PATCH v1 1/3] Bluetooth: add support to enumerate codec capabilities Kiran K
2021-04-09 13:24   ` Enumerate supported codecs and cache the data at driver bluez.test.bot
2021-04-09 17:02   ` [PATCH v1 1/3] Bluetooth: add support to enumerate codec capabilities Luiz Augusto von Dentz
2021-04-12  8:31     ` K, Kiran [this message]
2021-04-09 12:24 ` [PATCH v1 2/3] Bluetooth: add support to enumerate local supports codecs v2 Kiran K
2021-04-09 17:15   ` Luiz Augusto von Dentz
2021-04-09 12:24 ` [PATCH v1 3/3] Bluetooth: cache local supported codec capabilities Kiran K
2021-04-09 17:40   ` 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=DM8PR11MB5573378DE2583B2261C54627F5709@DM8PR11MB5573.namprd11.prod.outlook.com \
    --to=kiran.k@intel.com \
    --cc=chethan.tumkur.narayan@intel.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=luiz.dentz@gmail.com \
    --cc=luiz.von.dentz@intel.com \
    --cc=ravishankar.srivatsa@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.