[
https://issues.apache.org/jira/browse/MYNEWT-287?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15797458#comment-15797458
]
Johan Hedberg commented on MYNEWT-287:
--------------------------------------
In Zephyr we've gone for a different solution which doesn't require host flow
control anymore: we're instead relying on the HCI transport provided flow
control to stop the controller from sending data until we're ready to receive
more. With H:4 (HW flow control based UART) this is easy since we just stop the
flow using the RTS/CTS lines. With H:5 (3-Wire UART) we simply don't ack
packets until we have free buffers to receive more. Also the other standard HCI
transports (USB & SDIO, which we don't support however) provide flow control,
so the same solution can be applied there.
The reason why taking advantage of the HCI transport flow control is essential,
is that unlike for ACL data, HCI doesn't provide any flow control for HCI
events. Almost all HCI events are considered critical (advertising reports are
perhaps the only exception) so whatever solution is in place needs to cover
them as well. There *may* be some value of implementing ACL HCI host flow
control on top of the HCI transport control, but at least in Zephyr we don't
see any need for it at the moment.
> Host Flow Control
> -----------------
>
> Key: MYNEWT-287
> URL: https://issues.apache.org/jira/browse/MYNEWT-287
> Project: Mynewt
> Issue Type: New Feature
> Components: Nimble
> Environment: Using nimble from an external host stack
> Reporter: Johan Hedberg
> Assignee: Christopher Collins
> Fix For: v1_0_0_rel
>
>
> If the Nimble controller part is connected to an external host stack the host
> may need to control the flow of ACL packets from the controller to the host.
> This is particularly important for resource-constrained hosts that have a
> limited amount of RX ACL data buffers.
> The Bluetooth core specification provides a standard feature to accomplish
> this called Host Flow Control. (Vol 2, Part E, Section 4.2). To implement
> this the controller needs to support the "Set Controller To Host Flow
> Control", "Host Buffer Size" and "Host Number Of Completed Packets" HCI
> commands.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)