1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* Copyright (C) 2014-2017 aQuantia Corporation. */ 3 4 /* File aq_filters.h: RX filters related functions. */ 5 6 #ifndef AQ_FILTERS_H 7 #define AQ_FILTERS_H 8 9 #include "aq_nic.h" 10 11 enum aq_rx_filter_type { 12 aq_rx_filter_ethertype, 13 aq_rx_filter_vlan, 14 aq_rx_filter_l3l4 15 }; 16 17 struct aq_rx_filter { 18 struct hlist_node aq_node; 19 enum aq_rx_filter_type type; 20 struct ethtool_rx_flow_spec aq_fsp; 21 }; 22 23 u16 aq_get_rxnfc_count_all_rules(struct aq_nic_s *aq_nic); 24 struct aq_hw_rx_fltrs_s *aq_get_hw_rx_fltrs(struct aq_nic_s *aq_nic); 25 int aq_add_rxnfc_rule(struct aq_nic_s *aq_nic, const struct ethtool_rxnfc *cmd); 26 int aq_del_rxnfc_rule(struct aq_nic_s *aq_nic, const struct ethtool_rxnfc *cmd); 27 int aq_get_rxnfc_rule(struct aq_nic_s *aq_nic, struct ethtool_rxnfc *cmd); 28 int aq_get_rxnfc_all_rules(struct aq_nic_s *aq_nic, struct ethtool_rxnfc *cmd, 29 u32 *rule_locs); 30 int aq_del_fvlan_by_vlan(struct aq_nic_s *aq_nic, u16 vlan_id); 31 int aq_clear_rxnfc_all_rules(struct aq_nic_s *aq_nic); 32 int aq_reapply_rxnfc_all_rules(struct aq_nic_s *aq_nic); 33 int aq_filters_vlans_update(struct aq_nic_s *aq_nic); 34 int aq_filters_vlan_offload_off(struct aq_nic_s *aq_nic); 35 36 #endif /* AQ_FILTERS_H */ 37