Diff between a081a337bddd68924e3f48835c5e09f1bdbaeef9 and 81cba0be7e27777f629370ecab5f065fdf47eca9

Changed Files

File Additions Deletions Status
mesh/mesh-io-generic.c +8 -0 modified

Full Patch

diff --git a/mesh/mesh-io-generic.c b/mesh/mesh-io-generic.c
index 8695251..4b26b11 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) {