This patch moves reading of supported codecs from cache to a new
function to reuse over L2CAP sockets to be used in a2dp offload
use case.
Signed-off-by: Kiran K <[email protected]>
Change-Id: I080ed7ca8abd824d3af10859afd808bad28ee86d
---
net/bluetooth/hci_codec.c | 88 +++++++++++++++++++++++++++++++++++
net/bluetooth/hci_codec.h | 2 +
net/bluetooth/sco.c | 98 +++------------------------------------
3 files changed, 96 insertions(+), 92 deletions(-)
diff --git a/net/bluetooth/hci_codec.c b/net/bluetooth/hci_codec.c
index 38201532f58e..f4d8d3a253d8 100644
--- a/net/bluetooth/hci_codec.c
+++ b/net/bluetooth/hci_codec.c
@@ -250,3 +250,91 @@ void hci_read_supported_codecs_v2(struct hci_dev *hdev)
error:
kfree_skb(skb);
}
+
+int hci_get_supported_codecs(struct hci_dev *hdev, u8 type, char __user *optval,
+ int __user *optlen, int len)
+{
+ int n = 0, buf_len = 0, err = 0;
+ struct hci_codec_caps *caps;
+ struct bt_codec codec;
+ u8 num_codecs = 0, i, __user *ptr;
+ struct codec_list *c;
+
+ if (!hci_dev_test_flag(hdev, HCI_OFFLOAD_CODECS_ENABLED)) {
+ err = -EOPNOTSUPP;
+ goto error;
+ }
+
+ if (!hdev->get_data_path_id) {
+ err = -EOPNOTSUPP;
+ goto error;
+ }
+
+ /* find total buffer size required to copy codec + capabilities */
+ hci_dev_lock(hdev);
+ list_for_each_entry(c, &hdev->local_codecs, list) {
+ if (c->transport != type)
+ continue;
+ num_codecs++;
+ for (i = 0, caps = c->caps; i < c->num_caps; i++) {
+ buf_len += 1 + caps->len;
+ caps = (void *)&caps->data[caps->len];
+ }
+ buf_len += sizeof(struct bt_codec);
+ }
+ hci_dev_unlock(hdev);
+
+ buf_len += sizeof(struct bt_codecs);
+ if (buf_len > len) {
+ err = -ENOBUFS;
+ goto error;
+ }
+ ptr = optval;
+
+ if (put_user(num_codecs, ptr)) {
+ err = -EFAULT;
+ goto error;
+ }
+ ptr += sizeof(num_codecs);
+
+ /* Iterate over all the codecs on required transport */
+ hci_dev_lock(hdev);
+ list_for_each_entry(c, &hdev->local_codecs, list) {
+ if (c->transport != type)
+ continue;
+
+ codec.id = c->id;
+ codec.cid = c->cid;
+ codec.vid = c->vid;
+ err = hdev->get_data_path_id(hdev, &codec.data_path);
+ if (err < 0)
+ break;
+ codec.num_caps = c->num_caps;
+ if (copy_to_user(ptr, &codec, sizeof(codec))) {
+ err = -EFAULT;
+ break;
+ }
+ ptr += sizeof(codec);
+
+ /* find codec capabilities data length */
+ n = 0;
+ for (i = 0, caps = c->caps; i < c->num_caps; i++) {
+ n += 1 + caps->len;
+ caps = (void *)&caps->data[caps->len];
+ }
+
+ /* copy codec capabilities data */
+ if (n && copy_to_user(ptr, c->caps, n)) {
+ err = -EFAULT;
+ break;
+ }
+ ptr += n;
+ }
+ hci_dev_unlock(hdev);
+
+ if (!err && put_user(buf_len, optlen))
+ err = -EFAULT;
+
+error:
+ return err;
+}
diff --git a/net/bluetooth/hci_codec.h b/net/bluetooth/hci_codec.h
index a2751930f123..6e849c7d75b9 100644
--- a/net/bluetooth/hci_codec.h
+++ b/net/bluetooth/hci_codec.h
@@ -5,3 +5,5 @@
void hci_read_supported_codecs(struct hci_dev *hdev);
void hci_read_supported_codecs_v2(struct hci_dev *hdev);
void hci_codec_list_clear(struct list_head *codec_list);
+int hci_get_supported_codecs(struct hci_dev *hdev, u8 type, char __user *optval,
+ int __user *optlen, int len);
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
index 8eabf41b2993..0af814c13b5f 100644
--- a/net/bluetooth/sco.c
+++ b/net/bluetooth/sco.c
@@ -33,6 +33,8 @@
#include <net/bluetooth/hci_core.h>
#include <net/bluetooth/sco.h>
+#include "hci_codec.h"
+
static bool disable_esco;
static const struct proto_ops sco_sock_ops;
@@ -1032,12 +1034,7 @@ static int sco_sock_getsockopt(struct socket *sock, int level, int optname,
struct bt_voice voice;
u32 phys;
int pkt_status;
- int buf_len;
- struct codec_list *c;
- u8 num_codecs, i, __user *ptr;
struct hci_dev *hdev;
- struct hci_codec_caps *caps;
- struct bt_codec codec;
BT_DBG("sk %p", sk);
@@ -1103,98 +1100,15 @@ static int sco_sock_getsockopt(struct socket *sock, int level, int optname,
break;
case BT_CODEC:
- num_codecs = 0;
- buf_len = 0;
-
- hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src, BDADDR_BREDR);
+ hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src,
+ BDADDR_BREDR);
if (!hdev) {
err = -EBADFD;
break;
}
-
- if (!hci_dev_test_flag(hdev, HCI_OFFLOAD_CODECS_ENABLED)) {
- hci_dev_put(hdev);
- err = -EOPNOTSUPP;
- break;
- }
-
- if (!hdev->get_data_path_id) {
- hci_dev_put(hdev);
- err = -EOPNOTSUPP;
- break;
- }
-
- /* find total buffer size required to copy codec + caps */
- hci_dev_lock(hdev);
- list_for_each_entry(c, &hdev->local_codecs, list) {
- if (c->transport != HCI_TRANSPORT_SCO_ESCO)
- continue;
- num_codecs++;
- for (i = 0, caps = c->caps; i < c->num_caps; i++) {
- buf_len += 1 + caps->len;
- caps = (void *)&caps->data[caps->len];
- }
- buf_len += sizeof(struct bt_codec);
- }
- hci_dev_unlock(hdev);
-
- buf_len += sizeof(struct bt_codecs);
- if (buf_len > len) {
- hci_dev_put(hdev);
- err = -ENOBUFS;
- break;
- }
- ptr = optval;
-
- if (put_user(num_codecs, ptr)) {
- hci_dev_put(hdev);
- err = -EFAULT;
- break;
- }
- ptr += sizeof(num_codecs);
-
- /* Iterate all the codecs supported over SCO and populate
- * codec data
- */
- hci_dev_lock(hdev);
- list_for_each_entry(c, &hdev->local_codecs, list) {
- if (c->transport != HCI_TRANSPORT_SCO_ESCO)
- continue;
-
- codec.id = c->id;
- codec.cid = c->cid;
- codec.vid = c->vid;
- err = hdev->get_data_path_id(hdev, &codec.data_path);
- if (err < 0)
- break;
- codec.num_caps = c->num_caps;
- if (copy_to_user(ptr, &codec, sizeof(codec))) {
- err = -EFAULT;
- break;
- }
- ptr += sizeof(codec);
-
- /* find codec capabilities data length */
- len = 0;
- for (i = 0, caps = c->caps; i < c->num_caps; i++) {
- len += 1 + caps->len;
- caps = (void *)&caps->data[caps->len];
- }
-
- /* copy codec capabilities data */
- if (len && copy_to_user(ptr, c->caps, len)) {
- err = -EFAULT;
- break;
- }
- ptr += len;
- }
-
- if (!err && put_user(buf_len, optlen))
- err = -EFAULT;
-
- hci_dev_unlock(hdev);
+ err = hci_get_supported_codecs(hdev, HCI_TRANSPORT_SCO_ESCO,
+ optval, optlen, len);
hci_dev_put(hdev);
-
break;
default:
--
2.17.1
During *setup*, when configuring offload, set get_data_path_id callback
function and support fetching of data path id for a2dp offload use case.
Signed-off-by: Kiran K <[email protected]>
Change-Id: Id05bff65e5e88ac4e6379d4184a5775fb6330c6d
---
drivers/bluetooth/btintel.c | 28 +++++++++++++++++++++++-----
1 file changed, 23 insertions(+), 5 deletions(-)
diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c
index de4667179efb..8dcb0e3c7386 100644
--- a/drivers/bluetooth/btintel.c
+++ b/drivers/bluetooth/btintel.c
@@ -2212,16 +2212,30 @@ static int btintel_get_data_path_id(struct hci_dev *hdev, __u8 transport,
{
struct btintel_data *intel_data;
- if (transport != HCI_TRANSPORT_SCO_ESCO)
+ if (transport != HCI_TRANSPORT_SCO_ESCO &&
+ transport != HCI_TRANSPORT_ACL) {
+ bt_dev_err(hdev, "Invalid transport type %u", transport);
return -EINVAL;
+ }
intel_data = hci_get_priv((hdev));
- if (intel_data->use_cases.preset[0] & 0x03) {
- /* Intel uses 1 as data path id for all the usecases */
- *data_path_id = 1;
- return 0;
+ switch (transport) {
+ case HCI_TRANSPORT_SCO_ESCO:
+ if (intel_data->use_cases.preset[0] & 0x03) {
+ *data_path_id = 1;
+ return 0;
+ }
+ break;
+ case HCI_TRANSPORT_ACL:
+ if (intel_data->use_cases.preset[0] & 0x08) {
+ *data_path_id = 1;
+ return 0;
+ }
+ break;
}
+ bt_dev_err(hdev, "Required preset is not supported 0x%02x",
+ intel_data->use_cases.preset[0]);
return -EOPNOTSUPP;
}
@@ -2260,6 +2274,10 @@ static int btintel_configure_offload(struct hci_dev *hdev)
hdev->get_codec_config_data = btintel_get_codec_config_data;
}
+ /* supports SBC codec for a2dp offload */
+ if (use_cases->preset[0] & 0x08)
+ hdev->get_data_path_id = btintel_get_data_path_id;
+
error:
kfree_skb(skb);
return err;
--
2.17.1
Please ignore this v1 patchset. Need to remove ChangeId in commit message in patches. I will send update v2 version.
Thanks,
Kiran
> -----Original Message-----
> From: K, Kiran <[email protected]>
> Sent: Friday, October 8, 2021 7:29 PM
> To: [email protected]
> Cc: Srivatsa, Ravishankar <[email protected]>; Tumkur
> Narayan, Chethan <[email protected]>; Von Dentz, Luiz
> <[email protected]>; K, Kiran <[email protected]>
> Subject: [PATCH v1 1/7] Bluetooth: Refactor code to read supported codecs
> in getsockopt
>
> This patch moves reading of supported codecs from cache to a new function
> to reuse over L2CAP sockets to be used in a2dp offload use case.
>
> Signed-off-by: Kiran K <[email protected]>
> Change-Id: I080ed7ca8abd824d3af10859afd808bad28ee86d
> ---
> net/bluetooth/hci_codec.c | 88 +++++++++++++++++++++++++++++++++++
> net/bluetooth/hci_codec.h | 2 +
> net/bluetooth/sco.c | 98 +++------------------------------------
> 3 files changed, 96 insertions(+), 92 deletions(-)
>
> diff --git a/net/bluetooth/hci_codec.c b/net/bluetooth/hci_codec.c index
> 38201532f58e..f4d8d3a253d8 100644
> --- a/net/bluetooth/hci_codec.c
> +++ b/net/bluetooth/hci_codec.c
> @@ -250,3 +250,91 @@ void hci_read_supported_codecs_v2(struct hci_dev
> *hdev)
> error:
> kfree_skb(skb);
> }
> +
> +int hci_get_supported_codecs(struct hci_dev *hdev, u8 type, char __user
> *optval,
> + int __user *optlen, int len)
> +{
> + int n = 0, buf_len = 0, err = 0;
> + struct hci_codec_caps *caps;
> + struct bt_codec codec;
> + u8 num_codecs = 0, i, __user *ptr;
> + struct codec_list *c;
> +
> + if (!hci_dev_test_flag(hdev, HCI_OFFLOAD_CODECS_ENABLED)) {
> + err = -EOPNOTSUPP;
> + goto error;
> + }
> +
> + if (!hdev->get_data_path_id) {
> + err = -EOPNOTSUPP;
> + goto error;
> + }
> +
> + /* find total buffer size required to copy codec + capabilities */
> + hci_dev_lock(hdev);
> + list_for_each_entry(c, &hdev->local_codecs, list) {
> + if (c->transport != type)
> + continue;
> + num_codecs++;
> + for (i = 0, caps = c->caps; i < c->num_caps; i++) {
> + buf_len += 1 + caps->len;
> + caps = (void *)&caps->data[caps->len];
> + }
> + buf_len += sizeof(struct bt_codec);
> + }
> + hci_dev_unlock(hdev);
> +
> + buf_len += sizeof(struct bt_codecs);
> + if (buf_len > len) {
> + err = -ENOBUFS;
> + goto error;
> + }
> + ptr = optval;
> +
> + if (put_user(num_codecs, ptr)) {
> + err = -EFAULT;
> + goto error;
> + }
> + ptr += sizeof(num_codecs);
> +
> + /* Iterate over all the codecs on required transport */
> + hci_dev_lock(hdev);
> + list_for_each_entry(c, &hdev->local_codecs, list) {
> + if (c->transport != type)
> + continue;
> +
> + codec.id = c->id;
> + codec.cid = c->cid;
> + codec.vid = c->vid;
> + err = hdev->get_data_path_id(hdev, &codec.data_path);
> + if (err < 0)
> + break;
> + codec.num_caps = c->num_caps;
> + if (copy_to_user(ptr, &codec, sizeof(codec))) {
> + err = -EFAULT;
> + break;
> + }
> + ptr += sizeof(codec);
> +
> + /* find codec capabilities data length */
> + n = 0;
> + for (i = 0, caps = c->caps; i < c->num_caps; i++) {
> + n += 1 + caps->len;
> + caps = (void *)&caps->data[caps->len];
> + }
> +
> + /* copy codec capabilities data */
> + if (n && copy_to_user(ptr, c->caps, n)) {
> + err = -EFAULT;
> + break;
> + }
> + ptr += n;
> + }
> + hci_dev_unlock(hdev);
> +
> + if (!err && put_user(buf_len, optlen))
> + err = -EFAULT;
> +
> +error:
> + return err;
> +}
> diff --git a/net/bluetooth/hci_codec.h b/net/bluetooth/hci_codec.h index
> a2751930f123..6e849c7d75b9 100644
> --- a/net/bluetooth/hci_codec.h
> +++ b/net/bluetooth/hci_codec.h
> @@ -5,3 +5,5 @@
> void hci_read_supported_codecs(struct hci_dev *hdev); void
> hci_read_supported_codecs_v2(struct hci_dev *hdev); void
> hci_codec_list_clear(struct list_head *codec_list);
> +int hci_get_supported_codecs(struct hci_dev *hdev, u8 type, char __user
> *optval,
> + int __user *optlen, int len);
> diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c index
> 8eabf41b2993..0af814c13b5f 100644
> --- a/net/bluetooth/sco.c
> +++ b/net/bluetooth/sco.c
> @@ -33,6 +33,8 @@
> #include <net/bluetooth/hci_core.h>
> #include <net/bluetooth/sco.h>
>
> +#include "hci_codec.h"
> +
> static bool disable_esco;
>
> static const struct proto_ops sco_sock_ops; @@ -1032,12 +1034,7 @@ static
> int sco_sock_getsockopt(struct socket *sock, int level, int optname,
> struct bt_voice voice;
> u32 phys;
> int pkt_status;
> - int buf_len;
> - struct codec_list *c;
> - u8 num_codecs, i, __user *ptr;
> struct hci_dev *hdev;
> - struct hci_codec_caps *caps;
> - struct bt_codec codec;
>
> BT_DBG("sk %p", sk);
>
> @@ -1103,98 +1100,15 @@ static int sco_sock_getsockopt(struct socket
> *sock, int level, int optname,
> break;
>
> case BT_CODEC:
> - num_codecs = 0;
> - buf_len = 0;
> -
> - hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src,
> BDADDR_BREDR);
> + hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src,
> + BDADDR_BREDR);
> if (!hdev) {
> err = -EBADFD;
> break;
> }
> -
> - if (!hci_dev_test_flag(hdev,
> HCI_OFFLOAD_CODECS_ENABLED)) {
> - hci_dev_put(hdev);
> - err = -EOPNOTSUPP;
> - break;
> - }
> -
> - if (!hdev->get_data_path_id) {
> - hci_dev_put(hdev);
> - err = -EOPNOTSUPP;
> - break;
> - }
> -
> - /* find total buffer size required to copy codec + caps */
> - hci_dev_lock(hdev);
> - list_for_each_entry(c, &hdev->local_codecs, list) {
> - if (c->transport != HCI_TRANSPORT_SCO_ESCO)
> - continue;
> - num_codecs++;
> - for (i = 0, caps = c->caps; i < c->num_caps; i++) {
> - buf_len += 1 + caps->len;
> - caps = (void *)&caps->data[caps->len];
> - }
> - buf_len += sizeof(struct bt_codec);
> - }
> - hci_dev_unlock(hdev);
> -
> - buf_len += sizeof(struct bt_codecs);
> - if (buf_len > len) {
> - hci_dev_put(hdev);
> - err = -ENOBUFS;
> - break;
> - }
> - ptr = optval;
> -
> - if (put_user(num_codecs, ptr)) {
> - hci_dev_put(hdev);
> - err = -EFAULT;
> - break;
> - }
> - ptr += sizeof(num_codecs);
> -
> - /* Iterate all the codecs supported over SCO and populate
> - * codec data
> - */
> - hci_dev_lock(hdev);
> - list_for_each_entry(c, &hdev->local_codecs, list) {
> - if (c->transport != HCI_TRANSPORT_SCO_ESCO)
> - continue;
> -
> - codec.id = c->id;
> - codec.cid = c->cid;
> - codec.vid = c->vid;
> - err = hdev->get_data_path_id(hdev,
> &codec.data_path);
> - if (err < 0)
> - break;
> - codec.num_caps = c->num_caps;
> - if (copy_to_user(ptr, &codec, sizeof(codec))) {
> - err = -EFAULT;
> - break;
> - }
> - ptr += sizeof(codec);
> -
> - /* find codec capabilities data length */
> - len = 0;
> - for (i = 0, caps = c->caps; i < c->num_caps; i++) {
> - len += 1 + caps->len;
> - caps = (void *)&caps->data[caps->len];
> - }
> -
> - /* copy codec capabilities data */
> - if (len && copy_to_user(ptr, c->caps, len)) {
> - err = -EFAULT;
> - break;
> - }
> - ptr += len;
> - }
> -
> - if (!err && put_user(buf_len, optlen))
> - err = -EFAULT;
> -
> - hci_dev_unlock(hdev);
> + err = hci_get_supported_codecs(hdev,
> HCI_TRANSPORT_SCO_ESCO,
> + optval, optlen, len);
> hci_dev_put(hdev);
> -
> break;
>
> default:
> --
> 2.17.1
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=560011
---Test result---
Test Summary:
CheckPatch FAIL 12.98 seconds
GitLint PASS 6.51 seconds
BuildKernel PASS 659.34 seconds
TestRunner: Setup PASS 455.35 seconds
TestRunner: l2cap-tester PASS 9.94 seconds
TestRunner: bnep-tester PASS 5.37 seconds
TestRunner: mgmt-tester PASS 85.89 seconds
TestRunner: rfcomm-tester PASS 6.77 seconds
TestRunner: sco-tester PASS 6.96 seconds
TestRunner: smp-tester PASS 6.66 seconds
TestRunner: userchan-tester PASS 5.64 seconds
Details
##############################
Test: CheckPatch - FAIL - 12.98 seconds
Run checkpatch.pl script with rule in .checkpatch.conf
[v1,1/7] Bluetooth: Refactor code to read supported codecs in getsockopt\ERROR:GERRIT_CHANGE_ID: Remove Gerrit Change-Id's before submitting upstream
#56:
Change-Id: I080ed7ca8abd824d3af10859afd808bad28ee86d
total: 1 errors, 0 warnings, 0 checks, 218 lines checked
NOTE: For some of the reported defects, checkpatch may be able to
mechanically convert to the typical style using --fix or --fix-inplace.
/github/workspace/src/12545457.patch has style problems, please review.
NOTE: Ignored message types: UNKNOWN_COMMIT_ID
NOTE: If any of the errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.
[v1,2/7] Bluetooth: Support reading of codecs supported over l2cap socket\ERROR:GERRIT_CHANGE_ID: Remove Gerrit Change-Id's before submitting upstream
#57:
Change-Id: I1592f3bb1167771bfb2cb9114438e473ea372c90
total: 1 errors, 0 warnings, 0 checks, 39 lines checked
NOTE: For some of the reported defects, checkpatch may be able to
mechanically convert to the typical style using --fix or --fix-inplace.
/github/workspace/src/12545459.patch has style problems, please review.
NOTE: Ignored message types: UNKNOWN_COMMIT_ID
NOTE: If any of the errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.
[v1,3/7] Bluetooth: btintel: cache offload use case data\ERROR:GERRIT_CHANGE_ID: Remove Gerrit Change-Id's before submitting upstream
#57:
Change-Id: I4057eb3ce1412baf0f0ba1bb83bbe71aaefaf9fc
total: 1 errors, 0 warnings, 29 lines checked
NOTE: For some of the reported defects, checkpatch may be able to
mechanically convert to the typical style using --fix or --fix-inplace.
/github/workspace/src/12545461.patch has style problems, please review.
NOTE: Ignored message types: UNKNOWN_COMMIT_ID
NOTE: If any of the errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.
[v1,4/7] Bluetooth: Pass transport type in get_data_path_id\ERROR:GERRIT_CHANGE_ID: Remove Gerrit Change-Id's before submitting upstream
#57:
Change-Id: Ie3f0c50cb07b6cf8e8ae001361940e8b1411b461
total: 1 errors, 0 warnings, 0 checks, 110 lines checked
NOTE: For some of the reported defects, checkpatch may be able to
mechanically convert to the typical style using --fix or --fix-inplace.
/github/workspace/src/12545463.patch has style problems, please review.
NOTE: Ignored message types: UNKNOWN_COMMIT_ID
NOTE: If any of the errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.
[v1,5/7] Bluetooth: btintel: Add support to fetch data path id for a2dp offload\ERROR:GERRIT_CHANGE_ID: Remove Gerrit Change-Id's before submitting upstream
#57:
Change-Id: Id05bff65e5e88ac4e6379d4184a5775fb6330c6d
total: 1 errors, 0 warnings, 45 lines checked
NOTE: For some of the reported defects, checkpatch may be able to
mechanically convert to the typical style using --fix or --fix-inplace.
/github/workspace/src/12545465.patch has style problems, please review.
NOTE: Ignored message types: UNKNOWN_COMMIT_ID
NOTE: If any of the errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.
[v1,6/7] Bluetooth: Remove unused member in struct hci_vnd_codec_v2\ERROR:GERRIT_CHANGE_ID: Remove Gerrit Change-Id's before submitting upstream
#56:
Change-Id: I466f0ecac850115d15dfe72a943fbf3f31baf18d
ERROR:MISSING_SIGN_OFF: Missing Signed-off-by: line(s)
total: 2 errors, 0 warnings, 7 lines checked
NOTE: For some of the reported defects, checkpatch may be able to
mechanically convert to the typical style using --fix or --fix-inplace.
/github/workspace/src/12545467.patch has style problems, please review.
NOTE: Ignored message types: UNKNOWN_COMMIT_ID
NOTE: If any of the errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.
[v1,7/7] Bluetooth: Read Output codec capabilities\ERROR:GERRIT_CHANGE_ID: Remove Gerrit Change-Id's before submitting upstream
#55:
Change-Id: I68c9aaca0fb0f57be3cceb33251b39acfae58aaa
ERROR:MISSING_SIGN_OFF: Missing Signed-off-by: line(s)
total: 2 errors, 0 warnings, 0 checks, 38 lines checked
NOTE: For some of the reported defects, checkpatch may be able to
mechanically convert to the typical style using --fix or --fix-inplace.
/github/workspace/src/12545469.patch has style problems, please review.
NOTE: Ignored message types: UNKNOWN_COMMIT_ID
NOTE: If any of the errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.
---
Regards,
Linux Bluetooth