diff options
author | Eric Dumazet <edumazet@google.com> | 2014-11-10 14:07:20 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-11-10 21:09:03 -0500 |
commit | 2e1af7d74f4f7b4d4c1b0fbf5da3b5f92d9c332f (patch) | |
tree | bb3897b6254475a5170fda29b9355cf7af678dfb /drivers/net/ethernet/mellanox/mlx4/en_rx.c | |
parent | d21385fadabf249afd2e288a1eae1f093ce9fa38 (diff) | |
download | op-kernel-dev-2e1af7d74f4f7b4d4c1b0fbf5da3b5f92d9c332f.zip op-kernel-dev-2e1af7d74f4f7b4d4c1b0fbf5da3b5f92d9c332f.tar.gz |
mlx4: restore conditional call to napi_complete_done()
After commit 1a28817282 ("mlx4: use napi_complete_done()") we ended up
calling napi_complete_done() in the case NAPI poll consumed all its
budget.
This added extra interrupt pressure, this patch restores proper
behavior.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Fixes: 1a28817282 ("mlx4: use napi_complete_done()")
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4/en_rx.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/en_rx.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c index 46ee783..5a193f4 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c @@ -910,13 +910,14 @@ int mlx4_en_poll_rx_cq(struct napi_struct *napi, int budget) cpu_curr = smp_processor_id(); aff = irq_desc_get_irq_data(cq->irq_desc)->affinity; - if (unlikely(!cpumask_test_cpu(cpu_curr, aff))) { - /* Current cpu is not according to smp_irq_affinity - - * probably affinity changed. need to stop this NAPI - * poll, and restart it on the right CPU - */ - done = 0; - } + if (likely(cpumask_test_cpu(cpu_curr, aff))) + return budget; + + /* Current cpu is not according to smp_irq_affinity - + * probably affinity changed. need to stop this NAPI + * poll, and restart it on the right CPU + */ + done = 0; } /* Done for now */ napi_complete_done(napi, done); |