mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 05:04:00 +08:00
[SKB]: __skb_append = __skb_queue_after
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>
This commit is contained in:
parent
bf29927588
commit
7de6c03336
@ -697,6 +697,9 @@ static inline void __skb_queue_after(struct sk_buff_head *list,
|
|||||||
__skb_insert(newsk, prev, prev->next, 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
|
* __skb_queue_head - queue a buffer at the list head
|
||||||
* @list: list to use
|
* @list: list to use
|
||||||
@ -738,15 +741,6 @@ static inline void __skb_queue_tail(struct sk_buff_head *list,
|
|||||||
next->prev = prev->next = newsk;
|
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
|
* remove sk_buff from list. _Must_ be called atomically, and with
|
||||||
* the list known..
|
* the list known..
|
||||||
|
@ -1247,7 +1247,7 @@ static inline void tcp_insert_write_queue_after(struct sk_buff *skb,
|
|||||||
struct sk_buff *buff,
|
struct sk_buff *buff,
|
||||||
struct sock *sk)
|
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. */
|
/* Insert skb between prev and next on the write queue of sk. */
|
||||||
|
@ -1860,7 +1860,7 @@ void skb_append(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head
|
|||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
spin_lock_irqsave(&list->lock, flags);
|
spin_lock_irqsave(&list->lock, flags);
|
||||||
__skb_append(old, newsk, list);
|
__skb_queue_after(list, old, newsk);
|
||||||
spin_unlock_irqrestore(&list->lock, flags);
|
spin_unlock_irqrestore(&list->lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3968,7 +3968,7 @@ drop:
|
|||||||
u32 end_seq = TCP_SKB_CB(skb)->end_seq;
|
u32 end_seq = TCP_SKB_CB(skb)->end_seq;
|
||||||
|
|
||||||
if (seq == TCP_SKB_CB(skb1)->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 ||
|
if (!tp->rx_opt.num_sacks ||
|
||||||
tp->selective_acks[0].end_seq != seq)
|
tp->selective_acks[0].end_seq != seq)
|
||||||
|
Loading…
Reference in New Issue
Block a user