117f54a3bSIgor Russkikh /* SPDX-License-Identifier: GPL-2.0-only */
28d0bcb01SDmitry Bogdanov /* Copyright (C) 2014-2017 aQuantia Corporation. */
38d0bcb01SDmitry Bogdanov 
48d0bcb01SDmitry Bogdanov /* File aq_filters.h: RX filters related functions. */
58d0bcb01SDmitry Bogdanov 
68d0bcb01SDmitry Bogdanov #ifndef AQ_FILTERS_H
78d0bcb01SDmitry Bogdanov #define AQ_FILTERS_H
88d0bcb01SDmitry Bogdanov 
98d0bcb01SDmitry Bogdanov #include "aq_nic.h"
108d0bcb01SDmitry Bogdanov 
118d0bcb01SDmitry Bogdanov enum aq_rx_filter_type {
129a8cac4bSDmitry Bogdanov 	aq_rx_filter_ethertype,
1354bcb3d1SDmitry Bogdanov 	aq_rx_filter_vlan,
148d0bcb01SDmitry Bogdanov 	aq_rx_filter_l3l4
158d0bcb01SDmitry Bogdanov };
168d0bcb01SDmitry Bogdanov 
178d0bcb01SDmitry Bogdanov struct aq_rx_filter {
188d0bcb01SDmitry Bogdanov 	struct hlist_node aq_node;
198d0bcb01SDmitry Bogdanov 	enum aq_rx_filter_type type;
208d0bcb01SDmitry Bogdanov 	struct ethtool_rx_flow_spec aq_fsp;
218d0bcb01SDmitry Bogdanov };
228d0bcb01SDmitry Bogdanov 
238d0bcb01SDmitry Bogdanov u16 aq_get_rxnfc_count_all_rules(struct aq_nic_s *aq_nic);
248d0bcb01SDmitry Bogdanov struct aq_hw_rx_fltrs_s *aq_get_hw_rx_fltrs(struct aq_nic_s *aq_nic);
258d0bcb01SDmitry Bogdanov int aq_add_rxnfc_rule(struct aq_nic_s *aq_nic, const struct ethtool_rxnfc *cmd);
268d0bcb01SDmitry Bogdanov int aq_del_rxnfc_rule(struct aq_nic_s *aq_nic, const struct ethtool_rxnfc *cmd);
278d0bcb01SDmitry Bogdanov int aq_get_rxnfc_rule(struct aq_nic_s *aq_nic, struct ethtool_rxnfc *cmd);
288d0bcb01SDmitry Bogdanov int aq_get_rxnfc_all_rules(struct aq_nic_s *aq_nic, struct ethtool_rxnfc *cmd,
298d0bcb01SDmitry Bogdanov 			   u32 *rule_locs);
307975d2afSDmitry Bogdanov int aq_del_fvlan_by_vlan(struct aq_nic_s *aq_nic, u16 vlan_id);
318d0bcb01SDmitry Bogdanov int aq_clear_rxnfc_all_rules(struct aq_nic_s *aq_nic);
328d0bcb01SDmitry Bogdanov int aq_reapply_rxnfc_all_rules(struct aq_nic_s *aq_nic);
3354bcb3d1SDmitry Bogdanov int aq_filters_vlans_update(struct aq_nic_s *aq_nic);
347975d2afSDmitry Bogdanov int aq_filters_vlan_offload_off(struct aq_nic_s *aq_nic);
358d0bcb01SDmitry Bogdanov 
368d0bcb01SDmitry Bogdanov #endif /* AQ_FILTERS_H */
37