diff options
Diffstat (limited to 'net/bluetooth')
-rw-r--r-- | net/bluetooth/l2cap.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c index 4415eb48c6ae..c2fb26d9286c 100644 --- a/net/bluetooth/l2cap.c +++ b/net/bluetooth/l2cap.c | |||
@@ -1430,6 +1430,8 @@ static void l2cap_retransmit_one_frame(struct sock *sk, u8 tx_seq) | |||
1430 | tx_skb = skb_clone(skb, GFP_ATOMIC); | 1430 | tx_skb = skb_clone(skb, GFP_ATOMIC); |
1431 | bt_cb(skb)->retries++; | 1431 | bt_cb(skb)->retries++; |
1432 | control = get_unaligned_le16(tx_skb->data + L2CAP_HDR_SIZE); | 1432 | control = get_unaligned_le16(tx_skb->data + L2CAP_HDR_SIZE); |
1433 | control &= L2CAP_CTRL_SAR; | ||
1434 | |||
1433 | control |= (pi->buffer_seq << L2CAP_CTRL_REQSEQ_SHIFT) | 1435 | control |= (pi->buffer_seq << L2CAP_CTRL_REQSEQ_SHIFT) |
1434 | | (tx_seq << L2CAP_CTRL_TXSEQ_SHIFT); | 1436 | | (tx_seq << L2CAP_CTRL_TXSEQ_SHIFT); |
1435 | put_unaligned_le16(control, tx_skb->data + L2CAP_HDR_SIZE); | 1437 | put_unaligned_le16(control, tx_skb->data + L2CAP_HDR_SIZE); |
@@ -1465,6 +1467,8 @@ static int l2cap_ertm_send(struct sock *sk) | |||
1465 | bt_cb(skb)->retries++; | 1467 | bt_cb(skb)->retries++; |
1466 | 1468 | ||
1467 | control = get_unaligned_le16(tx_skb->data + L2CAP_HDR_SIZE); | 1469 | control = get_unaligned_le16(tx_skb->data + L2CAP_HDR_SIZE); |
1470 | control &= L2CAP_CTRL_SAR; | ||
1471 | |||
1468 | if (pi->conn_state & L2CAP_CONN_SEND_FBIT) { | 1472 | if (pi->conn_state & L2CAP_CONN_SEND_FBIT) { |
1469 | control |= L2CAP_CTRL_FINAL; | 1473 | control |= L2CAP_CTRL_FINAL; |
1470 | pi->conn_state &= ~L2CAP_CONN_SEND_FBIT; | 1474 | pi->conn_state &= ~L2CAP_CONN_SEND_FBIT; |