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_set_dvm_boost_entries(struct ice_hw *hw); 53 enum ice_status ice_destroy_tunnel(struct ice_hw *hw, u16 port, bool all); 54 bool ice_tunnel_port_in_use(struct ice_hw *hw, u16 port, u16 *index); 55 bool 56 ice_tunnel_get_type(struct ice_hw *hw, u16 port, enum ice_tunnel_type *type); 57 58 /* RX parser PType functions */ 59 bool ice_hw_ptype_ena(struct ice_hw *hw, u16 ptype); 60 61 /* XLT2/VSI group functions */ 62 enum ice_status 63 ice_vsig_find_vsi(struct ice_hw *hw, enum ice_block blk, u16 vsi, u16 *vsig); 64 void ice_disable_fd_swap(struct ice_hw *hw, u16 prof_id); 65 enum ice_status 66 ice_add_prof(struct ice_hw *hw, enum ice_block blk, u64 id, u8 ptypes[], 67 const struct ice_ptype_attributes *attr, u16 attr_cnt, 68 struct ice_fv_word *es, u16 *masks, bool fd_swap); 69 void ice_init_all_prof_masks(struct ice_hw *hw); 70 void ice_shutdown_all_prof_masks(struct ice_hw *hw); 71 struct ice_prof_map * 72 ice_search_prof_id(struct ice_hw *hw, enum ice_block blk, u64 id); 73 enum ice_status 74 ice_add_vsi_flow(struct ice_hw *hw, enum ice_block blk, u16 vsi, u16 vsig); 75 enum ice_status 76 ice_add_prof_id_flow(struct ice_hw *hw, enum ice_block blk, u16 vsi, u64 hdl); 77 enum ice_status 78 ice_rem_prof_id_flow(struct ice_hw *hw, enum ice_block blk, u16 vsi, u64 hdl); 79 enum ice_status 80 ice_flow_assoc_hw_prof(struct ice_hw *hw, enum ice_block blk, 81 u16 dest_vsi_handle, u16 fdir_vsi_handle, int id); 82 enum ice_status ice_init_pkg(struct ice_hw *hw, u8 *buff, u32 len); 83 enum ice_status 84 ice_copy_and_init_pkg(struct ice_hw *hw, const u8 *buf, u32 len); 85 enum ice_status ice_init_hw_tbls(struct ice_hw *hw); 86 void ice_free_seg(struct ice_hw *hw); 87 void ice_fill_blk_tbls(struct ice_hw *hw); 88 void ice_clear_hw_tbls(struct ice_hw *hw); 89 void ice_free_hw_tbls(struct ice_hw *hw); 90 enum ice_status 91 ice_rem_prof(struct ice_hw *hw, enum ice_block blk, u64 id); 92 struct ice_buf_build * 93 ice_pkg_buf_alloc_single_section(struct ice_hw *hw, u32 type, u16 size, 94 void **section); 95 struct ice_buf *ice_pkg_buf(struct ice_buf_build *bld); 96 void ice_pkg_buf_free(struct ice_hw *hw, struct ice_buf_build *bld); 97 98 enum ice_status 99 ice_set_key(u8 *key, u16 size, u8 *val, u8 *upd, u8 *dc, u8 *nm, u16 off, 100 u16 len); 101 void * 102 ice_pkg_enum_entry(struct ice_seg *ice_seg, struct ice_pkg_enum *state, 103 u32 sect_type, u32 *offset, 104 void *(*handler)(u32 sect_type, void *section, 105 u32 index, u32 *offset)); 106 void * 107 ice_pkg_enum_section(struct ice_seg *ice_seg, struct ice_pkg_enum *state, 108 u32 sect_type); 109 #endif /* _ICE_FLEX_PIPE_H_ */ 110