diff options
Diffstat (limited to 'net/bluetooth/l2cap.c')
-rw-r--r-- | net/bluetooth/l2cap.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c index e5847c5849d7..0a36c61c011f 100644 --- a/net/bluetooth/l2cap.c +++ b/net/bluetooth/l2cap.c | |||
@@ -3348,9 +3348,13 @@ static inline int l2cap_data_channel_sframe(struct sock *sk, u16 rx_control, str | |||
3348 | case L2CAP_SUPER_RCV_READY: | 3348 | case L2CAP_SUPER_RCV_READY: |
3349 | if (rx_control & L2CAP_CTRL_POLL) { | 3349 | if (rx_control & L2CAP_CTRL_POLL) { |
3350 | u16 control = L2CAP_CTRL_FINAL; | 3350 | u16 control = L2CAP_CTRL_FINAL; |
3351 | control |= L2CAP_SUPER_RCV_READY; | 3351 | control |= L2CAP_SUPER_RCV_READY | |
3352 | (pi->buffer_seq << L2CAP_CTRL_REQSEQ_SHIFT); | ||
3352 | l2cap_send_sframe(l2cap_pi(sk), control); | 3353 | l2cap_send_sframe(l2cap_pi(sk), control); |
3353 | } else if (rx_control & L2CAP_CTRL_FINAL) { | 3354 | } else if (rx_control & L2CAP_CTRL_FINAL) { |
3355 | pi->expected_ack_seq = tx_seq; | ||
3356 | l2cap_drop_acked_frames(sk); | ||
3357 | |||
3354 | if (!(pi->conn_state & L2CAP_CONN_WAIT_F)) | 3358 | if (!(pi->conn_state & L2CAP_CONN_WAIT_F)) |
3355 | break; | 3359 | break; |
3356 | 3360 | ||