summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backport/backport-include/linux/netdevice.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/backport/backport-include/linux/netdevice.h b/backport/backport-include/linux/netdevice.h
index c3e91a0c..76b57e4d 100644
--- a/backport/backport-include/linux/netdevice.h
+++ b/backport/backport-include/linux/netdevice.h
@@ -289,13 +289,21 @@ static inline void u64_stats_init(struct u64_stats_sync *syncp)
})
#endif /* netdev_alloc_pcpu_stats */
-#if LINUX_VERSION_IS_LESS(3,19,0)
-#define napi_complete_done LINUX_BACKPORT(napi_complete_done)
-static inline void napi_complete_done(struct napi_struct *n, int work_done)
+#if LINUX_VERSION_IS_LESS(4,10,0)
+static inline bool backport_napi_complete_done(struct napi_struct *n, int work_done)
{
+ if (unlikely(test_bit(NAPI_STATE_NPSVC, &n->state)))
+ return false;
+
+#if LINUX_VERSION_IS_LESS(3,19,0)
napi_complete(n);
-}
+#else
+ napi_complete_done(n, work_done);
#endif /* < 3.19 */
+ return true;
+}
+#define napi_complete_done LINUX_BACKPORT(napi_complete_done)
+#endif /* < 4.10 */
#if LINUX_VERSION_IS_LESS(4,5,0)
#define netif_tx_napi_add LINUX_BACKPORT(netif_tx_napi_add)