netfilter: conntrack: remove timer from ecache extension
[firefly-linux-kernel-4.4.55.git] / include / net / netfilter / nf_conntrack_ecache.h
index 0e3d08e4b1d3e59fa101607d88e4c66f7664566d..57c880378443d42d1e568f717922434afeb00974 100644 (file)
@@ -18,7 +18,6 @@ struct nf_conntrack_ecache {
        u16 ctmask;             /* bitmask of ct events to be delivered */
        u16 expmask;            /* bitmask of expect events to be delivered */
        u32 portid;             /* netlink portid of destroyer */
-       struct timer_list timeout;
 };
 
 static inline struct nf_conntrack_ecache *
@@ -216,8 +215,23 @@ void nf_conntrack_ecache_pernet_fini(struct net *net);
 
 int nf_conntrack_ecache_init(void);
 void nf_conntrack_ecache_fini(void);
-#else /* CONFIG_NF_CONNTRACK_EVENTS */
 
+static inline void nf_conntrack_ecache_delayed_work(struct net *net)
+{
+       if (!delayed_work_pending(&net->ct.ecache_dwork)) {
+               schedule_delayed_work(&net->ct.ecache_dwork, HZ);
+               net->ct.ecache_dwork_pending = true;
+       }
+}
+
+static inline void nf_conntrack_ecache_work(struct net *net)
+{
+       if (net->ct.ecache_dwork_pending) {
+               net->ct.ecache_dwork_pending = false;
+               mod_delayed_work(system_wq, &net->ct.ecache_dwork, 0);
+       }
+}
+#else /* CONFIG_NF_CONNTRACK_EVENTS */
 static inline void nf_conntrack_event_cache(enum ip_conntrack_events event,
                                            struct nf_conn *ct) {}
 static inline int nf_conntrack_eventmask_report(unsigned int eventmask,
@@ -255,6 +269,14 @@ static inline int nf_conntrack_ecache_init(void)
 static inline void nf_conntrack_ecache_fini(void)
 {
 }
+
+static inline void nf_conntrack_ecache_delayed_work(struct net *net)
+{
+}
+
+static inline void nf_conntrack_ecache_work(struct net *net)
+{
+}
 #endif /* CONFIG_NF_CONNTRACK_EVENTS */
 
 #endif /*_NF_CONNTRACK_ECACHE_H*/