1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
263118527SGovindarajulu Varadarajan #ifndef _ENIC_CLSF_H_
363118527SGovindarajulu Varadarajan #define _ENIC_CLSF_H_
463118527SGovindarajulu Varadarajan 
563118527SGovindarajulu Varadarajan #include "vnic_dev.h"
663118527SGovindarajulu Varadarajan #include "enic.h"
763118527SGovindarajulu Varadarajan 
8a145df23SGovindarajulu Varadarajan #define ENIC_CLSF_EXPIRE_COUNT 128
9a145df23SGovindarajulu Varadarajan 
1063118527SGovindarajulu Varadarajan int enic_addfltr_5t(struct enic *enic, struct flow_keys *keys, u16 rq);
1163118527SGovindarajulu Varadarajan int enic_delfltr(struct enic *enic, u16 filter_id);
12a145df23SGovindarajulu Varadarajan void enic_rfs_flw_tbl_init(struct enic *enic);
13a145df23SGovindarajulu Varadarajan void enic_rfs_flw_tbl_free(struct enic *enic);
143762ff8fSGovindarajulu Varadarajan struct enic_rfs_fltr_node *htbl_fltr_search(struct enic *enic, u16 fltr_id);
15e3e5af33SGovindarajulu Varadarajan 
16e3e5af33SGovindarajulu Varadarajan #ifdef CONFIG_RFS_ACCEL
17a145df23SGovindarajulu Varadarajan int enic_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb,
18a145df23SGovindarajulu Varadarajan 		       u16 rxq_index, u32 flow_id);
1986cb30ecSKees Cook void enic_flow_may_expire(struct timer_list *t);
20e3e5af33SGovindarajulu Varadarajan 
enic_rfs_timer_start(struct enic * enic)21e3e5af33SGovindarajulu Varadarajan static inline void enic_rfs_timer_start(struct enic *enic)
22e3e5af33SGovindarajulu Varadarajan {
2386cb30ecSKees Cook 	timer_setup(&enic->rfs_h.rfs_may_expire, enic_flow_may_expire, 0);
24e3e5af33SGovindarajulu Varadarajan 	mod_timer(&enic->rfs_h.rfs_may_expire, jiffies + HZ/4);
25e3e5af33SGovindarajulu Varadarajan }
26e3e5af33SGovindarajulu Varadarajan 
enic_rfs_timer_stop(struct enic * enic)27e3e5af33SGovindarajulu Varadarajan static inline void enic_rfs_timer_stop(struct enic *enic)
28e3e5af33SGovindarajulu Varadarajan {
29e3e5af33SGovindarajulu Varadarajan 	del_timer_sync(&enic->rfs_h.rfs_may_expire);
30e3e5af33SGovindarajulu Varadarajan }
31644a918dSGeert Uytterhoeven #else
enic_rfs_timer_start(struct enic * enic)32e3e5af33SGovindarajulu Varadarajan static inline void enic_rfs_timer_start(struct enic *enic) {}
enic_rfs_timer_stop(struct enic * enic)33e3e5af33SGovindarajulu Varadarajan static inline void enic_rfs_timer_stop(struct enic *enic) {}
34a145df23SGovindarajulu Varadarajan #endif /* CONFIG_RFS_ACCEL */
35a145df23SGovindarajulu Varadarajan 
3663118527SGovindarajulu Varadarajan #endif /* _ENIC_CLSF_H_ */
37