Re: [PATCH BlueZ] mesh: Add guard against wedging outbound queue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Applied
On Wed, 2020-07-29 at 08:52 -0700, Brian Gix wrote:
> When using HCI command chains, the first packet send that starts an
> outbound sequence needs to still exist when command chain completes, or
> the outbound queue will wedge.  The simplest solution is to send packets
> at least twice on an empty queue, if there is a chance it could be canceled.
> ---
>  mesh/mesh-io-generic.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/mesh/mesh-io-generic.c b/mesh/mesh-io-generic.c
> index 86952516e..4b26b1181 100644
> --- a/mesh/mesh-io-generic.c
> +++ b/mesh/mesh-io-generic.c
> @@ -714,6 +714,14 @@ static bool send_tx(struct mesh_io *io, struct mesh_io_send_info *info,
>  			sending = !l_queue_isempty(pvt->tx_pkts);
>  
>  		l_queue_push_tail(pvt->tx_pkts, tx);
> +
> +		/*
> +		 * If transmitter is idle, send packets at least twice to
> +		 * guard against in-line cancelation of HCI command chain.
> +		 */
> +		if (info->type == MESH_IO_TIMING_TYPE_GENERAL && !sending &&
> +							tx->info.u.gen.cnt == 1)
> +			tx->info.u.gen.cnt++;
>  	}
>  
>  	if (!sending) {




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux