|
@@ -790,6 +790,8 @@ int tipc_msg_build(struct tipc_msg *mhdr, struct msghdr *m,
|
|
|
int offset, int dsz, int mtu, struct sk_buff_head *list);
|
|
|
bool tipc_msg_lookup_dest(struct net *net, struct sk_buff *skb, int *err);
|
|
|
struct sk_buff *tipc_msg_reassemble(struct sk_buff_head *list);
|
|
|
+void __tipc_skb_queue_sorted(struct sk_buff_head *list, u16 seqno,
|
|
|
+ struct sk_buff *skb);
|
|
|
|
|
|
static inline u16 buf_seqno(struct sk_buff *skb)
|
|
|
{
|
|
@@ -862,38 +864,6 @@ static inline struct sk_buff *tipc_skb_dequeue(struct sk_buff_head *list,
|
|
|
return skb;
|
|
|
}
|
|
|
|
|
|
-/* tipc_skb_queue_sorted(); sort pkt into list according to sequence number
|
|
|
- * @list: list to be appended to
|
|
|
- * @skb: buffer to add
|
|
|
- * Returns true if queue should treated further, otherwise false
|
|
|
- */
|
|
|
-static inline bool __tipc_skb_queue_sorted(struct sk_buff_head *list,
|
|
|
- struct sk_buff *skb)
|
|
|
-{
|
|
|
- struct sk_buff *_skb, *tmp;
|
|
|
- struct tipc_msg *hdr = buf_msg(skb);
|
|
|
- u16 seqno = msg_seqno(hdr);
|
|
|
-
|
|
|
- if (skb_queue_empty(list) || (msg_user(hdr) == LINK_PROTOCOL)) {
|
|
|
- __skb_queue_head(list, skb);
|
|
|
- return true;
|
|
|
- }
|
|
|
- if (likely(less(seqno, buf_seqno(skb_peek(list))))) {
|
|
|
- __skb_queue_head(list, skb);
|
|
|
- return true;
|
|
|
- }
|
|
|
- if (!more(seqno, buf_seqno(skb_peek_tail(list)))) {
|
|
|
- skb_queue_walk_safe(list, _skb, tmp) {
|
|
|
- if (likely(less(seqno, buf_seqno(_skb)))) {
|
|
|
- __skb_queue_before(list, _skb, skb);
|
|
|
- return true;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- __skb_queue_tail(list, skb);
|
|
|
- return false;
|
|
|
-}
|
|
|
-
|
|
|
/* tipc_skb_queue_splice_tail - append an skb list to lock protected list
|
|
|
* @list: the new list to append. Not lock protected
|
|
|
* @head: target list. Lock protected.
|