162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/* Copyright (C) 2018-2020, Intel Corporation. */
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#ifndef _ICE_FLTR_H_
562306a36Sopenharmony_ci#define _ICE_FLTR_H_
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include "ice_vlan.h"
862306a36Sopenharmony_ci
962306a36Sopenharmony_civoid ice_fltr_free_list(struct device *dev, struct list_head *h);
1062306a36Sopenharmony_ciint
1162306a36Sopenharmony_ciice_fltr_set_vlan_vsi_promisc(struct ice_hw *hw, struct ice_vsi *vsi,
1262306a36Sopenharmony_ci			      u8 promisc_mask);
1362306a36Sopenharmony_ciint
1462306a36Sopenharmony_ciice_fltr_clear_vlan_vsi_promisc(struct ice_hw *hw, struct ice_vsi *vsi,
1562306a36Sopenharmony_ci				u8 promisc_mask);
1662306a36Sopenharmony_ciint
1762306a36Sopenharmony_ciice_fltr_clear_vsi_promisc(struct ice_hw *hw, u16 vsi_handle, u8 promisc_mask,
1862306a36Sopenharmony_ci			   u16 vid);
1962306a36Sopenharmony_ciint
2062306a36Sopenharmony_ciice_fltr_set_vsi_promisc(struct ice_hw *hw, u16 vsi_handle, u8 promisc_mask,
2162306a36Sopenharmony_ci			 u16 vid);
2262306a36Sopenharmony_ciint
2362306a36Sopenharmony_ciice_fltr_add_mac_to_list(struct ice_vsi *vsi, struct list_head *list,
2462306a36Sopenharmony_ci			 const u8 *mac, enum ice_sw_fwd_act_type action);
2562306a36Sopenharmony_ciint
2662306a36Sopenharmony_ciice_fltr_add_mac(struct ice_vsi *vsi, const u8 *mac,
2762306a36Sopenharmony_ci		 enum ice_sw_fwd_act_type action);
2862306a36Sopenharmony_ciint
2962306a36Sopenharmony_ciice_fltr_add_mac_and_broadcast(struct ice_vsi *vsi, const u8 *mac,
3062306a36Sopenharmony_ci			       enum ice_sw_fwd_act_type action);
3162306a36Sopenharmony_ciint ice_fltr_add_mac_list(struct ice_vsi *vsi, struct list_head *list);
3262306a36Sopenharmony_ciint
3362306a36Sopenharmony_ciice_fltr_remove_mac(struct ice_vsi *vsi, const u8 *mac,
3462306a36Sopenharmony_ci		    enum ice_sw_fwd_act_type action);
3562306a36Sopenharmony_ciint ice_fltr_remove_mac_list(struct ice_vsi *vsi, struct list_head *list);
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciint ice_fltr_add_vlan(struct ice_vsi *vsi, struct ice_vlan *vlan);
3862306a36Sopenharmony_ciint ice_fltr_remove_vlan(struct ice_vsi *vsi, struct ice_vlan *vlan);
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciint
4162306a36Sopenharmony_ciice_fltr_add_eth(struct ice_vsi *vsi, u16 ethertype, u16 flag,
4262306a36Sopenharmony_ci		 enum ice_sw_fwd_act_type action);
4362306a36Sopenharmony_ciint
4462306a36Sopenharmony_ciice_fltr_remove_eth(struct ice_vsi *vsi, u16 ethertype, u16 flag,
4562306a36Sopenharmony_ci		    enum ice_sw_fwd_act_type action);
4662306a36Sopenharmony_civoid ice_fltr_remove_all(struct ice_vsi *vsi);
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ciint
4962306a36Sopenharmony_ciice_fltr_update_flags(struct ice_vsi *vsi, u16 rule_id, u16 recipe_id,
5062306a36Sopenharmony_ci		      u32 new_flags);
5162306a36Sopenharmony_ci#endif
52