Message ID | 20181227073136.8431-6-bgodavar@codeaurora.org (mailing list archive) |
---|---|
State | Not Applicable, archived |
Delegated to: | Andy Gross |
Headers | show |
Series | Bug fixes for Qualcomm BT chip wcn3990 | expand |
On Thu, Dec 27, 2018 at 01:01:35PM +0530, Balakrishna Godavarthi wrote: > This patch will update the baudrate change request wait time from > 300 ms to 100 ms. When host sends the change baudrate request to > the controller, controller sets its clock and wait until the > clocks settle down. Here the Wait time is required for both > host and controller to be on sync. Ultimately up to you, but I would advise against adding 'improvement' changes to this series. The scope of the series is already fairly vague ("Bug fixes for Qualcomm BT chip wcn3990"), with at least some patches that could be sent individually, which would reduce churn when respinning. > Signed-off-by: Balakrishna Godavarthi <bgodavar@codeaurora.org> > --- > > Changes in v6: > * intial patch. > > --- > drivers/bluetooth/hci_qca.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c > index 4677a6a2716a..61b0fb1ff32f 100644 > --- a/drivers/bluetooth/hci_qca.c > +++ b/drivers/bluetooth/hci_qca.c > @@ -60,7 +60,8 @@ > > #define IBS_WAKE_RETRANS_TIMEOUT_MS 100 > #define IBS_TX_IDLE_TIMEOUT_MS 2000 > -#define BAUDRATE_SETTLE_TIMEOUT_MS 300 > +#define ROME_BD_SETTLE_TIMEOUT_MS 300 > +#define WCN3990_BD_SETTLE_TIMEOUT_MS 100 My testing suggests that even the lower 100 ms delay isn't needed, if different parts that require a delay are addressed more specifically, instead of using a single long 'settle' delay (https://lore.kernel.org/patchwork/patch/1026795/#1212816 has some details). My idea was to sent a patch after this series has landed to avoid interfering with it. Cheers Matthias
Hi Matthias, On 2018-12-28 02:30, Matthias Kaehlcke wrote: > On Thu, Dec 27, 2018 at 01:01:35PM +0530, Balakrishna Godavarthi wrote: >> This patch will update the baudrate change request wait time from >> 300 ms to 100 ms. When host sends the change baudrate request to >> the controller, controller sets its clock and wait until the >> clocks settle down. Here the Wait time is required for both >> host and controller to be on sync. > > Ultimately up to you, but I would advise against adding 'improvement' > changes to this series. The scope of the series is already fairly > vague ("Bug fixes for Qualcomm BT chip wcn3990"), with at least some > patches that could be sent individually, which would reduce churn when > respinning. [Bala]: yes your correct will send this as improvement patch once the series is merged. > >> Signed-off-by: Balakrishna Godavarthi <bgodavar@codeaurora.org> >> --- >> >> Changes in v6: >> * intial patch. >> >> --- >> drivers/bluetooth/hci_qca.c | 12 ++++++++++-- >> 1 file changed, 10 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c >> index 4677a6a2716a..61b0fb1ff32f 100644 >> --- a/drivers/bluetooth/hci_qca.c >> +++ b/drivers/bluetooth/hci_qca.c >> @@ -60,7 +60,8 @@ >> >> #define IBS_WAKE_RETRANS_TIMEOUT_MS 100 >> #define IBS_TX_IDLE_TIMEOUT_MS 2000 >> -#define BAUDRATE_SETTLE_TIMEOUT_MS 300 >> +#define ROME_BD_SETTLE_TIMEOUT_MS 300 >> +#define WCN3990_BD_SETTLE_TIMEOUT_MS 100 > > My testing suggests that even the lower 100 ms delay isn't needed, if > different parts that require a delay are addressed more specifically, > instead of using a single long 'settle' delay > (https://lore.kernel.org/patchwork/patch/1026795/#1212816 has some > details). > [Bala]: i to agree with you. but from the point 1, we have many chances of getting baudrate change delay. after lot of stress test and experiments we found 100 ms is reasonable to handle all of them together. > My idea was to sent a patch after this series has landed to avoid > interfering with it. > [Bala]: sure will drop this change from the series. > Cheers > > Matthias
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 4677a6a2716a..61b0fb1ff32f 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -60,7 +60,8 @@ #define IBS_WAKE_RETRANS_TIMEOUT_MS 100 #define IBS_TX_IDLE_TIMEOUT_MS 2000 -#define BAUDRATE_SETTLE_TIMEOUT_MS 300 +#define ROME_BD_SETTLE_TIMEOUT_MS 300 +#define WCN3990_BD_SETTLE_TIMEOUT_MS 100 /* susclk rate */ #define SUSCLK_RATE_32KHZ 32768 @@ -972,8 +973,11 @@ static int qca_set_baudrate(struct hci_dev *hdev, uint8_t baudrate) struct hci_uart *hu = hci_get_drvdata(hdev); struct qca_data *qca = hu->priv; struct sk_buff *skb; + struct qca_serdev *qcadev; + unsigned int bd_settling_timeout; u8 cmd[] = { 0x01, 0x48, 0xFC, 0x01, 0x00 }; + qcadev = serdev_device_get_drvdata(hu->serdev); if (baudrate > QCA_BAUDRATE_3200000) return -EINVAL; @@ -996,8 +1000,12 @@ static int qca_set_baudrate(struct hci_dev *hdev, uint8_t baudrate) * controller will come back after they receive this HCI command * then host can communicate with new baudrate to controller */ + bd_settling_timeout = qcadev->btsoc_type == QCA_WCN3990 ? + WCN3990_BD_SETTLE_TIMEOUT_MS : + ROME_BD_SETTLE_TIMEOUT_MS; + set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(msecs_to_jiffies(BAUDRATE_SETTLE_TIMEOUT_MS)); + schedule_timeout(msecs_to_jiffies(bd_settling_timeout)); set_current_state(TASK_RUNNING); return 0;
This patch will update the baudrate change request wait time from 300 ms to 100 ms. When host sends the change baudrate request to the controller, controller sets its clock and wait until the clocks settle down. Here the Wait time is required for both host and controller to be on sync. Signed-off-by: Balakrishna Godavarthi <bgodavar@codeaurora.org> --- Changes in v6: * intial patch. --- drivers/bluetooth/hci_qca.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)