2022-05-14 04:26:42

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH 1/3] Bluetooth: Add bt_status

From: Luiz Augusto von Dentz <[email protected]>

This adds bt_status which can be used to convert Unix errno to
Bluetooth status.

Signed-off-by: Luiz Augusto von Dentz <[email protected]>
---
include/net/bluetooth/bluetooth.h | 1 +
net/bluetooth/lib.c | 71 +++++++++++++++++++++++++++++++
2 files changed, 72 insertions(+)

diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h
index 6b48d9e2aab9..cfe6159f26bc 100644
--- a/include/net/bluetooth/bluetooth.h
+++ b/include/net/bluetooth/bluetooth.h
@@ -521,6 +521,7 @@ static inline struct sk_buff *bt_skb_sendmmsg(struct sock *sk,
}

int bt_to_errno(u16 code);
+__u8 bt_status(int err);

void hci_sock_set_flag(struct sock *sk, int nr);
void hci_sock_clear_flag(struct sock *sk, int nr);
diff --git a/net/bluetooth/lib.c b/net/bluetooth/lib.c
index 5326f41a58b7..469a0c95b6e8 100644
--- a/net/bluetooth/lib.c
+++ b/net/bluetooth/lib.c
@@ -135,6 +135,77 @@ int bt_to_errno(__u16 code)
}
EXPORT_SYMBOL(bt_to_errno);

+/* Unix errno to Bluetooth error codes mapping */
+__u8 bt_status(int err)
+{
+ /* Don't convert if already positive value */
+ if (err >= 0)
+ return err;
+
+ switch (err) {
+ case -EBADRQC:
+ return 0x01;
+
+ case -ENOTCONN:
+ return 0x02;
+
+ case -EIO:
+ return 0x03;
+
+ case -EHOSTDOWN:
+ return 0x04;
+
+ case -EACCES:
+ return 0x05;
+
+ case -EBADE:
+ return 0x06;
+
+ case -ENOMEM:
+ return 0x07;
+
+ case -ETIMEDOUT:
+ return 0x08;
+
+ case -EMLINK:
+ return 0x09;
+
+ case EALREADY:
+ return 0x0b;
+
+ case -EBUSY:
+ return 0x0c;
+
+ case -ECONNREFUSED:
+ return 0x0d;
+
+ case -EOPNOTSUPP:
+ return 0x11;
+
+ case -EINVAL:
+ return 0x12;
+
+ case -ECONNRESET:
+ return 0x13;
+
+ case -ECONNABORTED:
+ return 0x16;
+
+ case ELOOP:
+ return 0x17;
+
+ case -EPROTONOSUPPORT:
+ return 0x1a;
+
+ case -EPROTO:
+ return 0x19;
+
+ default:
+ return 0x1f;
+ }
+}
+EXPORT_SYMBOL(bt_status);
+
void bt_info(const char *format, ...)
{
struct va_format vaf;
--
2.35.1



2022-05-14 04:26:45

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH 2/3] Bluetooth: Use bt_status to convert from errno

From: Luiz Augusto von Dentz <[email protected]>

If a command cannot be sent or there is a internal error an errno maybe
set instead of a command status.

Signed-off-by: Luiz Augusto von Dentz <[email protected]>
---
net/bluetooth/hci_conn.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 882a7df13005..4a5193499b77 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -946,7 +946,7 @@ static void create_le_conn_complete(struct hci_dev *hdev, void *data, int err)
if (!conn)
goto done;

- hci_le_conn_failed(conn, err);
+ hci_le_conn_failed(conn, bt_status(err));

done:
hci_dev_unlock(hdev);
--
2.35.1


2022-05-14 04:26:56

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH 3/3] Bluetooth: hci_conn: Fix hci_connect_le_sync

From: Luiz Augusto von Dentz <[email protected]>

The handling of connection failures shall be handled by the request
completion callback as already done by hci_cs_le_create_conn, also make
sure to use hci_conn_failed instead of hci_le_conn_failed as the later
don't actually call hci_conn_del to cleanup.

