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
11enum aq_rx_filter_type {
12	aq_rx_filter_ethertype,
13	aq_rx_filter_vlan,
14	aq_rx_filter_l3l4
15};
16
17struct 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
23u16 aq_get_rxnfc_count_all_rules(struct aq_nic_s *aq_nic);
24struct aq_hw_rx_fltrs_s *aq_get_hw_rx_fltrs(struct aq_nic_s *aq_nic);
25int aq_add_rxnfc_rule(struct aq_nic_s *aq_nic, const struct ethtool_rxnfc *cmd);
26int aq_del_rxnfc_rule(struct aq_nic_s *aq_nic, const struct ethtool_rxnfc *cmd);
27int aq_get_rxnfc_rule(struct aq_nic_s *aq_nic, struct ethtool_rxnfc *cmd);
28int aq_get_rxnfc_all_rules(struct aq_nic_s *aq_nic, struct ethtool_rxnfc *cmd,
29			   u32 *rule_locs);
30int aq_del_fvlan_by_vlan(struct aq_nic_s *aq_nic, u16 vlan_id);
31int aq_clear_rxnfc_all_rules(struct aq_nic_s *aq_nic);
32int aq_reapply_rxnfc_all_rules(struct aq_nic_s *aq_nic);
33int aq_filters_vlans_update(struct aq_nic_s *aq_nic);
34int aq_filters_vlan_offload_off(struct aq_nic_s *aq_nic);
35
36#endif /* AQ_FILTERS_H */
37