114b24e2bSVaishali Kulkarni /*
214b24e2bSVaishali Kulkarni * CDDL HEADER START
314b24e2bSVaishali Kulkarni *
414b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the
514b24e2bSVaishali Kulkarni * Common Development and Distribution License, v.1,  (the "License").
614b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License.
714b24e2bSVaishali Kulkarni *
814b24e2bSVaishali Kulkarni * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
914b24e2bSVaishali Kulkarni * or http://opensource.org/licenses/CDDL-1.0.
1014b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions
1114b24e2bSVaishali Kulkarni * and limitations under the License.
1214b24e2bSVaishali Kulkarni *
1314b24e2bSVaishali Kulkarni * When distributing Covered Code, include this CDDL HEADER in each
1414b24e2bSVaishali Kulkarni * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1514b24e2bSVaishali Kulkarni * If applicable, add the following below this CDDL HEADER, with the
1614b24e2bSVaishali Kulkarni * fields enclosed by brackets "[]" replaced with your own identifying
1714b24e2bSVaishali Kulkarni * information: Portions Copyright [yyyy] [name of copyright owner]
1814b24e2bSVaishali Kulkarni *
1914b24e2bSVaishali Kulkarni * CDDL HEADER END
2014b24e2bSVaishali Kulkarni */
2114b24e2bSVaishali Kulkarni 
2214b24e2bSVaishali Kulkarni /*
23*9b622488SToomas Soome * Copyright 2014-2017 Cavium, Inc.
24*9b622488SToomas Soome * The contents of this file are subject to the terms of the Common Development
2514b24e2bSVaishali Kulkarni * and Distribution License, v.1,  (the "License").
2614b24e2bSVaishali Kulkarni 
2714b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License.
2814b24e2bSVaishali Kulkarni 
29*9b622488SToomas Soome * You can obtain a copy of the License at available
3014b24e2bSVaishali Kulkarni * at http://opensource.org/licenses/CDDL-1.0
3114b24e2bSVaishali Kulkarni 
32*9b622488SToomas Soome * See the License for the specific language governing permissions and
3314b24e2bSVaishali Kulkarni * limitations under the License.
3414b24e2bSVaishali Kulkarni */
3514b24e2bSVaishali Kulkarni 
3614b24e2bSVaishali Kulkarni #ifndef __ECORE_DEV_API_H__
3714b24e2bSVaishali Kulkarni #define __ECORE_DEV_API_H__
3814b24e2bSVaishali Kulkarni 
3914b24e2bSVaishali Kulkarni #include "ecore_status.h"
4014b24e2bSVaishali Kulkarni #include "ecore_chain.h"
4114b24e2bSVaishali Kulkarni #include "ecore_int_api.h"
4214b24e2bSVaishali Kulkarni 
4314b24e2bSVaishali Kulkarni struct ecore_wake_info {
4414b24e2bSVaishali Kulkarni 	u32 wk_info;
4514b24e2bSVaishali Kulkarni 	u32 wk_details;
4614b24e2bSVaishali Kulkarni 	u32 wk_pkt_len;
4714b24e2bSVaishali Kulkarni 	u8  wk_buffer[256];
4814b24e2bSVaishali Kulkarni };
4914b24e2bSVaishali Kulkarni 
5014b24e2bSVaishali Kulkarni /**
5114b24e2bSVaishali Kulkarni  * @brief ecore_init_dp - initialize the debug level
5214b24e2bSVaishali Kulkarni  *
5314b24e2bSVaishali Kulkarni  * @param p_dev
5414b24e2bSVaishali Kulkarni  * @param dp_module
5514b24e2bSVaishali Kulkarni  * @param dp_level
5614b24e2bSVaishali Kulkarni  * @param dp_ctx
5714b24e2bSVaishali Kulkarni  */
5814b24e2bSVaishali Kulkarni void ecore_init_dp(struct ecore_dev *p_dev,
5914b24e2bSVaishali Kulkarni 		   u32 dp_module,
6014b24e2bSVaishali Kulkarni 		   u8 dp_level,
6114b24e2bSVaishali Kulkarni 		   void *dp_ctx);
6214b24e2bSVaishali Kulkarni 
6314b24e2bSVaishali Kulkarni /**
6414b24e2bSVaishali Kulkarni  * @brief ecore_init_struct - initialize the device structure to
6514b24e2bSVaishali Kulkarni  *        its defaults
6614b24e2bSVaishali Kulkarni  *
6714b24e2bSVaishali Kulkarni  * @param p_dev
6814b24e2bSVaishali Kulkarni  */
6914b24e2bSVaishali Kulkarni void ecore_init_struct(struct ecore_dev *p_dev);
7014b24e2bSVaishali Kulkarni 
7114b24e2bSVaishali Kulkarni /**
7214b24e2bSVaishali Kulkarni  * @brief ecore_resc_free -
7314b24e2bSVaishali Kulkarni  *
7414b24e2bSVaishali Kulkarni  * @param p_dev
7514b24e2bSVaishali Kulkarni  */
7614b24e2bSVaishali Kulkarni void ecore_resc_free(struct ecore_dev *p_dev);
7714b24e2bSVaishali Kulkarni 
7814b24e2bSVaishali Kulkarni /**
7914b24e2bSVaishali Kulkarni  * @brief ecore_resc_alloc -
8014b24e2bSVaishali Kulkarni  *
8114b24e2bSVaishali Kulkarni  * @param p_dev
8214b24e2bSVaishali Kulkarni  *
8314b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t
8414b24e2bSVaishali Kulkarni  */
8514b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_resc_alloc(struct ecore_dev *p_dev);
8614b24e2bSVaishali Kulkarni 
8714b24e2bSVaishali Kulkarni /**
8814b24e2bSVaishali Kulkarni  * @brief ecore_resc_setup -
8914b24e2bSVaishali Kulkarni  *
9014b24e2bSVaishali Kulkarni  * @param p_dev
9114b24e2bSVaishali Kulkarni  */
9214b24e2bSVaishali Kulkarni void ecore_resc_setup(struct ecore_dev *p_dev);
9314b24e2bSVaishali Kulkarni 
9414b24e2bSVaishali Kulkarni enum ecore_override_force_load {
9514b24e2bSVaishali Kulkarni 	ECORE_OVERRIDE_FORCE_LOAD_NONE,
9614b24e2bSVaishali Kulkarni 	ECORE_OVERRIDE_FORCE_LOAD_ALWAYS,
9714b24e2bSVaishali Kulkarni 	ECORE_OVERRIDE_FORCE_LOAD_NEVER,
9814b24e2bSVaishali Kulkarni };
9914b24e2bSVaishali Kulkarni 
10014b24e2bSVaishali Kulkarni struct ecore_drv_load_params {
10114b24e2bSVaishali Kulkarni 	/* Indicates whether the driver is running over a crash kernel.
10214b24e2bSVaishali Kulkarni 	 * As part of the load request, this will be used for providing the
10314b24e2bSVaishali Kulkarni 	 * driver role to the MFW.
10414b24e2bSVaishali Kulkarni 	 * In case of a crash kernel over PDA - this should be set to false.
10514b24e2bSVaishali Kulkarni 	 */
10614b24e2bSVaishali Kulkarni 	bool is_crash_kernel;
10714b24e2bSVaishali Kulkarni 
10814b24e2bSVaishali Kulkarni 	/* The timeout value that the MFW should use when locking the engine for
10914b24e2bSVaishali Kulkarni 	 * the driver load process.
11014b24e2bSVaishali Kulkarni 	 * A value of '0' means the default value, and '255' means no timeout.
11114b24e2bSVaishali Kulkarni 	 */
11214b24e2bSVaishali Kulkarni 	u8 mfw_timeout_val;
11314b24e2bSVaishali Kulkarni #define ECORE_LOAD_REQ_LOCK_TO_DEFAULT	0
11414b24e2bSVaishali Kulkarni #define ECORE_LOAD_REQ_LOCK_TO_NONE	255
11514b24e2bSVaishali Kulkarni 
11614b24e2bSVaishali Kulkarni 	/* Avoid engine reset when first PF loads on it */
11714b24e2bSVaishali Kulkarni 	bool avoid_eng_reset;
11814b24e2bSVaishali Kulkarni 
11914b24e2bSVaishali Kulkarni 	/* Allow overriding the default force load behavior */
12014b24e2bSVaishali Kulkarni 	enum ecore_override_force_load override_force_load;
12114b24e2bSVaishali Kulkarni };
12214b24e2bSVaishali Kulkarni 
12314b24e2bSVaishali Kulkarni struct ecore_hw_init_params {
12414b24e2bSVaishali Kulkarni 	/* Tunneling parameters */
12514b24e2bSVaishali Kulkarni 	struct ecore_tunnel_info *p_tunn;
12614b24e2bSVaishali Kulkarni 
12714b24e2bSVaishali Kulkarni 	bool b_hw_start;
12814b24e2bSVaishali Kulkarni 
12914b24e2bSVaishali Kulkarni 	/* Interrupt mode [msix, inta, etc.] to use */
13014b24e2bSVaishali Kulkarni 	enum ecore_int_mode int_mode;
13114b24e2bSVaishali Kulkarni 
13214b24e2bSVaishali Kulkarni 	/* NPAR tx switching to be used for vports configured for tx-switching */
13314b24e2bSVaishali Kulkarni 	bool allow_npar_tx_switch;
13414b24e2bSVaishali Kulkarni 
13514b24e2bSVaishali Kulkarni 	/* Binary fw data pointer in binary fw file */
13614b24e2bSVaishali Kulkarni 	const u8 *bin_fw_data;
13714b24e2bSVaishali Kulkarni 
13814b24e2bSVaishali Kulkarni 	/* Driver load parameters */
13914b24e2bSVaishali Kulkarni 	struct ecore_drv_load_params *p_drv_load_params;
14014b24e2bSVaishali Kulkarni };
14114b24e2bSVaishali Kulkarni 
14214b24e2bSVaishali Kulkarni /**
14314b24e2bSVaishali Kulkarni  * @brief ecore_hw_init -
14414b24e2bSVaishali Kulkarni  *
14514b24e2bSVaishali Kulkarni  * @param p_dev
14614b24e2bSVaishali Kulkarni  * @param p_params
14714b24e2bSVaishali Kulkarni  *
14814b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t
14914b24e2bSVaishali Kulkarni  */
15014b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_hw_init(struct ecore_dev *p_dev,
15114b24e2bSVaishali Kulkarni 				   struct ecore_hw_init_params *p_params);
15214b24e2bSVaishali Kulkarni 
15314b24e2bSVaishali Kulkarni /**
15414b24e2bSVaishali Kulkarni  * @brief ecore_hw_timers_stop_all -
15514b24e2bSVaishali Kulkarni  *
15614b24e2bSVaishali Kulkarni  * @param p_dev
15714b24e2bSVaishali Kulkarni  *
15814b24e2bSVaishali Kulkarni  * @return void
15914b24e2bSVaishali Kulkarni  */
16014b24e2bSVaishali Kulkarni void ecore_hw_timers_stop_all(struct ecore_dev *p_dev);
16114b24e2bSVaishali Kulkarni 
16214b24e2bSVaishali Kulkarni /**
16314b24e2bSVaishali Kulkarni  * @brief ecore_hw_stop -
16414b24e2bSVaishali Kulkarni  *
16514b24e2bSVaishali Kulkarni  * @param p_dev
16614b24e2bSVaishali Kulkarni  *
16714b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t
16814b24e2bSVaishali Kulkarni  */
16914b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_hw_stop(struct ecore_dev *p_dev);
17014b24e2bSVaishali Kulkarni 
17114b24e2bSVaishali Kulkarni /**
17214b24e2bSVaishali Kulkarni  * @brief ecore_hw_stop_fastpath -should be called incase
17314b24e2bSVaishali Kulkarni  *        slowpath is still required for the device,
17414b24e2bSVaishali Kulkarni  *        but fastpath is not.
17514b24e2bSVaishali Kulkarni  *
17614b24e2bSVaishali Kulkarni  * @param p_dev
17714b24e2bSVaishali Kulkarni  *
17814b24e2bSVaishali Kulkarni  */
17914b24e2bSVaishali Kulkarni void ecore_hw_stop_fastpath(struct ecore_dev *p_dev);
18014b24e2bSVaishali Kulkarni 
18114b24e2bSVaishali Kulkarni #ifndef LINUX_REMOVE
18214b24e2bSVaishali Kulkarni /**
18314b24e2bSVaishali Kulkarni  * @brief ecore_hw_hibernate_prepare -should be called when
18414b24e2bSVaishali Kulkarni  *        the system is going into the hibernate state
18514b24e2bSVaishali Kulkarni  *
18614b24e2bSVaishali Kulkarni  * @param p_dev
18714b24e2bSVaishali Kulkarni  *
18814b24e2bSVaishali Kulkarni  */
18914b24e2bSVaishali Kulkarni void ecore_hw_hibernate_prepare(struct ecore_dev *p_dev);
19014b24e2bSVaishali Kulkarni 
19114b24e2bSVaishali Kulkarni /**
19214b24e2bSVaishali Kulkarni  * @brief ecore_hw_hibernate_resume -should be called when the system is
19314b24e2bSVaishali Kulkarni 	  resuming from D3 power state and before calling ecore_hw_init.
19414b24e2bSVaishali Kulkarni  *
19514b24e2bSVaishali Kulkarni  * @param p_hwfn
19614b24e2bSVaishali Kulkarni  *
19714b24e2bSVaishali Kulkarni  */
19814b24e2bSVaishali Kulkarni void ecore_hw_hibernate_resume(struct ecore_dev *p_dev);
19914b24e2bSVaishali Kulkarni 
20014b24e2bSVaishali Kulkarni #endif
20114b24e2bSVaishali Kulkarni 
20214b24e2bSVaishali Kulkarni /**
20314b24e2bSVaishali Kulkarni  * @brief ecore_hw_start_fastpath -restart fastpath traffic,
20414b24e2bSVaishali Kulkarni  *        only if hw_stop_fastpath was called
20514b24e2bSVaishali Kulkarni 
20614b24e2bSVaishali Kulkarni  * @param p_dev
20714b24e2bSVaishali Kulkarni  *
20814b24e2bSVaishali Kulkarni  */
20914b24e2bSVaishali Kulkarni void ecore_hw_start_fastpath(struct ecore_hwfn *p_hwfn);
21014b24e2bSVaishali Kulkarni 
21114b24e2bSVaishali Kulkarni enum ecore_hw_prepare_result {
21214b24e2bSVaishali Kulkarni 	ECORE_HW_PREPARE_SUCCESS,
21314b24e2bSVaishali Kulkarni 
21414b24e2bSVaishali Kulkarni 	/* FAILED results indicate probe has failed & cleaned up */
21514b24e2bSVaishali Kulkarni 	ECORE_HW_PREPARE_FAILED_ENG2,
21614b24e2bSVaishali Kulkarni 	ECORE_HW_PREPARE_FAILED_ME,
21714b24e2bSVaishali Kulkarni 	ECORE_HW_PREPARE_FAILED_MEM,
21814b24e2bSVaishali Kulkarni 	ECORE_HW_PREPARE_FAILED_DEV,
21914b24e2bSVaishali Kulkarni 	ECORE_HW_PREPARE_FAILED_NVM,
22014b24e2bSVaishali Kulkarni 
22114b24e2bSVaishali Kulkarni 	/* BAD results indicate probe is passed even though some wrongness
22214b24e2bSVaishali Kulkarni 	 * has occurred; Trying to actually use [I.e., hw_init()] might have
22314b24e2bSVaishali Kulkarni 	 * dire reprecautions.
22414b24e2bSVaishali Kulkarni 	 */
22514b24e2bSVaishali Kulkarni 	ECORE_HW_PREPARE_BAD_IOV,
22614b24e2bSVaishali Kulkarni 	ECORE_HW_PREPARE_BAD_MCP,
22714b24e2bSVaishali Kulkarni 	ECORE_HW_PREPARE_BAD_IGU,
22814b24e2bSVaishali Kulkarni };
22914b24e2bSVaishali Kulkarni 
23014b24e2bSVaishali Kulkarni struct ecore_hw_prepare_params {
23114b24e2bSVaishali Kulkarni 	/* Personality to initialize */
23214b24e2bSVaishali Kulkarni 	int personality;
23314b24e2bSVaishali Kulkarni 
23414b24e2bSVaishali Kulkarni 	/* Force the driver's default resource allocation */
23514b24e2bSVaishali Kulkarni 	bool drv_resc_alloc;
23614b24e2bSVaishali Kulkarni 
23714b24e2bSVaishali Kulkarni 	/* Check the reg_fifo after any register access */
23814b24e2bSVaishali Kulkarni 	bool chk_reg_fifo;
23914b24e2bSVaishali Kulkarni 
24014b24e2bSVaishali Kulkarni 	/* Request the MFW to initiate PF FLR */
24114b24e2bSVaishali Kulkarni 	bool initiate_pf_flr;
24214b24e2bSVaishali Kulkarni 
24314b24e2bSVaishali Kulkarni 	/* The OS Epoch time in seconds */
24414b24e2bSVaishali Kulkarni 	u32 epoch;
24514b24e2bSVaishali Kulkarni 
24614b24e2bSVaishali Kulkarni 	/* Allow the MFW to collect a crash dump */
24714b24e2bSVaishali Kulkarni 	bool allow_mdump;
24814b24e2bSVaishali Kulkarni 
24914b24e2bSVaishali Kulkarni 	/* Allow prepare to pass even if some initializations are failing.
25014b24e2bSVaishali Kulkarni 	 * If set, the `p_prepare_res' field would be set with the return,
25114b24e2bSVaishali Kulkarni 	 * and might allow probe to pass even if there are certain issues.
25214b24e2bSVaishali Kulkarni 	 */
25314b24e2bSVaishali Kulkarni 	bool b_relaxed_probe;
25414b24e2bSVaishali Kulkarni 	enum ecore_hw_prepare_result p_relaxed_res;
25514b24e2bSVaishali Kulkarni };
25614b24e2bSVaishali Kulkarni 
25714b24e2bSVaishali Kulkarni /**
25814b24e2bSVaishali Kulkarni  * @brief ecore_hw_prepare -
25914b24e2bSVaishali Kulkarni  *
26014b24e2bSVaishali Kulkarni  * @param p_dev
26114b24e2bSVaishali Kulkarni  * @param p_params
26214b24e2bSVaishali Kulkarni  *
26314b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t
26414b24e2bSVaishali Kulkarni  */
26514b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_hw_prepare(struct ecore_dev *p_dev,
26614b24e2bSVaishali Kulkarni 				      struct ecore_hw_prepare_params *p_params);
26714b24e2bSVaishali Kulkarni 
26814b24e2bSVaishali Kulkarni /**
26914b24e2bSVaishali Kulkarni  * @brief ecore_hw_remove -
27014b24e2bSVaishali Kulkarni  *
27114b24e2bSVaishali Kulkarni  * @param p_dev
27214b24e2bSVaishali Kulkarni  */
27314b24e2bSVaishali Kulkarni void ecore_hw_remove(struct ecore_dev *p_dev);
27414b24e2bSVaishali Kulkarni 
27514b24e2bSVaishali Kulkarni /**
27614b24e2bSVaishali Kulkarni * @brief ecore_set_nwuf_reg -
27714b24e2bSVaishali Kulkarni *
27814b24e2bSVaishali Kulkarni * @param p_dev
27914b24e2bSVaishali Kulkarni * @param wol_flag - wol_capability
28014b24e2bSVaishali Kulkarni * @param reg_idx - Index of the pattern register
28114b24e2bSVaishali Kulkarni * @param pattern_size - size of pattern
28214b24e2bSVaishali Kulkarni * @param crc - CRC value of patter & mask
28314b24e2bSVaishali Kulkarni *
28414b24e2bSVaishali Kulkarni * @return enum _ecore_status_t
28514b24e2bSVaishali Kulkarni */
28614b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_set_nwuf_reg(struct ecore_dev *p_dev,
28714b24e2bSVaishali Kulkarni 	const bool b_enable,
28814b24e2bSVaishali Kulkarni 	u32 reg_idx,
28914b24e2bSVaishali Kulkarni 	u32 pattern_size,
29014b24e2bSVaishali Kulkarni 	u32 crc);
29114b24e2bSVaishali Kulkarni 
29214b24e2bSVaishali Kulkarni /**
29314b24e2bSVaishali Kulkarni * @brief ecore_get_wake_info - get magic packet buffer
29414b24e2bSVaishali Kulkarni *
29514b24e2bSVaishali Kulkarni * @param p_dev
29614b24e2bSVaishali Kulkarni * @param wake_info - pointer to ecore_wake_info buffer
29714b24e2bSVaishali Kulkarni *
29814b24e2bSVaishali Kulkarni * @return enum _ecore_status_t
29914b24e2bSVaishali Kulkarni */
30014b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_get_wake_info(struct ecore_dev *p_dev,
30114b24e2bSVaishali Kulkarni 	struct ecore_wake_info *wake_info);
30214b24e2bSVaishali Kulkarni 
30314b24e2bSVaishali Kulkarni /**
30414b24e2bSVaishali Kulkarni * @brief ecore_wol_buffer_clear - Clear magic package buffer
30514b24e2bSVaishali Kulkarni *
30614b24e2bSVaishali Kulkarni * @param p_dev
30714b24e2bSVaishali Kulkarni *
30814b24e2bSVaishali Kulkarni * @return void
30914b24e2bSVaishali Kulkarni */
31014b24e2bSVaishali Kulkarni void ecore_wol_buffer_clear(struct ecore_dev *p_dev);
31114b24e2bSVaishali Kulkarni 
31214b24e2bSVaishali Kulkarni /**
31314b24e2bSVaishali Kulkarni  * @brief ecore_ptt_acquire - Allocate a PTT window
31414b24e2bSVaishali Kulkarni  *
31514b24e2bSVaishali Kulkarni  * Should be called at the entry point to the driver (at the beginning of an
31614b24e2bSVaishali Kulkarni  * exported function)
31714b24e2bSVaishali Kulkarni  *
31814b24e2bSVaishali Kulkarni  * @param p_hwfn
31914b24e2bSVaishali Kulkarni  *
32014b24e2bSVaishali Kulkarni  * @return struct ecore_ptt
32114b24e2bSVaishali Kulkarni  */
32214b24e2bSVaishali Kulkarni struct ecore_ptt *ecore_ptt_acquire(struct ecore_hwfn *p_hwfn);
32314b24e2bSVaishali Kulkarni 
32414b24e2bSVaishali Kulkarni /**
32514b24e2bSVaishali Kulkarni  * @brief ecore_ptt_release - Release PTT Window
32614b24e2bSVaishali Kulkarni  *
32714b24e2bSVaishali Kulkarni  * Should be called at the end of a flow - at the end of the function that
32814b24e2bSVaishali Kulkarni  * acquired the PTT.
32914b24e2bSVaishali Kulkarni  *
33014b24e2bSVaishali Kulkarni  *
33114b24e2bSVaishali Kulkarni  * @param p_hwfn
33214b24e2bSVaishali Kulkarni  * @param p_ptt
33314b24e2bSVaishali Kulkarni  */
33414b24e2bSVaishali Kulkarni void ecore_ptt_release(struct ecore_hwfn *p_hwfn,
33514b24e2bSVaishali Kulkarni 		       struct ecore_ptt *p_ptt);
33614b24e2bSVaishali Kulkarni 
33714b24e2bSVaishali Kulkarni #ifndef __EXTRACT__LINUX__
33814b24e2bSVaishali Kulkarni struct ecore_eth_stats_common {
33914b24e2bSVaishali Kulkarni 	u64 no_buff_discards;
34014b24e2bSVaishali Kulkarni 	u64 packet_too_big_discard;
34114b24e2bSVaishali Kulkarni 	u64 ttl0_discard;
34214b24e2bSVaishali Kulkarni 	u64 rx_ucast_bytes;
34314b24e2bSVaishali Kulkarni 	u64 rx_mcast_bytes;
34414b24e2bSVaishali Kulkarni 	u64 rx_bcast_bytes;
34514b24e2bSVaishali Kulkarni 	u64 rx_ucast_pkts;
34614b24e2bSVaishali Kulkarni 	u64 rx_mcast_pkts;
34714b24e2bSVaishali Kulkarni 	u64 rx_bcast_pkts;
34814b24e2bSVaishali Kulkarni 	u64 mftag_filter_discards;
34914b24e2bSVaishali Kulkarni 	u64 mac_filter_discards;
35014b24e2bSVaishali Kulkarni 	u64 tx_ucast_bytes;
35114b24e2bSVaishali Kulkarni 	u64 tx_mcast_bytes;
35214b24e2bSVaishali Kulkarni 	u64 tx_bcast_bytes;
35314b24e2bSVaishali Kulkarni 	u64 tx_ucast_pkts;
35414b24e2bSVaishali Kulkarni 	u64 tx_mcast_pkts;
35514b24e2bSVaishali Kulkarni 	u64 tx_bcast_pkts;
35614b24e2bSVaishali Kulkarni 	u64 tx_err_drop_pkts;
35714b24e2bSVaishali Kulkarni 	u64 tpa_coalesced_pkts;
35814b24e2bSVaishali Kulkarni 	u64 tpa_coalesced_events;
35914b24e2bSVaishali Kulkarni 	u64 tpa_aborts_num;
36014b24e2bSVaishali Kulkarni 	u64 tpa_not_coalesced_pkts;
36114b24e2bSVaishali Kulkarni 	u64 tpa_coalesced_bytes;
36214b24e2bSVaishali Kulkarni 
36314b24e2bSVaishali Kulkarni 	/* port */
36414b24e2bSVaishali Kulkarni 	u64 rx_64_byte_packets;
36514b24e2bSVaishali Kulkarni 	u64 rx_65_to_127_byte_packets;
36614b24e2bSVaishali Kulkarni 	u64 rx_128_to_255_byte_packets;
36714b24e2bSVaishali Kulkarni 	u64 rx_256_to_511_byte_packets;
36814b24e2bSVaishali Kulkarni 	u64 rx_512_to_1023_byte_packets;
36914b24e2bSVaishali Kulkarni 	u64 rx_1024_to_1518_byte_packets;
37014b24e2bSVaishali Kulkarni 	u64 rx_crc_errors;
37114b24e2bSVaishali Kulkarni 	u64 rx_mac_crtl_frames;
37214b24e2bSVaishali Kulkarni 	u64 rx_pause_frames;
37314b24e2bSVaishali Kulkarni 	u64 rx_pfc_frames;
37414b24e2bSVaishali Kulkarni 	u64 rx_align_errors;
37514b24e2bSVaishali Kulkarni 	u64 rx_carrier_errors;
37614b24e2bSVaishali Kulkarni 	u64 rx_oversize_packets;
37714b24e2bSVaishali Kulkarni 	u64 rx_jabbers;
37814b24e2bSVaishali Kulkarni 	u64 rx_undersize_packets;
37914b24e2bSVaishali Kulkarni 	u64 rx_fragments;
38014b24e2bSVaishali Kulkarni 	u64 tx_64_byte_packets;
38114b24e2bSVaishali Kulkarni 	u64 tx_65_to_127_byte_packets;
38214b24e2bSVaishali Kulkarni 	u64 tx_128_to_255_byte_packets;
38314b24e2bSVaishali Kulkarni 	u64 tx_256_to_511_byte_packets;
38414b24e2bSVaishali Kulkarni 	u64 tx_512_to_1023_byte_packets;
38514b24e2bSVaishali Kulkarni 	u64 tx_1024_to_1518_byte_packets;
38614b24e2bSVaishali Kulkarni 	u64 tx_pause_frames;
38714b24e2bSVaishali Kulkarni 	u64 tx_pfc_frames;
38814b24e2bSVaishali Kulkarni 	u64 brb_truncates;
38914b24e2bSVaishali Kulkarni 	u64 brb_discards;
39014b24e2bSVaishali Kulkarni 	u64 rx_mac_bytes;
39114b24e2bSVaishali Kulkarni 	u64 rx_mac_uc_packets;
39214b24e2bSVaishali Kulkarni 	u64 rx_mac_mc_packets;
39314b24e2bSVaishali Kulkarni 	u64 rx_mac_bc_packets;
39414b24e2bSVaishali Kulkarni 	u64 rx_mac_frames_ok;
39514b24e2bSVaishali Kulkarni 	u64 tx_mac_bytes;
39614b24e2bSVaishali Kulkarni 	u64 tx_mac_uc_packets;
39714b24e2bSVaishali Kulkarni 	u64 tx_mac_mc_packets;
39814b24e2bSVaishali Kulkarni 	u64 tx_mac_bc_packets;
39914b24e2bSVaishali Kulkarni 	u64 tx_mac_ctrl_frames;
40014b24e2bSVaishali Kulkarni };
40114b24e2bSVaishali Kulkarni 
40214b24e2bSVaishali Kulkarni struct ecore_eth_stats_bb {
40314b24e2bSVaishali Kulkarni 	u64 rx_1519_to_1522_byte_packets;
40414b24e2bSVaishali Kulkarni 	u64 rx_1519_to_2047_byte_packets;
40514b24e2bSVaishali Kulkarni 	u64 rx_2048_to_4095_byte_packets;
40614b24e2bSVaishali Kulkarni 	u64 rx_4096_to_9216_byte_packets;
40714b24e2bSVaishali Kulkarni 	u64 rx_9217_to_16383_byte_packets;
40814b24e2bSVaishali Kulkarni 	u64 tx_1519_to_2047_byte_packets;
40914b24e2bSVaishali Kulkarni 	u64 tx_2048_to_4095_byte_packets;
41014b24e2bSVaishali Kulkarni 	u64 tx_4096_to_9216_byte_packets;
41114b24e2bSVaishali Kulkarni 	u64 tx_9217_to_16383_byte_packets;
41214b24e2bSVaishali Kulkarni 	u64 tx_lpi_entry_count;
41314b24e2bSVaishali Kulkarni 	u64 tx_total_collisions;
41414b24e2bSVaishali Kulkarni };
41514b24e2bSVaishali Kulkarni 
41614b24e2bSVaishali Kulkarni struct ecore_eth_stats_ah {
41714b24e2bSVaishali Kulkarni 	u64 rx_1519_to_max_byte_packets;
41814b24e2bSVaishali Kulkarni 	u64 tx_1519_to_max_byte_packets;
41914b24e2bSVaishali Kulkarni };
42014b24e2bSVaishali Kulkarni 
42114b24e2bSVaishali Kulkarni struct ecore_eth_stats {
42214b24e2bSVaishali Kulkarni 	struct ecore_eth_stats_common common;
42314b24e2bSVaishali Kulkarni 	union {
42414b24e2bSVaishali Kulkarni 		struct ecore_eth_stats_bb bb;
42514b24e2bSVaishali Kulkarni 		struct ecore_eth_stats_ah ah;
42614b24e2bSVaishali Kulkarni 	};
42714b24e2bSVaishali Kulkarni };
42814b24e2bSVaishali Kulkarni #endif
42914b24e2bSVaishali Kulkarni 
43014b24e2bSVaishali Kulkarni enum ecore_dmae_address_type_t {
43114b24e2bSVaishali Kulkarni 	ECORE_DMAE_ADDRESS_HOST_VIRT,
43214b24e2bSVaishali Kulkarni 	ECORE_DMAE_ADDRESS_HOST_PHYS,
43314b24e2bSVaishali Kulkarni 	ECORE_DMAE_ADDRESS_GRC
43414b24e2bSVaishali Kulkarni };
43514b24e2bSVaishali Kulkarni 
43614b24e2bSVaishali Kulkarni /* value of flags If ECORE_DMAE_FLAG_RW_REPL_SRC flag is set and the
43714b24e2bSVaishali Kulkarni  * source is a block of length DMAE_MAX_RW_SIZE and the
43814b24e2bSVaishali Kulkarni  * destination is larger, the source block will be duplicated as
43914b24e2bSVaishali Kulkarni  * many times as required to fill the destination block. This is
44014b24e2bSVaishali Kulkarni  * used mostly to write a zeroed buffer to destination address
44114b24e2bSVaishali Kulkarni  * using DMA
44214b24e2bSVaishali Kulkarni  */
44314b24e2bSVaishali Kulkarni #define ECORE_DMAE_FLAG_RW_REPL_SRC	0x00000001
44414b24e2bSVaishali Kulkarni #define ECORE_DMAE_FLAG_VF_SRC		0x00000002
44514b24e2bSVaishali Kulkarni #define ECORE_DMAE_FLAG_VF_DST		0x00000004
44614b24e2bSVaishali Kulkarni #define ECORE_DMAE_FLAG_COMPLETION_DST	0x00000008
44714b24e2bSVaishali Kulkarni 
44814b24e2bSVaishali Kulkarni struct ecore_dmae_params {
44914b24e2bSVaishali Kulkarni 	u32 flags; /* consists of ECORE_DMAE_FLAG_* values */
45014b24e2bSVaishali Kulkarni 	u8 src_vfid;
45114b24e2bSVaishali Kulkarni 	u8 dst_vfid;
45214b24e2bSVaishali Kulkarni };
45314b24e2bSVaishali Kulkarni 
45414b24e2bSVaishali Kulkarni /**
45514b24e2bSVaishali Kulkarni  * @brief ecore_dmae_host2grc - copy data from source addr to
45614b24e2bSVaishali Kulkarni  * dmae registers using the given ptt
45714b24e2bSVaishali Kulkarni  *
45814b24e2bSVaishali Kulkarni  * @param p_hwfn
45914b24e2bSVaishali Kulkarni  * @param p_ptt
46014b24e2bSVaishali Kulkarni  * @param source_addr
46114b24e2bSVaishali Kulkarni  * @param grc_addr (dmae_data_offset)
46214b24e2bSVaishali Kulkarni  * @param size_in_dwords
46314b24e2bSVaishali Kulkarni  * @param flags (one of the flags defined above)
46414b24e2bSVaishali Kulkarni  */
46514b24e2bSVaishali Kulkarni enum _ecore_status_t
46614b24e2bSVaishali Kulkarni ecore_dmae_host2grc(struct ecore_hwfn *p_hwfn,
46714b24e2bSVaishali Kulkarni 		    struct ecore_ptt *p_ptt,
46814b24e2bSVaishali Kulkarni 		    u64 source_addr,
46914b24e2bSVaishali Kulkarni 		    u32 grc_addr,
47014b24e2bSVaishali Kulkarni 		    u32 size_in_dwords,
47114b24e2bSVaishali Kulkarni 		    u32 flags);
47214b24e2bSVaishali Kulkarni 
47314b24e2bSVaishali Kulkarni /**
47414b24e2bSVaishali Kulkarni  * @brief ecore_dmae_grc2host - Read data from dmae data offset
47514b24e2bSVaishali Kulkarni  * to source address using the given ptt
47614b24e2bSVaishali Kulkarni  *
47714b24e2bSVaishali Kulkarni  * @param p_ptt
47814b24e2bSVaishali Kulkarni  * @param grc_addr (dmae_data_offset)
47914b24e2bSVaishali Kulkarni  * @param dest_addr
48014b24e2bSVaishali Kulkarni  * @param size_in_dwords
48114b24e2bSVaishali Kulkarni  * @param flags - one of the flags defined above
48214b24e2bSVaishali Kulkarni  */
48314b24e2bSVaishali Kulkarni enum _ecore_status_t
48414b24e2bSVaishali Kulkarni ecore_dmae_grc2host(struct ecore_hwfn *p_hwfn,
48514b24e2bSVaishali Kulkarni 		    struct ecore_ptt *p_ptt,
48614b24e2bSVaishali Kulkarni 		    u32 grc_addr,
48714b24e2bSVaishali Kulkarni 		    dma_addr_t dest_addr,
48814b24e2bSVaishali Kulkarni 		    u32 size_in_dwords,
48914b24e2bSVaishali Kulkarni 		    u32 flags);
49014b24e2bSVaishali Kulkarni 
49114b24e2bSVaishali Kulkarni /**
49214b24e2bSVaishali Kulkarni  * @brief ecore_dmae_host2host - copy data from to source address
49314b24e2bSVaishali Kulkarni  * to a destination adress (for SRIOV) using the given ptt
49414b24e2bSVaishali Kulkarni  *
49514b24e2bSVaishali Kulkarni  * @param p_hwfn
49614b24e2bSVaishali Kulkarni  * @param p_ptt
49714b24e2bSVaishali Kulkarni  * @param source_addr
49814b24e2bSVaishali Kulkarni  * @param dest_addr
49914b24e2bSVaishali Kulkarni  * @param size_in_dwords
50014b24e2bSVaishali Kulkarni  * @param params
50114b24e2bSVaishali Kulkarni  */
50214b24e2bSVaishali Kulkarni enum _ecore_status_t
50314b24e2bSVaishali Kulkarni ecore_dmae_host2host(struct ecore_hwfn *p_hwfn,
50414b24e2bSVaishali Kulkarni 		     struct ecore_ptt *p_ptt,
50514b24e2bSVaishali Kulkarni 		     dma_addr_t source_addr,
50614b24e2bSVaishali Kulkarni 		     dma_addr_t dest_addr,
50714b24e2bSVaishali Kulkarni 		     u32 size_in_dwords,
50814b24e2bSVaishali Kulkarni 		     struct ecore_dmae_params *p_params);
50914b24e2bSVaishali Kulkarni 
51014b24e2bSVaishali Kulkarni /**
51114b24e2bSVaishali Kulkarni  * @brief ecore_chain_alloc - Allocate and initialize a chain
51214b24e2bSVaishali Kulkarni  *
51314b24e2bSVaishali Kulkarni  * @param p_hwfn
51414b24e2bSVaishali Kulkarni  * @param intended_use
51514b24e2bSVaishali Kulkarni  * @param mode
51614b24e2bSVaishali Kulkarni  * @param num_elems
51714b24e2bSVaishali Kulkarni  * @param elem_size
51814b24e2bSVaishali Kulkarni  * @param p_chain
51914b24e2bSVaishali Kulkarni  *
52014b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t
52114b24e2bSVaishali Kulkarni  */
52214b24e2bSVaishali Kulkarni enum _ecore_status_t
52314b24e2bSVaishali Kulkarni ecore_chain_alloc(struct ecore_dev *p_dev,
52414b24e2bSVaishali Kulkarni 		  enum ecore_chain_use_mode intended_use,
52514b24e2bSVaishali Kulkarni 		  enum ecore_chain_mode mode,
52614b24e2bSVaishali Kulkarni 		  enum ecore_chain_cnt_type cnt_type,
52714b24e2bSVaishali Kulkarni 		  u32 num_elems,
52814b24e2bSVaishali Kulkarni 		  osal_size_t elem_size,
52914b24e2bSVaishali Kulkarni 		  struct ecore_chain *p_chain,
53014b24e2bSVaishali Kulkarni 		  struct ecore_chain_ext_pbl *ext_pbl);
53114b24e2bSVaishali Kulkarni 
53214b24e2bSVaishali Kulkarni /**
53314b24e2bSVaishali Kulkarni  * @brief ecore_chain_free - Free chain DMA memory
53414b24e2bSVaishali Kulkarni  *
53514b24e2bSVaishali Kulkarni  * @param p_hwfn
53614b24e2bSVaishali Kulkarni  * @param p_chain
53714b24e2bSVaishali Kulkarni  */
53814b24e2bSVaishali Kulkarni void ecore_chain_free(struct ecore_dev *p_dev,
53914b24e2bSVaishali Kulkarni 		      struct ecore_chain *p_chain);
54014b24e2bSVaishali Kulkarni 
54114b24e2bSVaishali Kulkarni /**
54214b24e2bSVaishali Kulkarni  * @@brief ecore_fw_l2_queue - Get absolute L2 queue ID
54314b24e2bSVaishali Kulkarni  *
54414b24e2bSVaishali Kulkarni  *  @param p_hwfn
54514b24e2bSVaishali Kulkarni  *  @param src_id - relative to p_hwfn
54614b24e2bSVaishali Kulkarni  *  @param dst_id - absolute per engine
54714b24e2bSVaishali Kulkarni  *
54814b24e2bSVaishali Kulkarni  *  @return enum _ecore_status_t
54914b24e2bSVaishali Kulkarni  */
55014b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_fw_l2_queue(struct ecore_hwfn *p_hwfn,
55114b24e2bSVaishali Kulkarni 				       u16 src_id,
55214b24e2bSVaishali Kulkarni 				       u16 *dst_id);
55314b24e2bSVaishali Kulkarni 
55414b24e2bSVaishali Kulkarni /**
55514b24e2bSVaishali Kulkarni  * @@brief ecore_fw_vport - Get absolute vport ID
55614b24e2bSVaishali Kulkarni  *
55714b24e2bSVaishali Kulkarni  *  @param p_hwfn
55814b24e2bSVaishali Kulkarni  *  @param src_id - relative to p_hwfn
55914b24e2bSVaishali Kulkarni  *  @param dst_id - absolute per engine
56014b24e2bSVaishali Kulkarni  *
56114b24e2bSVaishali Kulkarni  *  @return enum _ecore_status_t
56214b24e2bSVaishali Kulkarni  */
56314b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_fw_vport(struct ecore_hwfn *p_hwfn,
56414b24e2bSVaishali Kulkarni 				    u8 src_id,
56514b24e2bSVaishali Kulkarni 				    u8 *dst_id);
56614b24e2bSVaishali Kulkarni 
56714b24e2bSVaishali Kulkarni /**
56814b24e2bSVaishali Kulkarni  * @@brief ecore_fw_rss_eng - Get absolute RSS engine ID
56914b24e2bSVaishali Kulkarni  *
57014b24e2bSVaishali Kulkarni  *  @param p_hwfn
57114b24e2bSVaishali Kulkarni  *  @param src_id - relative to p_hwfn
57214b24e2bSVaishali Kulkarni  *  @param dst_id - absolute per engine
57314b24e2bSVaishali Kulkarni  *
57414b24e2bSVaishali Kulkarni  *  @return enum _ecore_status_t
57514b24e2bSVaishali Kulkarni  */
57614b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_fw_rss_eng(struct ecore_hwfn *p_hwfn,
57714b24e2bSVaishali Kulkarni 				      u8 src_id,
57814b24e2bSVaishali Kulkarni 				      u8 *dst_id);
57914b24e2bSVaishali Kulkarni 
58014b24e2bSVaishali Kulkarni /**
58114b24e2bSVaishali Kulkarni  * @brief ecore_llh_add_mac_filter - configures a MAC filter in llh
58214b24e2bSVaishali Kulkarni  *
58314b24e2bSVaishali Kulkarni  * @param p_hwfn
58414b24e2bSVaishali Kulkarni  * @param p_ptt
58514b24e2bSVaishali Kulkarni  * @param p_filter - MAC to add
58614b24e2bSVaishali Kulkarni  */
58714b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_llh_add_mac_filter(struct ecore_hwfn *p_hwfn,
58814b24e2bSVaishali Kulkarni 					  struct ecore_ptt *p_ptt,
58914b24e2bSVaishali Kulkarni 					  u8 *p_filter);
59014b24e2bSVaishali Kulkarni 
59114b24e2bSVaishali Kulkarni /**
59214b24e2bSVaishali Kulkarni  * @brief ecore_llh_remove_mac_filter - removes a MAC filtre from llh
59314b24e2bSVaishali Kulkarni  *
59414b24e2bSVaishali Kulkarni  * @param p_hwfn
59514b24e2bSVaishali Kulkarni  * @param p_ptt
59614b24e2bSVaishali Kulkarni  * @param p_filter - MAC to remove
59714b24e2bSVaishali Kulkarni  */
59814b24e2bSVaishali Kulkarni void ecore_llh_remove_mac_filter(struct ecore_hwfn *p_hwfn,
59914b24e2bSVaishali Kulkarni 			     struct ecore_ptt *p_ptt,
60014b24e2bSVaishali Kulkarni 			     u8 *p_filter);
60114b24e2bSVaishali Kulkarni 
60214b24e2bSVaishali Kulkarni enum ecore_llh_port_filter_type_t {
60314b24e2bSVaishali Kulkarni 	ECORE_LLH_FILTER_ETHERTYPE,
60414b24e2bSVaishali Kulkarni 	ECORE_LLH_FILTER_TCP_SRC_PORT,
60514b24e2bSVaishali Kulkarni 	ECORE_LLH_FILTER_TCP_DEST_PORT,
60614b24e2bSVaishali Kulkarni 	ECORE_LLH_FILTER_TCP_SRC_AND_DEST_PORT,
60714b24e2bSVaishali Kulkarni 	ECORE_LLH_FILTER_UDP_SRC_PORT,
60814b24e2bSVaishali Kulkarni 	ECORE_LLH_FILTER_UDP_DEST_PORT,
60914b24e2bSVaishali Kulkarni 	ECORE_LLH_FILTER_UDP_SRC_AND_DEST_PORT
61014b24e2bSVaishali Kulkarni };
61114b24e2bSVaishali Kulkarni 
61214b24e2bSVaishali Kulkarni /**
61314b24e2bSVaishali Kulkarni  * @brief ecore_llh_add_protocol_filter - configures a protocol filter in llh
61414b24e2bSVaishali Kulkarni  *
61514b24e2bSVaishali Kulkarni  * @param p_hwfn
61614b24e2bSVaishali Kulkarni  * @param p_ptt
61714b24e2bSVaishali Kulkarni  * @param source_port_or_eth_type - source port or ethertype to add
61814b24e2bSVaishali Kulkarni  * @param dest_port - destination port to add
61914b24e2bSVaishali Kulkarni  * @param type - type of filters and comparing
62014b24e2bSVaishali Kulkarni  */
62114b24e2bSVaishali Kulkarni enum _ecore_status_t
62214b24e2bSVaishali Kulkarni ecore_llh_add_protocol_filter(struct ecore_hwfn *p_hwfn,
62314b24e2bSVaishali Kulkarni 			      struct ecore_ptt *p_ptt,
62414b24e2bSVaishali Kulkarni 			      u16 source_port_or_eth_type,
62514b24e2bSVaishali Kulkarni 			      u16 dest_port,
62614b24e2bSVaishali Kulkarni 			      enum ecore_llh_port_filter_type_t type);
62714b24e2bSVaishali Kulkarni 
62814b24e2bSVaishali Kulkarni /**
62914b24e2bSVaishali Kulkarni  * @brief ecore_llh_remove_protocol_filter - remove a protocol filter in llh
63014b24e2bSVaishali Kulkarni  *
63114b24e2bSVaishali Kulkarni  * @param p_hwfn
63214b24e2bSVaishali Kulkarni  * @param p_ptt
63314b24e2bSVaishali Kulkarni  * @param source_port_or_eth_type - source port or ethertype to add
63414b24e2bSVaishali Kulkarni  * @param dest_port - destination port to add
63514b24e2bSVaishali Kulkarni  * @param type - type of filters and comparing
63614b24e2bSVaishali Kulkarni  */
63714b24e2bSVaishali Kulkarni void
63814b24e2bSVaishali Kulkarni ecore_llh_remove_protocol_filter(struct ecore_hwfn *p_hwfn,
63914b24e2bSVaishali Kulkarni 				 struct ecore_ptt *p_ptt,
64014b24e2bSVaishali Kulkarni 				 u16 source_port_or_eth_type,
64114b24e2bSVaishali Kulkarni 				 u16 dest_port,
64214b24e2bSVaishali Kulkarni 				 enum ecore_llh_port_filter_type_t type);
64314b24e2bSVaishali Kulkarni 
64414b24e2bSVaishali Kulkarni /**
64514b24e2bSVaishali Kulkarni  * @brief ecore_llh_clear_all_filters - removes all MAC filters from llh
64614b24e2bSVaishali Kulkarni  *
64714b24e2bSVaishali Kulkarni  * @param p_hwfn
64814b24e2bSVaishali Kulkarni  * @param p_ptt
64914b24e2bSVaishali Kulkarni  */
65014b24e2bSVaishali Kulkarni void ecore_llh_clear_all_filters(struct ecore_hwfn *p_hwfn,
65114b24e2bSVaishali Kulkarni 			     struct ecore_ptt *p_ptt);
65214b24e2bSVaishali Kulkarni 
65314b24e2bSVaishali Kulkarni /**
654*9b622488SToomas Soome  * @brief ecore_llh_set_function_as_default - set function as default per port
65514b24e2bSVaishali Kulkarni  *
65614b24e2bSVaishali Kulkarni  * @param p_hwfn
65714b24e2bSVaishali Kulkarni  * @param p_ptt
65814b24e2bSVaishali Kulkarni  */
65914b24e2bSVaishali Kulkarni enum _ecore_status_t
66014b24e2bSVaishali Kulkarni ecore_llh_set_function_as_default(struct ecore_hwfn *p_hwfn,
66114b24e2bSVaishali Kulkarni 				  struct ecore_ptt *p_ptt);
66214b24e2bSVaishali Kulkarni 
66314b24e2bSVaishali Kulkarni /**
66414b24e2bSVaishali Kulkarni  *@brief Cleanup of previous driver remains prior to load
66514b24e2bSVaishali Kulkarni  *
66614b24e2bSVaishali Kulkarni  * @param p_hwfn
66714b24e2bSVaishali Kulkarni  * @param p_ptt
66814b24e2bSVaishali Kulkarni  * @param id - For PF, engine-relative. For VF, PF-relative.
66914b24e2bSVaishali Kulkarni  * @param is_vf - true iff cleanup is made for a VF.
67014b24e2bSVaishali Kulkarni  *
67114b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t
67214b24e2bSVaishali Kulkarni  */
67314b24e2bSVaishali Kulkarni enum _ecore_status_t ecore_final_cleanup(struct ecore_hwfn	*p_hwfn,
67414b24e2bSVaishali Kulkarni 					 struct ecore_ptt	*p_ptt,
67514b24e2bSVaishali Kulkarni 					 u16			id,
67614b24e2bSVaishali Kulkarni 					 bool			is_vf);
67714b24e2bSVaishali Kulkarni /**
67814b24e2bSVaishali Kulkarni  * @brief ecore_set_queue_coalesce - Configure coalesce parameters for Rx and
67914b24e2bSVaishali Kulkarni  *    Tx queue. The fact that we can configure coalescing to up to 511, but on
68014b24e2bSVaishali Kulkarni  *    varying accuracy [the bigger the value the less accurate] up to a mistake
68114b24e2bSVaishali Kulkarni  *    of 3usec for the highest values.
68214b24e2bSVaishali Kulkarni  *    While the API allows setting coalescing per-qid, all queues sharing a SB
68314b24e2bSVaishali Kulkarni  *    should be in same range [i.e., either 0-0x7f, 0x80-0xff or 0x100-0x1ff]
68414b24e2bSVaishali Kulkarni  *    otherwise configuration would break.
68514b24e2bSVaishali Kulkarni  *
68614b24e2bSVaishali Kulkarni  * @param p_hwfn
68714b24e2bSVaishali Kulkarni  * @param rx_coal - Rx Coalesce value in micro seconds.
68814b24e2bSVaishali Kulkarni  * @param tx_coal - TX Coalesce value in micro seconds.
68914b24e2bSVaishali Kulkarni  * @param p_handle
69014b24e2bSVaishali Kulkarni  *
69114b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t
69214b24e2bSVaishali Kulkarni  **/
69314b24e2bSVaishali Kulkarni enum _ecore_status_t
69414b24e2bSVaishali Kulkarni ecore_set_queue_coalesce(struct ecore_hwfn *p_hwfn, u16 rx_coal,
69514b24e2bSVaishali Kulkarni 			 u16 tx_coal, void *p_handle);
69614b24e2bSVaishali Kulkarni 
69714b24e2bSVaishali Kulkarni /**
69814b24e2bSVaishali Kulkarni  * @brief - Recalculate feature distributions based on HW resources and
69914b24e2bSVaishali Kulkarni  * user inputs. Currently this affects RDMA_CNQ, PF_L2_QUE and VF_L2_QUE.
70014b24e2bSVaishali Kulkarni  * As a result, this must not be called while RDMA is active or while VFs
70114b24e2bSVaishali Kulkarni  * are enabled.
70214b24e2bSVaishali Kulkarni  *
70314b24e2bSVaishali Kulkarni  * @param p_hwfn
70414b24e2bSVaishali Kulkarni  */
70514b24e2bSVaishali Kulkarni void ecore_hw_set_feat(struct ecore_hwfn *p_hwfn);
70614b24e2bSVaishali Kulkarni 
70714b24e2bSVaishali Kulkarni /**
70814b24e2bSVaishali Kulkarni  * @brief ecore_change_pci_hwfn - Enable or disable PCI BUS MASTER
70914b24e2bSVaishali Kulkarni  *
71014b24e2bSVaishali Kulkarni  * @param p_hwfn
71114b24e2bSVaishali Kulkarni  * @param p_ptt
71214b24e2bSVaishali Kulkarni  * @param enable - true/false
71314b24e2bSVaishali Kulkarni  *
71414b24e2bSVaishali Kulkarni  * @return enum _ecore_status_t
71514b24e2bSVaishali Kulkarni  */
71614b24e2bSVaishali Kulkarni enum _ecore_status_t
71714b24e2bSVaishali Kulkarni ecore_change_pci_hwfn(struct ecore_hwfn *p_hwfn,
71814b24e2bSVaishali Kulkarni 		      struct ecore_ptt *p_ptt,
71914b24e2bSVaishali Kulkarni 		      u8 enable);
72014b24e2bSVaishali Kulkarni 
72114b24e2bSVaishali Kulkarni #endif
722