All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/3] Bluetooth: hci_conn: Fix hci_connect_le_sync
@ 2022-05-19 20:22 Luiz Augusto von Dentz
  2022-05-19 20:22 ` [PATCH v2 2/3] Bluetooth: Add bt_status Luiz Augusto von Dentz
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2022-05-19 20:22 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  | 5 +++--
 net/bluetooth/hci_event.c | 8 +++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 882a7df13005..ac06c9724c7f 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -943,10 +943,11 @@ static void create_le_conn_complete(struct hci_dev *hdev, void *data, int err)
 
 	bt_dev_err(hdev, "request failed to create LE connection: err %d", err);
 
-	if (!conn)
+	/* Check if connection is still pending */
+	if (conn != hci_lookup_le_connect(hdev))
 		goto done;
 
-	hci_le_conn_failed(conn, err);
+	hci_conn_failed(conn, 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] 6+ messages in thread

* [PATCH v2 2/3] Bluetooth: Add bt_status
  2022-05-19 20:22 [PATCH v2 1/3] Bluetooth: hci_conn: Fix hci_connect_le_sync Luiz Augusto von Dentz
@ 2022-05-19 20:22 ` Luiz Augusto von Dentz
  2022-05-19 20:22 ` [PATCH v2 3/3] Bluetooth: Use bt_status to convert from errno Luiz Augusto von Dentz
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2022-05-19 20:22 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] 6+ messages in thread

* [PATCH v2 3/3] Bluetooth: Use bt_status to convert from errno
  2022-05-19 20:22 [PATCH v2 1/3] Bluetooth: hci_conn: Fix hci_connect_le_sync Luiz Augusto von Dentz
  2022-05-19 20:22 ` [PATCH v2 2/3] Bluetooth: Add bt_status Luiz Augusto von Dentz
@ 2022-05-19 20:22 ` Luiz Augusto von Dentz
  2022-05-19 21:07 ` [v2,1/3] Bluetooth: hci_conn: Fix hci_connect_le_sync bluez.test.bot
  2022-05-20  9:18 ` [PATCH v2 1/3] " Marcel Holtmann
  3 siblings, 0 replies; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2022-05-19 20:22 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 ac06c9724c7f..a36297368c58 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -947,7 +947,7 @@ static void create_le_conn_complete(struct hci_dev *hdev, void *data, int err)
 	if (conn != hci_lookup_le_connect(hdev))
 		goto done;
 
-	hci_conn_failed(conn, err);
+	hci_conn_failed(conn, bt_status(err));
 
 done:
 	hci_dev_unlock(hdev);
-- 
2.35.1


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

* RE: [v2,1/3] Bluetooth: hci_conn: Fix hci_connect_le_sync
  2022-05-19 20:22 [PATCH v2 1/3] Bluetooth: hci_conn: Fix hci_connect_le_sync Luiz Augusto von Dentz
  2022-05-19 20:22 ` [PATCH v2 2/3] Bluetooth: Add bt_status Luiz Augusto von Dentz
  2022-05-19 20:22 ` [PATCH v2 3/3] Bluetooth: Use bt_status to convert from errno Luiz Augusto von Dentz
@ 2022-05-19 21:07 ` bluez.test.bot
  2022-05-20  9:18 ` [PATCH v2 1/3] " Marcel Holtmann
  3 siblings, 0 replies; 6+ messages in thread
From: bluez.test.bot @ 2022-05-19 21:07 UTC (permalink / raw)
  To: linux-bluetooth, luiz.dentz

[-- Attachment #1: Type: text/plain, Size: 1100 bytes --]

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=643316

---Test result---

Test Summary:
CheckPatch                    PASS      2.73 seconds
GitLint                       PASS      1.14 seconds
SubjectPrefix                 PASS      0.72 seconds
BuildKernel                   PASS      42.02 seconds
BuildKernel32                 PASS      37.35 seconds
Incremental Build with patchesPASS      91.80 seconds
TestRunner: Setup             PASS      624.66 seconds
TestRunner: l2cap-tester      PASS      20.89 seconds
TestRunner: bnep-tester       PASS      7.58 seconds
TestRunner: mgmt-tester       PASS      128.15 seconds
TestRunner: rfcomm-tester     PASS      11.71 seconds
TestRunner: sco-tester        PASS      11.35 seconds
TestRunner: smp-tester        PASS      11.41 seconds
TestRunner: userchan-tester   PASS      7.90 seconds



---
Regards,
Linux Bluetooth


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

* Re: [PATCH v2 1/3] Bluetooth: hci_conn: Fix hci_connect_le_sync
  2022-05-19 20:22 [PATCH v2 1/3] Bluetooth: hci_conn: Fix hci_connect_le_sync Luiz Augusto von Dentz
                   ` (2 preceding siblings ...)
  2022-05-19 21:07 ` [v2,1/3] Bluetooth: hci_conn: Fix hci_connect_le_sync bluez.test.bot
@ 2022-05-20  9:18 ` Marcel Holtmann
  2022-05-20 18:39   ` Luiz Augusto von Dentz
  3 siblings, 1 reply; 6+ messages in thread
From: Marcel Holtmann @ 2022-05-20  9:18 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hi Luiz,

> 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  | 5 +++--
> net/bluetooth/hci_event.c | 8 +++++---
> 2 files changed, 8 insertions(+), 5 deletions(-)

you are making a bit mess with yet another v2 of this. I rather have you mark this as [PATCH -stable] or something so that we get this one into that tree and then later the rest into -next.

Regards

Marcel


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

* Re: [PATCH v2 1/3] Bluetooth: hci_conn: Fix hci_connect_le_sync
  2022-05-20  9:18 ` [PATCH v2 1/3] " Marcel Holtmann
@ 2022-05-20 18:39   ` Luiz Augusto von Dentz
  0 siblings, 0 replies; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2022-05-20 18:39 UTC (permalink / raw)
  To: Marcel Holtmann; +Cc: linux-bluetooth

Hi Marcel,

On Fri, May 20, 2022 at 2:18 AM Marcel Holtmann <marcel@holtmann.org> wrote:
>
> Hi Luiz,
>
> > 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  | 5 +++--
> > net/bluetooth/hci_event.c | 8 +++++---
> > 2 files changed, 8 insertions(+), 5 deletions(-)
>
> you are making a bit mess with yet another v2 of this. I rather have you mark this as [PATCH -stable] or something so that we get this one into that tree and then later the rest into -next.
>
> Regards
>
> Marcel

Just sent one with -stable, is that something we should adapt going
forward? Perhaps we should document this somewhere.

-- 
Luiz Augusto von Dentz

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

end of thread, other threads:[~2022-05-20 18:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-19 20:22 [PATCH v2 1/3] Bluetooth: hci_conn: Fix hci_connect_le_sync Luiz Augusto von Dentz
2022-05-19 20:22 ` [PATCH v2 2/3] Bluetooth: Add bt_status Luiz Augusto von Dentz
2022-05-19 20:22 ` [PATCH v2 3/3] Bluetooth: Use bt_status to convert from errno Luiz Augusto von Dentz
2022-05-19 21:07 ` [v2,1/3] Bluetooth: hci_conn: Fix hci_connect_le_sync bluez.test.bot
2022-05-20  9:18 ` [PATCH v2 1/3] " Marcel Holtmann
2022-05-20 18:39   ` Luiz Augusto von Dentz

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.