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