aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorEdward Cree <ecree@solarflare.com>2018-07-02 16:14:44 +0100
committerDavid S. Miller <davem@davemloft.net>2018-07-04 14:06:20 +0900
commitb9f463d6c9849230043123a6335d59ac7fea4d5a (patch)
treef783000bbd897cea7d9bbebbfaa3552dc7b35a10 /net/core/dev.c
parentnet: ipv4: listify ip_rcv_finish (diff)
downloadlinux-dev-b9f463d6c9849230043123a6335d59ac7fea4d5a.tar.xz
linux-dev-b9f463d6c9849230043123a6335d59ac7fea4d5a.zip
net: don't bother calling list RX functions on empty lists
Generally the check should be very cheap, as the sk_buff_head is in cache. Signed-off-by: Edward Cree <ecree@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 5e22719ce71d..7e6a2f66db5c 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4887,7 +4887,8 @@ static void __netif_receive_skb_list(struct list_head *head)
/* Handle the previous sublist */
list_cut_before(&sublist, head, &skb->list);
- __netif_receive_skb_list_core(&sublist, pfmemalloc);
+ if (!list_empty(&sublist))
+ __netif_receive_skb_list_core(&sublist, pfmemalloc);
pfmemalloc = !pfmemalloc;
/* See comments in __netif_receive_skb */
if (pfmemalloc)
@@ -4897,7 +4898,8 @@ static void __netif_receive_skb_list(struct list_head *head)
}
}
/* Handle the remaining sublist */
- __netif_receive_skb_list_core(head, pfmemalloc);
+ if (!list_empty(head))
+ __netif_receive_skb_list_core(head, pfmemalloc);
/* Restore pflags */
if (pfmemalloc)
memalloc_noreclaim_restore(noreclaim_flag);
@@ -5058,6 +5060,8 @@ void netif_receive_skb_list(struct list_head *head)
{
struct sk_buff *skb;
+ if (list_empty(head))
+ return;
list_for_each_entry(skb, head, list)
trace_netif_receive_skb_list_entry(skb);
netif_receive_skb_list_internal(head);