Bluetooth: hci_uart: Fix speed selection
PATCH 1/1 Bluetooth: hci_uart: Fix speed selection
hu->proto->*speed will always be used for all device where it is set. But hu->*speed should be used if exist, so the test should be swapped.
The equivalent change is needed in bcm_setup() of hci_bcm.c.
--- drivers/bluetooth/hci_bcm.c | 29 +++++++++++++++++++++++------ drivers/bluetooth/hci_ldisc.c | 12 ++++++------ 2 files changed, 29 insertions(+), 12 deletions(-)
drivers/bluetooth/hci_bcm.c +23 -6
@@ -131,6 +131,7 @@ static int bcm_setup(struct hci_uart *hu) {char fw_name[64 ];const struct firmware *fw; +unsigned int speed;int err;BT_DBG ("hu %p" , hu);
@@ -153,13 +154,29 @@ static int bcm_setup(struct hci_uart *hu) goto finalize; } -if (hu->proto->init_speed) -hci_uart_set_baudrate (hu, hu->proto->init_speed); - -if (hu->proto->oper_speed) { - err =bcm_set_baudrate (hu, hu->proto->oper_speed); +/* Init speed if any */ +if (hu->init_speed) + speed = hu->init_speed; +else if (hu->proto->init_speed) + speed = hu->proto->init_speed; +else + speed =0 ; + +if (speed) +hci_uart_set_baudrate (hu, speed); + +/* Operational speed if any */ +if (hu->oper_speed) + speed = hu->oper_speed; +else if (hu->proto->oper_speed) + speed = hu->proto->oper_speed; +else + speed =0 ; + +if (speed) { + err =bcm_set_baudrate (hu, speed);if (!err) -hci_uart_set_baudrate (hu, hu->proto->oper_speed); +hci_uart_set_baudrate (hu, speed); } finalize:
drivers/bluetooth/hci_ldisc.c +6 -6
@@ -370,10 +370,10 @@ static int hci_uart_setup(struct hci_dev *hdev)int err;/* Init speed if any */ -if (hu->proto->init_speed) - speed = hu->proto->init_speed; -else if (hu->init_speed) +if (hu->init_speed) speed = hu->init_speed; +else if (hu->proto->init_speed) + speed = hu->proto->init_speed;else speed =0 ;
@@ -381,10 +381,10 @@ static int hci_uart_setup(struct hci_dev *hdev)hci_uart_set_baudrate (hu, speed);/* Operational speed if any */ -if (hu->proto->oper_speed) - speed = hu->proto->oper_speed; -else if (hu->oper_speed) +if (hu->oper_speed) speed = hu->oper_speed; +else if (hu->proto->oper_speed) + speed = hu->proto->oper_speed;else speed =0 ;
Signature · 1 line
1.9.1
Marcel Holtmann
maintainerHi Fred,
Quoted 10 lines
hu->proto->*speed will always be used for all device where it is set. But hu->*speed should be used if exist, so the test should be swapped.
The equivalent change is needed in
bcm_setup()ofhci_bcm.c.Signed-off-by Frederic Danis <[email protected]>---
drivers/bluetooth/hci_bcm.c| 29 +++++++++++++++++++++++------drivers/bluetooth/hci_ldisc.c| 12 ++++++------2 files changed, 29 insertions(+), 12 deletions(-)
patch has been applied to bluetooth-next tree.
Regards
Marcel
Hi Marcel and Fred,
-----Original Message-----
From: [email protected] [mailto:linux-bluetooth-owner@v= ger.kernel.org] On Behalf Of Marcel Holtmann
Sent: Thursday, June 18, 2015 7:49 AM
To: Frederic Danis
Cc: [email protected]
Subject: Re: [PATCH] Bluetooth: hci_uart: Fix speed selection
Hi Fred,
Quoted 10 lines
hu->proto->*speed will always be used for all device where it is set. But hu->*speed should be used if exist, so the test should be swapped. =20
The equivalent change is needed inbcm_setup()ofhci_bcm.c. =20Signed-off-by Frederic Danis <[email protected]>---
drivers/bluetooth/hci_bcm.c| 29 +++++++++++++++++++++++------drivers/bluetooth/hci_ldisc.c| 12 ++++++------2 files changed, 29 insertions(+), 12 deletions(-)
patch has been applied to bluetooth-next tree.
IF: I've just checked the latest hci_ldisc.c speed selection logic against = what I submitted yesterday. They are functionally the same so you have my b= lessing if you need it. :-) Still, having speed configuration in two places=
is obviously an invitation to some confusion.
Regards
Marcel
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" = in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html