|
@@ -5970,11 +5970,14 @@ bool napi_complete_done(struct napi_struct *n, int work_done)
|
|
|
if (work_done)
|
|
|
timeout = n->dev->gro_flush_timeout;
|
|
|
|
|
|
+ /* When the NAPI instance uses a timeout and keeps postponing
|
|
|
+ * it, we need to bound somehow the time packets are kept in
|
|
|
+ * the GRO layer
|
|
|
+ */
|
|
|
+ napi_gro_flush(n, !!timeout);
|
|
|
if (timeout)
|
|
|
hrtimer_start(&n->timer, ns_to_ktime(timeout),
|
|
|
HRTIMER_MODE_REL_PINNED);
|
|
|
- else
|
|
|
- napi_gro_flush(n, false);
|
|
|
}
|
|
|
if (unlikely(!list_empty(&n->poll_list))) {
|
|
|
/* If n->poll_list is not empty, we need to mask irqs */
|