Fixes: 8e8b92ee60de5 ("Bluetooth: hci_sync: Add hci_le_create_conn_sync")
Signed-off-by: Luiz Augusto von Dentz <[email protected]>
---
net/bluetooth/hci_conn.c | 2 +-
net/bluetooth/hci_event.c | 8 +++++---
2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 4a5193499b77..c981f3616bb1 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -946,7 +946,7 @@ static void create_le_conn_complete(struct hci_dev *hdev, void *data, int err)
if (!conn)
goto done;

- hci_le_conn_failed(conn, bt_status(err));
+ hci_conn_failed(conn, bt_status(err));

done:
hci_dev_unlock(hdev);
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 0270e597c285..af17dfb20e01 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -5632,10 +5632,12 @@ static void le_conn_complete_evt(struct hci_dev *hdev, u8 status,
status = HCI_ERROR_INVALID_PARAMETERS;
}

- if (status) {
- hci_conn_failed(conn, status);
+ /* All connection failure handling is taken care of by the
+ * hci_conn_failed function which is triggered by the HCI
+ * request completion callbacks used for connecting.
+ */
+ if (status)
goto unlock;
- }

if (conn->dst_type == ADDR_LE_DEV_PUBLIC)
addr_type = BDADDR_LE_PUBLIC;
--
2.35.1


2022-05-20 00:21:42

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH 1/3] Bluetooth: Add bt_status

Hi Marcel,

On Thu, May 19, 2022 at 11:07 AM Marcel Holtmann <[email protected]> wrote:
>
> Hi Luiz,
>
> > This adds bt_status which can be used to convert Unix errno to
> > Bluetooth status.
> >
> > Signed-off-by: Luiz Augusto von Dentz <[email protected]>
> > ---
> > include/net/bluetooth/bluetooth.h | 1 +
> > net/bluetooth/lib.c | 71 +++++++++++++++++++++++++++++++
> > 2 files changed, 72 insertions(+)
> >
> > diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h
> > index 6b48d9e2aab9..cfe6159f26bc 100644
> > --- a/include/net/bluetooth/bluetooth.h
> > +++ b/include/net/bluetooth/bluetooth.h
> > @@ -521,6 +521,7 @@ static inline struct sk_buff *bt_skb_sendmmsg(struct sock *sk,
> > }
> >
> > int bt_to_errno(u16 code);
> > +__u8 bt_status(int err);
> >
> > void hci_sock_set_flag(struct sock *sk, int nr);
> > void hci_sock_clear_flag(struct sock *sk, int nr);
> > diff --git a/net/bluetooth/lib.c b/net/bluetooth/lib.c
> > index 5326f41a58b7..469a0c95b6e8 100644
> > --- a/net/bluetooth/lib.c
> > +++ b/net/bluetooth/lib.c
> > @@ -135,6 +135,77 @@ int bt_to_errno(__u16 code)
> > }
> > EXPORT_SYMBOL(bt_to_errno);
> >
> > +/* Unix errno to Bluetooth error codes mapping */
> > +__u8 bt_status(int err)
> > +{
> > + /* Don't convert if already positive value */
> > + if (err >= 0)
> > + return err;
> > +
> > + switch (err) {
> > + case -EBADRQC:
> > + return 0x01;
> > +
> > + case -ENOTCONN:
> > + return 0x02;
> > +
> > + case -EIO:
> > + return 0x03;
> > +
> > + case -EHOSTDOWN:
> > + return 0x04;
> > +
> > + case -EACCES:
> > + return 0x05;
> > +
> > + case -EBADE:
> > + return 0x06;
> > +
> > + case -ENOMEM:
> > + return 0x07;
> > +
> > + case -ETIMEDOUT:
> > + return 0x08;
> > +
> > + case -EMLINK:
> > + return 0x09;
> > +
> > + case EALREADY:
> > + return 0x0b;
> > +
> > + case -EBUSY:
> > + return 0x0c;
> > +
> > + case -ECONNREFUSED:
> > + return 0x0d;
> > +
> > + case -EOPNOTSUPP:
> > + return 0x11;
> > +
> > + case -EINVAL:
> > + return 0x12;
> > +
> > + case -ECONNRESET:
> > + return 0x13;
> > +
> > + case -ECONNABORTED:
> > + return 0x16;
> > +
> > + case ELOOP:
> > + return 0x17;
> > +
> > + case -EPROTONOSUPPORT:
> > + return 0x1a;
> > +
> > + case -EPROTO:
> > + return 0x19;
> > +
> > + default:
> > + return 0x1f;
> > + }
> > +}
> > +EXPORT_SYMBOL(bt_status);
> > +
>
> why are exporting this?

