Linux Audio

Check our new training course

Loading...
v6.13.7
 1/* SPDX-License-Identifier: GPL-2.0 */
 2/* Copyright (c) 2019, Intel Corporation. */
 3
 4#ifndef _ICE_FLEX_PIPE_H_
 5#define _ICE_FLEX_PIPE_H_
 6
 7#include "ice_type.h"
 8
 9#define ICE_FDIR_REG_SET_SIZE	4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
11int
12ice_acquire_change_lock(struct ice_hw *hw, enum ice_aq_res_access_type access);
13void ice_release_change_lock(struct ice_hw *hw);
14int
15ice_find_prot_off(struct ice_hw *hw, enum ice_block blk, u8 prof, u16 fv_idx,
16		  u8 *prot, u16 *off);
17void
18ice_get_sw_fv_bitmap(struct ice_hw *hw, enum ice_prof_type type,
19		     unsigned long *bm);
20void
21ice_init_prof_result_bm(struct ice_hw *hw);
22int
23ice_get_sw_fv_list(struct ice_hw *hw, struct ice_prot_lkup_ext *lkups,
24		   unsigned long *bm, struct list_head *fv_list);
25int
 
 
 
26ice_aq_upload_section(struct ice_hw *hw, struct ice_buf_hdr *pkg_buf,
27		      u16 buf_size, struct ice_sq_cd *cd);
28bool
29ice_get_open_tunnel_port(struct ice_hw *hw, u16 *port,
30			 enum ice_tunnel_type type);
31int ice_udp_tunnel_set_port(struct net_device *netdev, unsigned int table,
32			    unsigned int idx, struct udp_tunnel_info *ti);
33int ice_udp_tunnel_unset_port(struct net_device *netdev, unsigned int table,
34			      unsigned int idx, struct udp_tunnel_info *ti);
35int ice_set_dvm_boost_entries(struct ice_hw *hw);
36
37/* Rx parser PTYPE functions */
38bool ice_hw_ptype_ena(struct ice_hw *hw, u16 ptype);
39
40/* XLT2/VSI group functions */
41int
42ice_add_prof(struct ice_hw *hw, enum ice_block blk, u64 id, u8 ptypes[],
43	     const struct ice_ptype_attributes *attr, u16 attr_cnt,
44	     struct ice_fv_word *es, u16 *masks, bool symm, bool fd_swap);
45struct ice_prof_map *
46ice_search_prof_id(struct ice_hw *hw, enum ice_block blk, u64 id);
47int
48ice_add_prof_id_flow(struct ice_hw *hw, enum ice_block blk, u16 vsi, u64 hdl);
49int
50ice_rem_prof_id_flow(struct ice_hw *hw, enum ice_block blk, u16 vsi, u64 hdl);
51int
52ice_flow_assoc_fdir_prof(struct ice_hw *hw, enum ice_block blk,
53			 u16 dest_vsi, u16 fdir_vsi, u64 hdl);
54enum ice_ddp_state ice_init_pkg(struct ice_hw *hw, u8 *buff, u32 len);
55enum ice_ddp_state
56ice_copy_and_init_pkg(struct ice_hw *hw, const u8 *buf, u32 len);
57bool ice_is_init_pkg_successful(enum ice_ddp_state state);
58int ice_init_hw_tbls(struct ice_hw *hw);
59void ice_free_seg(struct ice_hw *hw);
60void ice_fill_blk_tbls(struct ice_hw *hw);
61void ice_clear_hw_tbls(struct ice_hw *hw);
62void ice_free_hw_tbls(struct ice_hw *hw);
63int ice_rem_prof(struct ice_hw *hw, enum ice_block blk, u64 id);
64struct ice_buf_build *
65ice_pkg_buf_alloc_single_section(struct ice_hw *hw, u32 type, u16 size,
66				 void **section);
67struct ice_buf *ice_pkg_buf(struct ice_buf_build *bld);
68void ice_pkg_buf_free(struct ice_hw *hw, struct ice_buf_build *bld);
69
70#endif /* _ICE_FLEX_PIPE_H_ */
v6.2
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/* Copyright (c) 2019, Intel Corporation. */
  3
  4#ifndef _ICE_FLEX_PIPE_H_
  5#define _ICE_FLEX_PIPE_H_
  6
  7#include "ice_type.h"
  8
  9/* Package minimal version supported */
 10#define ICE_PKG_SUPP_VER_MAJ	1
 11#define ICE_PKG_SUPP_VER_MNR	3
 12
 13/* Package format version */
 14#define ICE_PKG_FMT_VER_MAJ	1
 15#define ICE_PKG_FMT_VER_MNR	0
 16#define ICE_PKG_FMT_VER_UPD	0
 17#define ICE_PKG_FMT_VER_DFT	0
 18
 19#define ICE_PKG_CNT 4
 20
 21enum ice_ddp_state {
 22	/* Indicates that this call to ice_init_pkg
 23	 * successfully loaded the requested DDP package
 24	 */
 25	ICE_DDP_PKG_SUCCESS			= 0,
 26
 27	/* Generic error for already loaded errors, it is mapped later to
 28	 * the more specific one (one of the next 3)
 29	 */
 30	ICE_DDP_PKG_ALREADY_LOADED			= -1,
 31
 32	/* Indicates that a DDP package of the same version has already been
 33	 * loaded onto the device by a previous call or by another PF
 34	 */
 35	ICE_DDP_PKG_SAME_VERSION_ALREADY_LOADED		= -2,
 36
 37	/* The device has a DDP package that is not supported by the driver */
 38	ICE_DDP_PKG_ALREADY_LOADED_NOT_SUPPORTED	= -3,
 39
 40	/* The device has a compatible package
 41	 * (but different from the request) already loaded
 42	 */
 43	ICE_DDP_PKG_COMPATIBLE_ALREADY_LOADED		= -4,
 44
 45	/* The firmware loaded on the device is not compatible with
 46	 * the DDP package loaded
 47	 */
 48	ICE_DDP_PKG_FW_MISMATCH				= -5,
 49
 50	/* The DDP package file is invalid */
 51	ICE_DDP_PKG_INVALID_FILE			= -6,
 52
 53	/* The version of the DDP package provided is higher than
 54	 * the driver supports
 55	 */
 56	ICE_DDP_PKG_FILE_VERSION_TOO_HIGH		= -7,
 57
 58	/* The version of the DDP package provided is lower than the
 59	 * driver supports
 60	 */
 61	ICE_DDP_PKG_FILE_VERSION_TOO_LOW		= -8,
 62
 63	/* The signature of the DDP package file provided is invalid */
 64	ICE_DDP_PKG_FILE_SIGNATURE_INVALID		= -9,
 65
 66	/* The DDP package file security revision is too low and not
 67	 * supported by firmware
 68	 */
 69	ICE_DDP_PKG_FILE_REVISION_TOO_LOW		= -10,
 70
 71	/* An error occurred in firmware while loading the DDP package */
 72	ICE_DDP_PKG_LOAD_ERROR				= -11,
 73
 74	/* Other errors */
 75	ICE_DDP_PKG_ERR					= -12
 76};
 77
 78int
 79ice_acquire_change_lock(struct ice_hw *hw, enum ice_aq_res_access_type access);
 80void ice_release_change_lock(struct ice_hw *hw);
 81int
 82ice_find_prot_off(struct ice_hw *hw, enum ice_block blk, u8 prof, u16 fv_idx,
 83		  u8 *prot, u16 *off);
 84void
 85ice_get_sw_fv_bitmap(struct ice_hw *hw, enum ice_prof_type type,
 86		     unsigned long *bm);
 87void
 88ice_init_prof_result_bm(struct ice_hw *hw);
 89int
 90ice_get_sw_fv_list(struct ice_hw *hw, struct ice_prot_lkup_ext *lkups,
 91		   unsigned long *bm, struct list_head *fv_list);
 92int
 93ice_pkg_buf_unreserve_section(struct ice_buf_build *bld, u16 count);
 94u16 ice_pkg_buf_get_free_space(struct ice_buf_build *bld);
 95int
 96ice_aq_upload_section(struct ice_hw *hw, struct ice_buf_hdr *pkg_buf,
 97		      u16 buf_size, struct ice_sq_cd *cd);
 98bool
 99ice_get_open_tunnel_port(struct ice_hw *hw, u16 *port,
100			 enum ice_tunnel_type type);
101int ice_udp_tunnel_set_port(struct net_device *netdev, unsigned int table,
102			    unsigned int idx, struct udp_tunnel_info *ti);
103int ice_udp_tunnel_unset_port(struct net_device *netdev, unsigned int table,
104			      unsigned int idx, struct udp_tunnel_info *ti);
105int ice_set_dvm_boost_entries(struct ice_hw *hw);
106
107/* Rx parser PTYPE functions */
108bool ice_hw_ptype_ena(struct ice_hw *hw, u16 ptype);
109
110/* XLT2/VSI group functions */
111int
112ice_add_prof(struct ice_hw *hw, enum ice_block blk, u64 id, u8 ptypes[],
113	     const struct ice_ptype_attributes *attr, u16 attr_cnt,
114	     struct ice_fv_word *es, u16 *masks);
 
 
115int
116ice_add_prof_id_flow(struct ice_hw *hw, enum ice_block blk, u16 vsi, u64 hdl);
117int
118ice_rem_prof_id_flow(struct ice_hw *hw, enum ice_block blk, u16 vsi, u64 hdl);
 
 
 
119enum ice_ddp_state ice_init_pkg(struct ice_hw *hw, u8 *buff, u32 len);
120enum ice_ddp_state
121ice_copy_and_init_pkg(struct ice_hw *hw, const u8 *buf, u32 len);
122bool ice_is_init_pkg_successful(enum ice_ddp_state state);
123int ice_init_hw_tbls(struct ice_hw *hw);
124void ice_free_seg(struct ice_hw *hw);
125void ice_fill_blk_tbls(struct ice_hw *hw);
126void ice_clear_hw_tbls(struct ice_hw *hw);
127void ice_free_hw_tbls(struct ice_hw *hw);
128int ice_rem_prof(struct ice_hw *hw, enum ice_block blk, u64 id);
129struct ice_buf_build *
130ice_pkg_buf_alloc_single_section(struct ice_hw *hw, u32 type, u16 size,
131				 void **section);
132struct ice_buf *ice_pkg_buf(struct ice_buf_build *bld);
133void ice_pkg_buf_free(struct ice_hw *hw, struct ice_buf_build *bld);
134
135#endif /* _ICE_FLEX_PIPE_H_ */