linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] Bluetooth: Add bt_status
@ 2022-05-13 23:46 Luiz Augusto von Dentz
  2022-05-13 23:46 ` [PATCH 2/3] Bluetooth: Use bt_status to convert from errno Luiz Augusto von Dentz
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Luiz Augusto von Dentz @ 2022-05-13 23:46 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

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

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
 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


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/3] Bluetooth: Use bt_status to convert from errno
  2022-05-13 23:46 [PATCH 1/3] Bluetooth: Add bt_status Luiz Augusto von Dentz
@ 2022-05-13 23:46 ` Luiz Augusto von Dentz
  2022-05-13 23:46 ` [PATCH 3/3] Bluetooth: hci_conn: Fix hci_connect_le_sync Luiz Augusto von Dentz
  2022-05-19 18:07 ` [PATCH 1/3] Bluetooth: Add bt_status Marcel Holtmann
  2 siblings, 0 replies; 8+ messages in thread
From: Luiz Augusto von Dentz @ 2022-05-13 23:46 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

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 <luiz.von.dentz@intel.com>
---
 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


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/3] Bluetooth: hci_conn: Fix hci_connect_le_sync
  2022-05-13 23:46 [PATCH 1/3] Bluetooth: Add bt_status Luiz Augusto von Dentz
  2022-05-13 23:46 ` [PATCH 2/3] Bluetooth: Use bt_status to convert from errno Luiz Augusto von Dentz
@ 2022-05-13 23:46 ` Luiz Augusto von Dentz
  2022-05-19 18:07 ` [PATCH 1/3] Bluetooth: Add bt_status Marcel Holtmann
  2 siblings, 0 replies; 8+ messages in thread
From: Luiz Augusto von Dentz @ 2022-05-13 23:46 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

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 <luiz.von.dentz@intel.com>
---
 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


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Bluetooth: Add bt_status
  2022-05-13 23:46 [PATCH 1/3] Bluetooth: Add bt_status Luiz Augusto von Dentz
  2022-05-13 23:46 ` [PATCH 2/3] Bluetooth: Use bt_status to convert from errno Luiz Augusto von Dentz
  2022-05-13 23:46 ` [PATCH 3/3] Bluetooth: hci_conn: Fix hci_connect_le_sync Luiz Augusto von Dentz
@ 2022-05-19 18:07 ` Marcel Holtmann
  2022-05-19 20:18   ` Luiz Augusto von Dentz
  2 siblings, 1 reply; 8+ messages in thread
From: Marcel Holtmann @ 2022-05-19 18:07 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hi Luiz,

> This adds bt_status which can be used to convert Unix errno to
> Bluetooth status.
> 
> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> ---
> 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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Bluetooth: Add bt_status
  2022-05-19 18:07 ` [PATCH 1/3] Bluetooth: Add bt_status Marcel Holtmann
@ 2022-05-19 20:18   ` Luiz Augusto von Dentz
  2022-05-20  9:16     ` Marcel Holtmann
  0 siblings, 1 reply; 8+ messages in thread
From: Luiz Augusto von Dentz @ 2022-05-19 20:18 UTC (permalink / raw)
  To: Marcel Holtmann; +Cc: linux-bluetooth

Hi Marcel,

On Thu, May 19, 2022 at 11:07 AM Marcel Holtmann <marcel@holtmann.org> 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 <luiz.von.dentz@intel.com>
> > ---
> > 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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Bluetooth: Add bt_status
  2022-05-19 20:18   ` Luiz Augusto von Dentz
@ 2022-05-20  9:16     ` Marcel Holtmann
  2022-05-31 21:27       ` Luiz Augusto von Dentz
  0 siblings, 1 reply; 8+ messages in thread
From: Marcel Holtmann @ 2022-05-20  9:16 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hi Luiz,

>>> This adds bt_status which can be used to convert Unix errno to
>>> Bluetooth status.
>>> 
>>> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
>>> ---
>>> 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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Bluetooth: Add bt_status
  2022-05-20  9:16     ` Marcel Holtmann
@ 2022-05-31 21:27       ` Luiz Augusto von Dentz
  2022-06-02 15:30         ` Marcel Holtmann
  0 siblings, 1 reply; 8+ messages in thread
From: Luiz Augusto von Dentz @ 2022-05-31 21:27 UTC (permalink / raw)
  To: Marcel Holtmann; +Cc: linux-bluetooth

Hi Marcel,

On Fri, May 20, 2022 at 2:16 AM Marcel Holtmann <marcel@holtmann.org> 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 <luiz.von.dentz@intel.com>
> >>> ---
> >>> 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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Bluetooth: Add bt_status
  2022-05-31 21:27       ` Luiz Augusto von Dentz
@ 2022-06-02 15:30         ` Marcel Holtmann
  0 siblings, 0 replies; 8+ messages in thread
From: Marcel Holtmann @ 2022-06-02 15:30 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hi Luiz,

>>>>> This adds bt_status which can be used to convert Unix errno to
>>>>> Bluetooth status.
>>>>> 
>>>>> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
>>>>> ---
>>>>> 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


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-06-02 15:30 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-13 23:46 [PATCH 1/3] Bluetooth: Add bt_status Luiz Augusto von Dentz
2022-05-13 23:46 ` [PATCH 2/3] Bluetooth: Use bt_status to convert from errno Luiz Augusto von Dentz
2022-05-13 23:46 ` [PATCH 3/3] Bluetooth: hci_conn: Fix hci_connect_le_sync Luiz Augusto von Dentz
2022-05-19 18:07 ` [PATCH 1/3] Bluetooth: Add bt_status Marcel Holtmann
2022-05-19 20:18   ` Luiz Augusto von Dentz
2022-05-20  9:16     ` Marcel Holtmann
2022-05-31 21:27       ` Luiz Augusto von Dentz
2022-06-02 15:30         ` Marcel Holtmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).