Isn't it supposed to be exported since it is part of lib.c? All
functions in this file use it.

> Regards
>
> Marcel
>


--
Luiz Augusto von Dentz

2022-05-20 12:23:21

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH 1/3] Bluetooth: Add bt_status

Hi Luiz,

> This adds bt_status which can be used to convert Unix errno to
> Bluetooth status.
>
> Signed-off-by: Luiz Augusto von Dentz <[email protected]>
> ---
> include/net/bluetooth/bluetooth.h | 1 +
> net/bluetooth/lib.c | 71 +++++++++++++++++++++++++++++++
> 2 files changed, 72 insertions(+)
>
> diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h
> index 6b48d9e2aab9..cfe6159f26bc 100644
> --- a/include/net/bluetooth/bluetooth.h
> +++ b/include/net/bluetooth/bluetooth.h
> @@ -521,6 +521,7 @@ static inline struct sk_buff *bt_skb_sendmmsg(struct sock *sk,
> }
>
> int bt_to_errno(u16 code);
> +__u8 bt_status(int err);
>
> void hci_sock_set_flag(struct sock *sk, int nr);
> void hci_sock_clear_flag(struct sock *sk, int nr);
> diff --git a/net/bluetooth/lib.c b/net/bluetooth/lib.c
> index 5326f41a58b7..469a0c95b6e8 100644
> --- a/net/bluetooth/lib.c
> +++ b/net/bluetooth/lib.c
> @@ -135,6 +135,77 @@ int bt_to_errno(__u16 code)
> }
> EXPORT_SYMBOL(bt_to_errno);
>
> +/* Unix errno to Bluetooth error codes mapping */
> +__u8 bt_status(int err)
> +{
> + /* Don't convert if already positive value */
> + if (err >= 0)
> + return err;
> +
> + switch (err) {
> + case -EBADRQC:
> + return 0x01;
> +
> + case -ENOTCONN:
> + return 0x02;
> +
> + case -EIO:
> + return 0x03;
> +
> + case -EHOSTDOWN:
> + return 0x04;
> +
> + case -EACCES:
> + return 0x05;
> +
> + case -EBADE:
> + return 0x06;
> +
> + case -ENOMEM:
> + return 0x07;
> +
> + case -ETIMEDOUT:
> + return 0x08;
> +
> + case -EMLINK:
> + return 0x09;
> +
> + case EALREADY:
> + return 0x0b;
> +
> + case -EBUSY:
> + return 0x0c;
> +
> + case -ECONNREFUSED:
> + return 0x0d;
> +
> + case -EOPNOTSUPP:
> + return 0x11;
> +
> + case -EINVAL:
> + return 0x12;
> +
> + case -ECONNRESET:
> + return 0x13;
> +
> + case -ECONNABORTED:
> + return 0x16;
> +
> + case ELOOP:
> + return 0x17;
> +
> + case -EPROTONOSUPPORT:
> + return 0x1a;
> +
> + case -EPROTO:
> + return 0x19;
> +
> + default:
> + return 0x1f;
> + }
> +}
> +EXPORT_SYMBOL(bt_status);
> +

why are exporting this?

Regards

Marcel


2022-05-21 13:18:44

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH 1/3] Bluetooth: Add bt_status

Hi Luiz,

