net: Add and use skb_mark_not_on_list().
An SKB is not on a list if skb->next is NULL. Codify this convention into a helper function and use it where we are dequeueing an SKB and need to mark it as such. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -3231,7 +3231,7 @@ struct sk_buff *dev_hard_start_xmit(struct sk_buff *first, struct net_device *de
|
||||
while (skb) {
|
||||
struct sk_buff *next = skb->next;
|
||||
|
||||
skb->next = NULL;
|
||||
skb_mark_not_on_list(skb);
|
||||
rc = xmit_one(skb, dev, txq, next != NULL);
|
||||
if (unlikely(!dev_xmit_complete(rc))) {
|
||||
skb->next = next;
|
||||
@@ -3331,7 +3331,7 @@ struct sk_buff *validate_xmit_skb_list(struct sk_buff *skb, struct net_device *d
|
||||
|
||||
for (; skb != NULL; skb = next) {
|
||||
next = skb->next;
|
||||
skb->next = NULL;
|
||||
skb_mark_not_on_list(skb);
|
||||
|
||||
/* in case skb wont be segmented, point to itself */
|
||||
skb->prev = skb;
|
||||
@@ -5296,7 +5296,7 @@ static void __napi_gro_flush_chain(struct napi_struct *napi, u32 index,
|
||||
if (flush_old && NAPI_GRO_CB(skb)->age == jiffies)
|
||||
return;
|
||||
list_del(&skb->list);
|
||||
skb->next = NULL;
|
||||
skb_mark_not_on_list(skb);
|
||||
napi_gro_complete(skb);
|
||||
napi->gro_hash[index].count--;
|
||||
}
|
||||
@@ -5482,7 +5482,7 @@ static enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff
|
||||
|
||||
if (pp) {
|
||||
list_del(&pp->list);
|
||||
pp->next = NULL;
|
||||
skb_mark_not_on_list(pp);
|
||||
napi_gro_complete(pp);
|
||||
napi->gro_hash[hash].count--;
|
||||
}
|
||||
|
Reference in New Issue
Block a user