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