>>> This adds bt_status which can be used to convert Unix errno to
>>> Bluetooth status.
>>>
>>> Signed-off-by: Luiz Augusto von Dentz <[email protected]>
>>> ---
>>> include/net/bluetooth/bluetooth.h | 1 +
>>> net/bluetooth/lib.c | 71 +++++++++++++++++++++++++++++++
>>> 2 files changed, 72 insertions(+)
>>>
>>> diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h
>>> index 6b48d9e2aab9..cfe6159f26bc 100644
>>> --- a/include/net/bluetooth/bluetooth.h
>>> +++ b/include/net/bluetooth/bluetooth.h
>>> @@ -521,6 +521,7 @@ static inline struct sk_buff *bt_skb_sendmmsg(struct sock *sk,
>>> }
>>>
>>> int bt_to_errno(u16 code);
>>> +__u8 bt_status(int err);
>>>
>>> void hci_sock_set_flag(struct sock *sk, int nr);
>>> void hci_sock_clear_flag(struct sock *sk, int nr);
>>> diff --git a/net/bluetooth/lib.c b/net/bluetooth/lib.c
>>> index 5326f41a58b7..469a0c95b6e8 100644
>>> --- a/net/bluetooth/lib.c
>>> +++ b/net/bluetooth/lib.c
>>> @@ -135,6 +135,77 @@ int bt_to_errno(__u16 code)
>>> }
>>> EXPORT_SYMBOL(bt_to_errno);
>>>
>>> +/* Unix errno to Bluetooth error codes mapping */
>>> +__u8 bt_status(int err)
>>> +{
>>> + /* Don't convert if already positive value */
>>> + if (err >= 0)
>>> + return err;
>>> +
>>> + switch (err) {
>>> + case -EBADRQC:
>>> + return 0x01;
>>> +
>>> + case -ENOTCONN:
>>> + return 0x02;
>>> +
>>> + case -EIO:
>>> + return 0x03;
>>> +
>>> + case -EHOSTDOWN:
>>> + return 0x04;
>>> +
>>> + case -EACCES:
>>> + return 0x05;
>>> +
>>> + case -EBADE:
>>> + return 0x06;
>>> +
>>> + case -ENOMEM:
>>> + return 0x07;
>>> +
>>> + case -ETIMEDOUT:
>>> + return 0x08;
>>> +
>>> + case -EMLINK:
>>> + return 0x09;
>>> +
>>> + case EALREADY:
>>> + return 0x0b;
>>> +
>>> + case -EBUSY:
>>> + return 0x0c;
>>> +
>>> + case -ECONNREFUSED:
>>> + return 0x0d;
>>> +
>>> + case -EOPNOTSUPP:
>>> + return 0x11;
>>> +
>>> + case -EINVAL:
>>> + return 0x12;
>>> +
>>> + case -ECONNRESET:
>>> + return 0x13;
>>> +
>>> + case -ECONNABORTED:
>>> + return 0x16;
>>> +
>>> + case ELOOP:
>>> + return 0x17;
>>> +
>>> + case -EPROTONOSUPPORT:
>>> + return 0x1a;
>>> +
>>> + case -EPROTO:
>>> + return 0x19;
>>> +
>>> + default:
>>> + return 0x1f;
>>> + }
>>> +}
>>> +EXPORT_SYMBOL(bt_status);
>>> +
>>
>> why are exporting this?
>
> Isn't it supposed to be exported since it is part of lib.c? All
> functions in this file use it.

is it used outside of bluetooth.ko?

Regards

Marcel


2022-05-31 21:52:38

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH 1/3] Bluetooth: Add bt_status

Hi Marcel,

