Message ID | 20250218214344.1519862-1-luiz.dentz@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v1] Bluetooth: hci_core: Enable buffer flow control for SCO/eSCO | expand |
Hello: This patch was applied to bluetooth/bluetooth-next.git (master) by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>: On Tue, 18 Feb 2025 16:43:44 -0500 you wrote: > From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > > This enables buffer flow controler for SCO/eSCO which apparently for > some reason has not been in use up until now which caused sco_cnt to > never be updated, but recently this has caused the following problem: > > < HCI Command: Read Buffer Size (0x04|0x0005) plen 0 > > HCI Event: Command Complete (0x0e) plen 11 > Read Buffer Size (0x04|0x0005) ncmd 1 > Status: Success (0x00) > ACL MTU: 1021 ACL max packet: 5 > SCO MTU: 240 SCO max packet: 8 > ... > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > > HCI Event: Hardware Error (0x10) plen 1 > Code: 0x0a > > [...] Here is the summary with links: - [v1] Bluetooth: hci_core: Enable buffer flow control for SCO/eSCO https://git.kernel.org/bluetooth/bluetooth-next/c/eaaf44d2e680 You are awesome, thank you!
Hi Luiz, ti, 2025-02-18 kello 16:43 -0500, Luiz Augusto von Dentz kirjoitti: > From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > > This enables buffer flow controler for SCO/eSCO which apparently for > some reason has not been in use up until now which caused sco_cnt to > never be updated, but recently this has caused the following problem: Should this first check or explicitly enable Synchronous_Flow_Control_Enable setting, via HCI_Read/Write_Synchronous_Flow_Control_Enable? IIRC SCO packets by default don't generate Number of Completed Packets, so is there something that is incrementing sco_cnt? > < HCI Command: Read Buffer Size (0x04|0x0005) plen 0 > > HCI Event: Command Complete (0x0e) plen 11 > Read Buffer Size (0x04|0x0005) ncmd 1 > Status: Success (0x00) > ACL MTU: 1021 ACL max packet: 5 > SCO MTU: 240 SCO max packet: 8 > ... > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > > HCI Event: Hardware Error (0x10) plen 1 > Code: 0x0a > > Fixes: 7fedd3bb6b77 ("Bluetooth: Prioritize SCO traffic") > Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > --- > net/bluetooth/hci_core.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c > index e7ec12437c8b..5c88d3816c6a 100644 > --- a/net/bluetooth/hci_core.c > +++ b/net/bluetooth/hci_core.c > @@ -3564,6 +3564,7 @@ static void hci_sched_sco(struct hci_dev *hdev) > BT_DBG("skb %p len %d", skb, skb->len); > hci_send_frame(hdev, skb); > > + hdev->sco_cnt--; > conn->sent++; > if (conn->sent == ~0) > conn->sent = 0; > @@ -3588,6 +3589,7 @@ static void hci_sched_esco(struct hci_dev *hdev) > BT_DBG("skb %p len %d", skb, skb->len); > hci_send_frame(hdev, skb); > > + hdev->sco_cnt--; > conn->sent++; > if (conn->sent == ~0) > conn->sent = 0;
Hi Pauli, On Thu, Feb 20, 2025 at 3:26 PM Pauli Virtanen <pav@iki.fi> wrote: > > Hi Luiz, > > ti, 2025-02-18 kello 16:43 -0500, Luiz Augusto von Dentz kirjoitti: > > From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > > > > This enables buffer flow controler for SCO/eSCO which apparently for > > some reason has not been in use up until now which caused sco_cnt to > > never be updated, but recently this has caused the following problem: > > Should this first check or explicitly enable > Synchronous_Flow_Control_Enable setting, via > HCI_Read/Write_Synchronous_Flow_Control_Enable? > > IIRC SCO packets by default don't generate Number of Completed Packets, > so is there something that is incrementing sco_cnt? Yeah, totally forgot this exists for SCO, we will need to check if it is supported before we can turn it on. > > < HCI Command: Read Buffer Size (0x04|0x0005) plen 0 > > > HCI Event: Command Complete (0x0e) plen 11 > > Read Buffer Size (0x04|0x0005) ncmd 1 > > Status: Success (0x00) > > ACL MTU: 1021 ACL max packet: 5 > > SCO MTU: 240 SCO max packet: 8 > > ... > > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > > < SCO Data TX: Handle 257 flags 0x00 dlen 120 > > > HCI Event: Hardware Error (0x10) plen 1 > > Code: 0x0a > > > > Fixes: 7fedd3bb6b77 ("Bluetooth: Prioritize SCO traffic") > > Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > > --- > > net/bluetooth/hci_core.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c > > index e7ec12437c8b..5c88d3816c6a 100644 > > --- a/net/bluetooth/hci_core.c > > +++ b/net/bluetooth/hci_core.c > > @@ -3564,6 +3564,7 @@ static void hci_sched_sco(struct hci_dev *hdev) > > BT_DBG("skb %p len %d", skb, skb->len); > > hci_send_frame(hdev, skb); > > > > + hdev->sco_cnt--; > > conn->sent++; > > if (conn->sent == ~0) > > conn->sent = 0; > > @@ -3588,6 +3589,7 @@ static void hci_sched_esco(struct hci_dev *hdev) > > BT_DBG("skb %p len %d", skb, skb->len); > > hci_send_frame(hdev, skb); > > > > + hdev->sco_cnt--; > > conn->sent++; > > if (conn->sent == ~0) > > conn->sent = 0; > > -- > Pauli Virtanen
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index e7ec12437c8b..5c88d3816c6a 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -3564,6 +3564,7 @@ static void hci_sched_sco(struct hci_dev *hdev) BT_DBG("skb %p len %d", skb, skb->len); hci_send_frame(hdev, skb); + hdev->sco_cnt--; conn->sent++; if (conn->sent == ~0) conn->sent = 0; @@ -3588,6 +3589,7 @@ static void hci_sched_esco(struct hci_dev *hdev) BT_DBG("skb %p len %d", skb, skb->len); hci_send_frame(hdev, skb); + hdev->sco_cnt--; conn->sent++; if (conn->sent == ~0) conn->sent = 0;