1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2001-2021 Intel Corporation 3 */ 4 5 #ifndef _ICE_FLEX_PIPE_H_ 6 #define _ICE_FLEX_PIPE_H_ 7 8 #include "ice_type.h" 9 10 /* Package minimal version supported */ 11 #define ICE_PKG_SUPP_VER_MAJ 1 12 #define ICE_PKG_SUPP_VER_MNR 3 13 14 /* Package format version */ 15 #define ICE_PKG_FMT_VER_MAJ 1 16 #define ICE_PKG_FMT_VER_MNR 0 17 #define ICE_PKG_FMT_VER_UPD 0 18 #define ICE_PKG_FMT_VER_DFT 0 19 20 #define ICE_PKG_CNT 4 21 22 enum ice_status 23 ice_update_pkg(struct ice_hw *hw, struct ice_buf *bufs, u32 count); 24 enum ice_status 25 ice_acquire_change_lock(struct ice_hw *hw, enum ice_aq_res_access_type access); 26 void ice_release_change_lock(struct ice_hw *hw); 27 enum ice_status 28 ice_find_prot_off(struct ice_hw *hw, enum ice_block blk, u8 prof, u16 fv_idx, 29 u8 *prot, u16 *off); 30 enum ice_status 31 ice_find_label_value(struct ice_seg *ice_seg, char const *name, u32 type, 32 u16 *value); 33 void 34 ice_get_sw_fv_bitmap(struct ice_hw *hw, enum ice_prof_type type, 35 ice_bitmap_t *bm); 36 void 37 ice_init_prof_result_bm(struct ice_hw *hw); 38 enum ice_status 39 ice_get_sw_fv_list(struct ice_hw *hw, u8 *prot_ids, u16 ids_cnt, 40 ice_bitmap_t *bm, struct LIST_HEAD_TYPE *fv_list); 41 enum ice_status 42 ice_pkg_buf_unreserve_section(struct ice_buf_build *bld, u16 count); 43 u16 ice_pkg_buf_get_free_space(struct ice_buf_build *bld); 44 enum ice_status 45 ice_aq_upload_section(struct ice_hw *hw, struct ice_buf_hdr *pkg_buf, 46 u16 buf_size, struct ice_sq_cd *cd); 47 bool 48 ice_get_open_tunnel_port(struct ice_hw *hw, enum ice_tunnel_type type, 49 u16 *port); 50 enum ice_status 51 ice_create_tunnel(struct ice_hw *hw, enum ice_tunnel_type type, u16 port); 52 enum ice_status ice_destroy_tunnel(struct ice_hw *hw, u16 port, bool all); 53 bool ice_tunnel_port_in_use(struct ice_hw *hw, u16 port, u16 *index); 54 bool 55 ice_tunnel_get_type(struct ice_hw *hw, u16 port, enum ice_tunnel_type *type); 56 57 /* RX parser PType functions */ 58 bool ice_hw_ptype_ena(struct ice_hw *hw, u16 ptype); 59 60 /* XLT2/VSI group functions */ 61 enum ice_status 62 ice_vsig_find_vsi(struct ice_hw *hw, enum ice_block blk, u16 vsi, u16 *vsig); 63 enum ice_status 64 ice_add_prof(struct ice_hw *hw, enum ice_block blk, u64 id, u8 ptypes[], 65 const struct ice_ptype_attributes *attr, u16 attr_cnt, 66 struct ice_fv_word *es, u16 *masks); 67 void ice_init_all_prof_masks(struct ice_hw *hw); 68 void ice_shutdown_all_prof_masks(struct ice_hw *hw); 69 struct ice_prof_map * 70 ice_search_prof_id(struct ice_hw *hw, enum ice_block blk, u64 id); 71 enum ice_status 72 ice_add_vsi_flow(struct ice_hw *hw, enum ice_block blk, u16 vsi, u16 vsig); 73 enum ice_status 74 ice_add_prof_id_flow(struct ice_hw *hw, enum ice_block blk, u16 vsi, u64 hdl); 75 enum ice_status 76 ice_rem_prof_id_flow(struct ice_hw *hw, enum ice_block blk, u16 vsi, u64 hdl); 77 enum ice_status ice_init_pkg(struct ice_hw *hw, u8 *buff, u32 len); 78 enum ice_status 79 ice_copy_and_init_pkg(struct ice_hw *hw, const u8 *buf, u32 len); 80 enum ice_status ice_init_hw_tbls(struct ice_hw *hw); 81 void ice_free_seg(struct ice_hw *hw); 82 void ice_fill_blk_tbls(struct ice_hw *hw); 83 void ice_clear_hw_tbls(struct ice_hw *hw); 84 void ice_free_hw_tbls(struct ice_hw *hw); 85 enum ice_status 86 ice_rem_prof(struct ice_hw *hw, enum ice_block blk, u64 id); 87 struct ice_buf_build * 88 ice_pkg_buf_alloc_single_section(struct ice_hw *hw, u32 type, u16 size, 89 void **section); 90 struct ice_buf *ice_pkg_buf(struct ice_buf_build *bld); 91 void ice_pkg_buf_free(struct ice_hw *hw, struct ice_buf_build *bld); 92 93 enum ice_status 94 ice_set_key(u8 *key, u16 size, u8 *val, u8 *upd, u8 *dc, u8 *nm, u16 off, 95 u16 len); 96 #endif /* _ICE_FLEX_PIPE_H_ */ 97