On Fri, May 20, 2022 at 2:16 AM Marcel Holtmann <[email protected]> wrote:
>
> Hi Luiz,
>
> >>> This adds bt_status which can be used to convert Unix errno to
> >>> Bluetooth status.
> >>>
> >>> Signed-off-by: Luiz Augusto von Dentz <[email protected]>
> >>> ---
> >>> include/net/bluetooth/bluetooth.h | 1 +
> >>> net/bluetooth/lib.c | 71 +++++++++++++++++++++++++++++++
> >>> 2 files changed, 72 insertions(+)
> >>>
> >>> diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h
> >>> index 6b48d9e2aab9..cfe6159f26bc 100644
> >>> --- a/include/net/bluetooth/bluetooth.h
> >>> +++ b/include/net/bluetooth/bluetooth.h
> >>> @@ -521,6 +521,7 @@ static inline struct sk_buff *bt_skb_sendmmsg(struct sock *sk,
> >>> }
> >>>
> >>> int bt_to_errno(u16 code);
> >>> +__u8 bt_status(int err);
> >>>
> >>> void hci_sock_set_flag(struct sock *sk, int nr);
> >>> void hci_sock_clear_flag(struct sock *sk, int nr);
> >>> diff --git a/net/bluetooth/lib.c b/net/bluetooth/lib.c
> >>> index 5326f41a58b7..469a0c95b6e8 100644
> >>> --- a/net/bluetooth/lib.c
> >>> +++ b/net/bluetooth/lib.c
> >>> @@ -135,6 +135,77 @@ int bt_to_errno(__u16 code)
> >>> }
> >>> EXPORT_SYMBOL(bt_to_errno);
> >>>
> >>> +/* Unix errno to Bluetooth error codes mapping */
> >>> +__u8 bt_status(int err)
> >>> +{
> >>> + /* Don't convert if already positive value */
> >>> + if (err >= 0)
> >>> + return err;
> >>> +
> >>> + switch (err) {
> >>> + case -EBADRQC:
> >>> + return 0x01;
> >>> +
> >>> + case -ENOTCONN:
> >>> + return 0x02;
> >>> +
> >>> + case -EIO:
> >>> + return 0x03;
> >>> +
> >>> + case -EHOSTDOWN:
> >>> + return 0x04;
> >>> +
> >>> + case -EACCES:
> >>> + return 0x05;
> >>> +
> >>> + case -EBADE:
> >>> + return 0x06;
> >>> +
> >>> + case -ENOMEM:
> >>> + return 0x07;
> >>> +
> >>> + case -ETIMEDOUT:
> >>> + return 0x08;
> >>> +
> >>> + case -EMLINK:
> >>> + return 0x09;
> >>> +
> >>> + case EALREADY:
> >>> + return 0x0b;
> >>> +
> >>> + case -EBUSY:
> >>> + return 0x0c;
> >>> +
> >>> + case -ECONNREFUSED:
> >>> + return 0x0d;
> >>> +
> >>> + case -EOPNOTSUPP:
> >>> + return 0x11;
> >>> +
> >>> + case -EINVAL:
> >>> + return 0x12;
> >>> +
> >>> + case -ECONNRESET:
> >>> + return 0x13;
> >>> +
> >>> + case -ECONNABORTED:
> >>> + return 0x16;
> >>> +
> >>> + case ELOOP:
> >>> + return 0x17;
> >>> +
> >>> + case -EPROTONOSUPPORT:
> >>> + return 0x1a;
> >>> +
> >>> + case -EPROTO:
> >>> + return 0x19;
> >>> +
> >>> + default:
> >>> + return 0x1f;
> >>> + }
> >>> +}
> >>> +EXPORT_SYMBOL(bt_status);
> >>> +
> >>
> >> why are exporting this?
> >
> > Isn't it supposed to be exported since it is part of lib.c? All
> > functions in this file use it.
>
> is it used outside of bluetooth.ko?

Currently not, I just thought it would be convenient to have it
accessible for the drivers as well since it is complementary to
bt_to_errno.

> Regards
>
> Marcel
>


--
Luiz Augusto von Dentz

2022-06-03 00:44:43

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH 1/3] Bluetooth: Add bt_status

Hi Luiz,

