|
@@ -310,14 +310,16 @@ static inline u16 l2cap_seq_list_pop(struct l2cap_seq_list *seq_list)
|
|
|
|
|
|
static void l2cap_seq_list_clear(struct l2cap_seq_list *seq_list)
|
|
|
{
|
|
|
- if (seq_list->head != L2CAP_SEQ_LIST_CLEAR) {
|
|
|
- u16 i;
|
|
|
- for (i = 0; i <= seq_list->mask; i++)
|
|
|
- seq_list->list[i] = L2CAP_SEQ_LIST_CLEAR;
|
|
|
+ u16 i;
|
|
|
|
|
|
- seq_list->head = L2CAP_SEQ_LIST_CLEAR;
|
|
|
- seq_list->tail = L2CAP_SEQ_LIST_CLEAR;
|
|
|
- }
|
|
|
+ if (seq_list->head == L2CAP_SEQ_LIST_CLEAR)
|
|
|
+ return;
|
|
|
+
|
|
|
+ for (i = 0; i <= seq_list->mask; i++)
|
|
|
+ seq_list->list[i] = L2CAP_SEQ_LIST_CLEAR;
|
|
|
+
|
|
|
+ seq_list->head = L2CAP_SEQ_LIST_CLEAR;
|
|
|
+ seq_list->tail = L2CAP_SEQ_LIST_CLEAR;
|
|
|
}
|
|
|
|
|
|
static void l2cap_seq_list_append(struct l2cap_seq_list *seq_list, u16 seq)
|
|
@@ -326,15 +328,16 @@ static void l2cap_seq_list_append(struct l2cap_seq_list *seq_list, u16 seq)
|
|
|
|
|
|
/* All appends happen in constant time */
|
|
|
|
|
|
- if (seq_list->list[seq & mask] == L2CAP_SEQ_LIST_CLEAR) {
|
|
|
- if (seq_list->tail == L2CAP_SEQ_LIST_CLEAR)
|
|
|
- seq_list->head = seq;
|
|
|
- else
|
|
|
- seq_list->list[seq_list->tail & mask] = seq;
|
|
|
+ if (seq_list->list[seq & mask] != L2CAP_SEQ_LIST_CLEAR)
|
|
|
+ return;
|
|
|
|
|
|
- seq_list->tail = seq;
|
|
|
- seq_list->list[seq & mask] = L2CAP_SEQ_LIST_TAIL;
|
|
|
- }
|
|
|
+ if (seq_list->tail == L2CAP_SEQ_LIST_CLEAR)
|
|
|
+ seq_list->head = seq;
|
|
|
+ else
|
|
|
+ seq_list->list[seq_list->tail & mask] = seq;
|
|
|
+
|
|
|
+ seq_list->tail = seq;
|
|
|
+ seq_list->list[seq & mask] = L2CAP_SEQ_LIST_TAIL;
|
|
|
}
|
|
|
|
|
|
static void l2cap_chan_timeout(struct work_struct *work)
|