net: add rb_to_skb() and other rb tree helpers
Geeralize private netem_rb_to_skb() TCP rtx queue will soon be converted to rb-tree, so we will need skb_rbtree_walk() helpers. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
f5333f80c3
commit
18a4c0eab2
@@ -3158,6 +3158,12 @@ static inline int __skb_grow_rcsum(struct sk_buff *skb, unsigned int len)
|
||||
return __skb_grow(skb, len);
|
||||
}
|
||||
|
||||
#define rb_to_skb(rb) rb_entry_safe(rb, struct sk_buff, rbnode)
|
||||
#define skb_rb_first(root) rb_to_skb(rb_first(root))
|
||||
#define skb_rb_last(root) rb_to_skb(rb_last(root))
|
||||
#define skb_rb_next(skb) rb_to_skb(rb_next(&(skb)->rbnode))
|
||||
#define skb_rb_prev(skb) rb_to_skb(rb_prev(&(skb)->rbnode))
|
||||
|
||||
#define skb_queue_walk(queue, skb) \
|
||||
for (skb = (queue)->next; \
|
||||
skb != (struct sk_buff *)(queue); \
|
||||
@@ -3172,6 +3178,18 @@ static inline int __skb_grow_rcsum(struct sk_buff *skb, unsigned int len)
|
||||
for (; skb != (struct sk_buff *)(queue); \
|
||||
skb = skb->next)
|
||||
|
||||
#define skb_rbtree_walk(skb, root) \
|
||||
for (skb = skb_rb_first(root); skb != NULL; \
|
||||
skb = skb_rb_next(skb))
|
||||
|
||||
#define skb_rbtree_walk_from(skb) \
|
||||
for (; skb != NULL; \
|
||||
skb = skb_rb_next(skb))
|
||||
|
||||
#define skb_rbtree_walk_from_safe(skb, tmp) \
|
||||
for (; tmp = skb ? skb_rb_next(skb) : NULL, (skb != NULL); \
|
||||
skb = tmp)
|
||||
|
||||
#define skb_queue_walk_from_safe(queue, skb, tmp) \
|
||||
for (tmp = skb->next; \
|
||||
skb != (struct sk_buff *)(queue); \
|
||||
|
Reference in New Issue
Block a user