>>>>> This adds bt_status which can be used to convert Unix errno to
>>>>> Bluetooth status.
>>>>>
>>>>> Signed-off-by: Luiz Augusto von Dentz <[email protected]>
>>>>> ---
>>>>> include/net/bluetooth/bluetooth.h | 1 +
>>>>> net/bluetooth/lib.c | 71 +++++++++++++++++++++++++++++++
>>>>> 2 files changed, 72 insertions(+)
>>>>>
>>>>> diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h
>>>>> index 6b48d9e2aab9..cfe6159f26bc 100644
>>>>> --- a/include/net/bluetooth/bluetooth.h
>>>>> +++ b/include/net/bluetooth/bluetooth.h
>>>>> @@ -521,6 +521,7 @@ static inline struct sk_buff *bt_skb_sendmmsg(struct sock *sk,
>>>>> }
>>>>>
>>>>> int bt_to_errno(u16 code);
>>>>> +__u8 bt_status(int err);
>>>>>
>>>>> void hci_sock_set_flag(struct sock *sk, int nr);
>>>>> void hci_sock_clear_flag(struct sock *sk, int nr);
>>>>> diff --git a/net/bluetooth/lib.c b/net/bluetooth/lib.c
>>>>> index 5326f41a58b7..469a0c95b6e8 100644
>>>>> --- a/net/bluetooth/lib.c
>>>>> +++ b/net/bluetooth/lib.c
>>>>> @@ -135,6 +135,77 @@ int bt_to_errno(__u16 code)
>>>>> }
>>>>> EXPORT_SYMBOL(bt_to_errno);
>>>>>
>>>>> +/* Unix errno to Bluetooth error codes mapping */
>>>>> +__u8 bt_status(int err)
>>>>> +{
>>>>> + /* Don't convert if already positive value */
>>>>> + if (err >= 0)
>>>>> + return err;
>>>>> +
>>>>> + switch (err) {
>>>>> + case -EBADRQC:
>>>>> + return 0x01;
>>>>> +
>>>>> + case -ENOTCONN:
>>>>> + return 0x02;
>>>>> +
>>>>> + case -EIO:
>>>>> + return 0x03;
>>>>> +
>>>>> + case -EHOSTDOWN:
>>>>> + return 0x04;
>>>>> +
>>>>> + case -EACCES:
>>>>> + return 0x05;
>>>>> +
>>>>> + case -EBADE:
>>>>> + return 0x06;
>>>>> +
>>>>> + case -ENOMEM:
>>>>> + return 0x07;
>>>>> +
>>>>> + case -ETIMEDOUT:
>>>>> + return 0x08;
>>>>> +
>>>>> + case -EMLINK:
>>>>> + return 0x09;
>>>>> +
>>>>> + case EALREADY:
>>>>> + return 0x0b;
>>>>> +
>>>>> + case -EBUSY:
>>>>> + return 0x0c;
>>>>> +
>>>>> + case -ECONNREFUSED:
>>>>> + return 0x0d;
>>>>> +
>>>>> + case -EOPNOTSUPP:
>>>>> + return 0x11;
>>>>> +
>>>>> + case -EINVAL:
>>>>> + return 0x12;
>>>>> +
>>>>> + case -ECONNRESET:
>>>>> + return 0x13;
>>>>> +
>>>>> + case -ECONNABORTED:
>>>>> + return 0x16;
>>>>> +
>>>>> + case ELOOP:
>>>>> + return 0x17;
>>>>> +
>>>>> + case -EPROTONOSUPPORT:
>>>>> + return 0x1a;
>>>>> +
>>>>> + case -EPROTO:
>>>>> + return 0x19;
>>>>> +
>>>>> + default:
>>>>> + return 0x1f;
>>>>> + }
>>>>> +}
>>>>> +EXPORT_SYMBOL(bt_status);
>>>>> +
>>>>
>>>> why are exporting this?
>>>
>>> Isn't it supposed to be exported since it is part of lib.c? All
>>> functions in this file use it.
>>
>> is it used outside of bluetooth.ko?
>
> Currently not, I just thought it would be convenient to have it
> accessible for the drivers as well since it is complementary to
> bt_to_errno.

drivers should really not need this. They should not have to look at HCI error status. They are pure transport drivers.

Regards

Marcel