|
@@ -549,9 +549,11 @@ static void l2cap_chan_del(struct l2cap_chan *chan, int err)
|
|
|
if (test_bit(CONF_NOT_COMPLETE, &chan->conf_state))
|
|
|
return;
|
|
|
|
|
|
- skb_queue_purge(&chan->tx_q);
|
|
|
+ switch(chan->mode) {
|
|
|
+ case L2CAP_MODE_BASIC:
|
|
|
+ break;
|
|
|
|
|
|
- if (chan->mode == L2CAP_MODE_ERTM) {
|
|
|
+ case L2CAP_MODE_ERTM:
|
|
|
__clear_retrans_timer(chan);
|
|
|
__clear_monitor_timer(chan);
|
|
|
__clear_ack_timer(chan);
|
|
@@ -560,7 +562,15 @@ static void l2cap_chan_del(struct l2cap_chan *chan, int err)
|
|
|
|
|
|
l2cap_seq_list_free(&chan->srej_list);
|
|
|
l2cap_seq_list_free(&chan->retrans_list);
|
|
|
+
|
|
|
+ /* fall through */
|
|
|
+
|
|
|
+ case L2CAP_MODE_STREAMING:
|
|
|
+ skb_queue_purge(&chan->tx_q);
|
|
|
+ break;
|
|
|
}
|
|
|
+
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
static void l2cap_chan_cleanup_listen(struct sock *parent)
|