xref: /openbmc/linux/drivers/net/ethernet/aquantia/atlantic/aq_filters.h (revision 0898782247ae533d1f4e47a06bc5d4870931b284)
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