Skip to content

Commit

Permalink
[SKB]: __skb_append = __skb_queue_after
Browse files Browse the repository at this point in the history
This expresses __skb_append in terms of __skb_queue_after, exploiting that

  __skb_append(old, new, list) = __skb_queue_after(list, old, new).

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Gerrit Renker authored and David S. Miller committed Apr 14, 2008
1 parent bf29927 commit 7de6c03
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 12 deletions.
12 changes: 3 additions & 9 deletions include/linux/skbuff.h
Original file line number Diff line number Diff line change
Expand Up @@ -697,6 +697,9 @@ static inline void __skb_queue_after(struct sk_buff_head *list,
__skb_insert(newsk, prev, prev->next, list);
}

extern void skb_append(struct sk_buff *old, struct sk_buff *newsk,
struct sk_buff_head *list);

/**
* __skb_queue_head - queue a buffer at the list head
* @list: list to use
Expand Down Expand Up @@ -738,15 +741,6 @@ static inline void __skb_queue_tail(struct sk_buff_head *list,
next->prev = prev->next = newsk;
}

/*
* Place a packet after a given packet in a list.
*/
extern void skb_append(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list);
static inline void __skb_append(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list)
{
__skb_insert(newsk, old, old->next, list);
}

/*
* remove sk_buff from list. _Must_ be called atomically, and with
* the list known..
Expand Down
2 changes: 1 addition & 1 deletion include/net/tcp.h
Original file line number Diff line number Diff line change
Expand Up @@ -1247,7 +1247,7 @@ static inline void tcp_insert_write_queue_after(struct sk_buff *skb,
struct sk_buff *buff,
struct sock *sk)
{
__skb_append(skb, buff, &sk->sk_write_queue);
__skb_queue_after(&sk->sk_write_queue, skb, buff);
}

/* Insert skb between prev and next on the write queue of sk. */
Expand Down
2 changes: 1 addition & 1 deletion net/core/skbuff.c
Original file line number Diff line number Diff line change
Expand Up @@ -1860,7 +1860,7 @@ void skb_append(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head
unsigned long flags;

spin_lock_irqsave(&list->lock, flags);
__skb_append(old, newsk, list);
__skb_queue_after(list, old, newsk);
spin_unlock_irqrestore(&list->lock, flags);
}

Expand Down
2 changes: 1 addition & 1 deletion net/ipv4/tcp_input.c
Original file line number Diff line number Diff line change
Expand Up @@ -3968,7 +3968,7 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)
u32 end_seq = TCP_SKB_CB(skb)->end_seq;

if (seq == TCP_SKB_CB(skb1)->end_seq) {
__skb_append(skb1, skb, &tp->out_of_order_queue);
__skb_queue_after(&tp->out_of_order_queue, skb1, skb);

if (!tp->rx_opt.num_sacks ||
tp->selective_acks[0].end_seq != seq)
Expand Down

0 comments on commit 7de6c03

Please sign in to comment.