Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f6af675e authored by Steven Walter's avatar Steven Walter Committed by Johan Hedberg
Browse files

Bluetooth: Automatically flushable packets aren't allowed on LE links



The Bluetooth spec states that automatically flushable packets may not
be sent over a LE-U link.

Signed-off-by: default avatarSteven Walter <stevenrwalter@gmail.com>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent 3bb30a7c
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -840,7 +840,10 @@ static void l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16 len,
	if (!skb)
		return;

	if (lmp_no_flush_capable(conn->hcon->hdev))
	/* Use NO_FLUSH if supported or we have an LE link (which does
	 * not support auto-flushing packets) */
	if (lmp_no_flush_capable(conn->hcon->hdev) ||
	    conn->hcon->type == LE_LINK)
		flags = ACL_START_NO_FLUSH;
	else
		flags = ACL_START;
@@ -874,8 +877,13 @@ static void l2cap_do_send(struct l2cap_chan *chan, struct sk_buff *skb)
		return;
	}

	if (!test_bit(FLAG_FLUSHABLE, &chan->flags) &&
	    lmp_no_flush_capable(hcon->hdev))
	/* Use NO_FLUSH for LE links (where this is the only option) or
	 * if the BR/EDR link supports it and flushing has not been
	 * explicitly requested (through FLAG_FLUSHABLE).
	 */
	if (hcon->type == LE_LINK ||
	    (!test_bit(FLAG_FLUSHABLE, &chan->flags) &&
	     lmp_no_flush_capable(hcon->hdev)))
		flags = ACL_START_NO_FLUSH;
	else
		flags = ACL_START;