mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-30 13:38:40 +00:00
Bluetooth: Use the ERTM transmit state machine from timeout handlers
Different states have different actions for retransmit and monitor timeouts, so remove the logic for those actions from the timer handlers. Signed-off-by: Mat Martineau <mathewm@codeaurora.org> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
This commit is contained in:
parent
4239d16f36
commit
80909e04de
@ -1643,17 +1643,14 @@ static void l2cap_monitor_timeout(struct work_struct *work)
|
||||
|
||||
l2cap_chan_lock(chan);
|
||||
|
||||
if (chan->retry_count >= chan->remote_max_tx) {
|
||||
l2cap_send_disconn_req(chan->conn, chan, ECONNABORTED);
|
||||
if (!chan->conn) {
|
||||
l2cap_chan_unlock(chan);
|
||||
l2cap_chan_put(chan);
|
||||
return;
|
||||
}
|
||||
|
||||
chan->retry_count++;
|
||||
__set_monitor_timer(chan);
|
||||
l2cap_tx(chan, 0, 0, L2CAP_EV_MONITOR_TO);
|
||||
|
||||
l2cap_send_rr_or_rnr(chan, L2CAP_CTRL_POLL);
|
||||
l2cap_chan_unlock(chan);
|
||||
l2cap_chan_put(chan);
|
||||
}
|
||||
@ -1667,13 +1664,13 @@ static void l2cap_retrans_timeout(struct work_struct *work)
|
||||
|
||||
l2cap_chan_lock(chan);
|
||||
|
||||
chan->retry_count = 1;
|
||||
__set_monitor_timer(chan);
|
||||
|
||||
set_bit(CONN_WAIT_F, &chan->conn_state);
|
||||
|
||||
l2cap_send_rr_or_rnr(chan, L2CAP_CTRL_POLL);
|
||||
if (!chan->conn) {
|
||||
l2cap_chan_unlock(chan);
|
||||
l2cap_chan_put(chan);
|
||||
return;
|
||||
}
|
||||
|
||||
l2cap_tx(chan, 0, 0, L2CAP_EV_RETRANS_TO);
|
||||
l2cap_chan_unlock(chan);
|
||||
l2cap_chan_put(chan);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user