diff options
author | David S. Miller <davem@davemloft.net> | 2018-07-20 23:37:55 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-07-20 23:37:55 -0700 |
commit | 7c4ec749a3bd89237d7195ccd621bf5d4124d6b5 (patch) | |
tree | 3c9d09ee760e7f4da97da4b441f0e5b6a28f4685 /net/core/dev.c | |
parent | 99d20a461c43556242a4e1b65e309f1c1fadea4f (diff) | |
download | linux-7c4ec749a3bd89237d7195ccd621bf5d4124d6b5.tar.gz linux-7c4ec749a3bd89237d7195ccd621bf5d4124d6b5.tar.bz2 linux-7c4ec749a3bd89237d7195ccd621bf5d4124d6b5.zip |
net: Init backlog NAPI's gro_hash.
Based upon a patch by Sean Tranchetti.
Fixes: d4546c2509b1 ("net: Convert GRO SKB handling to list_head.")
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 4f8b92d81d10..87c42c8249ae 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -6115,19 +6115,24 @@ static enum hrtimer_restart napi_watchdog(struct hrtimer *timer) return HRTIMER_NORESTART; } -void netif_napi_add(struct net_device *dev, struct napi_struct *napi, - int (*poll)(struct napi_struct *, int), int weight) +static void init_gro_hash(struct napi_struct *napi) { int i; - INIT_LIST_HEAD(&napi->poll_list); - hrtimer_init(&napi->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED); - napi->timer.function = napi_watchdog; - napi->gro_bitmask = 0; for (i = 0; i < GRO_HASH_BUCKETS; i++) { INIT_LIST_HEAD(&napi->gro_hash[i].list); napi->gro_hash[i].count = 0; } + napi->gro_bitmask = 0; +} + +void netif_napi_add(struct net_device *dev, struct napi_struct *napi, + int (*poll)(struct napi_struct *, int), int weight) +{ + INIT_LIST_HEAD(&napi->poll_list); + hrtimer_init(&napi->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED); + napi->timer.function = napi_watchdog; + init_gro_hash(napi); napi->skb = NULL; napi->poll = poll; if (weight > NAPI_POLL_WEIGHT) @@ -9554,6 +9559,7 @@ static int __init net_dev_init(void) sd->cpu = i; #endif + init_gro_hash(&sd->backlog); sd->backlog.poll = process_backlog; sd->backlog.weight = weight_p; } |