1316485Sdavidcs/* 2316485Sdavidcs * Copyright (c) 2017-2018 Cavium, Inc. 3316485Sdavidcs * All rights reserved. 4316485Sdavidcs * 5316485Sdavidcs * Redistribution and use in source and binary forms, with or without 6316485Sdavidcs * modification, are permitted provided that the following conditions 7316485Sdavidcs * are met: 8316485Sdavidcs * 9316485Sdavidcs * 1. Redistributions of source code must retain the above copyright 10316485Sdavidcs * notice, this list of conditions and the following disclaimer. 11316485Sdavidcs * 2. Redistributions in binary form must reproduce the above copyright 12316485Sdavidcs * notice, this list of conditions and the following disclaimer in the 13316485Sdavidcs * documentation and/or other materials provided with the distribution. 14316485Sdavidcs * 15316485Sdavidcs * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16316485Sdavidcs * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17316485Sdavidcs * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18316485Sdavidcs * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19316485Sdavidcs * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20316485Sdavidcs * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21316485Sdavidcs * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22316485Sdavidcs * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23316485Sdavidcs * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24316485Sdavidcs * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25316485Sdavidcs * POSSIBILITY OF SUCH DAMAGE. 26316485Sdavidcs * 27316485Sdavidcs * $FreeBSD: stable/11/sys/dev/qlnx/qlnxe/ecore_dev_api.h 337517 2018-08-09 01:17:35Z davidcs $ 28316485Sdavidcs * 29316485Sdavidcs */ 30316485Sdavidcs 31316485Sdavidcs#ifndef __ECORE_DEV_API_H__ 32316485Sdavidcs#define __ECORE_DEV_API_H__ 33316485Sdavidcs 34316485Sdavidcs#include "ecore_status.h" 35316485Sdavidcs#include "ecore_chain.h" 36316485Sdavidcs#include "ecore_int_api.h" 37316485Sdavidcs 38337517Sdavidcs#define ECORE_DEFAULT_ILT_PAGE_SIZE 4 39337517Sdavidcs 40316485Sdavidcsstruct ecore_wake_info { 41316485Sdavidcs u32 wk_info; 42316485Sdavidcs u32 wk_details; 43316485Sdavidcs u32 wk_pkt_len; 44316485Sdavidcs u8 wk_buffer[256]; 45316485Sdavidcs}; 46316485Sdavidcs 47316485Sdavidcs/** 48316485Sdavidcs * @brief ecore_init_dp - initialize the debug level 49316485Sdavidcs * 50316485Sdavidcs * @param p_dev 51316485Sdavidcs * @param dp_module 52316485Sdavidcs * @param dp_level 53316485Sdavidcs * @param dp_ctx 54316485Sdavidcs */ 55316485Sdavidcsvoid ecore_init_dp(struct ecore_dev *p_dev, 56316485Sdavidcs u32 dp_module, 57316485Sdavidcs u8 dp_level, 58316485Sdavidcs void *dp_ctx); 59316485Sdavidcs 60316485Sdavidcs/** 61316485Sdavidcs * @brief ecore_init_struct - initialize the device structure to 62316485Sdavidcs * its defaults 63316485Sdavidcs * 64316485Sdavidcs * @param p_dev 65316485Sdavidcs */ 66337517Sdavidcsenum _ecore_status_t ecore_init_struct(struct ecore_dev *p_dev); 67316485Sdavidcs 68316485Sdavidcs/** 69316485Sdavidcs * @brief ecore_resc_free - 70316485Sdavidcs * 71316485Sdavidcs * @param p_dev 72316485Sdavidcs */ 73316485Sdavidcsvoid ecore_resc_free(struct ecore_dev *p_dev); 74316485Sdavidcs 75316485Sdavidcs/** 76316485Sdavidcs * @brief ecore_resc_alloc - 77316485Sdavidcs * 78316485Sdavidcs * @param p_dev 79316485Sdavidcs * 80316485Sdavidcs * @return enum _ecore_status_t 81316485Sdavidcs */ 82316485Sdavidcsenum _ecore_status_t ecore_resc_alloc(struct ecore_dev *p_dev); 83316485Sdavidcs 84316485Sdavidcs/** 85316485Sdavidcs * @brief ecore_resc_setup - 86316485Sdavidcs * 87316485Sdavidcs * @param p_dev 88316485Sdavidcs */ 89316485Sdavidcsvoid ecore_resc_setup(struct ecore_dev *p_dev); 90316485Sdavidcs 91337517Sdavidcsenum ecore_mfw_timeout_fallback { 92337517Sdavidcs ECORE_TO_FALLBACK_TO_NONE, 93337517Sdavidcs ECORE_TO_FALLBACK_TO_DEFAULT, 94337517Sdavidcs ECORE_TO_FALLBACK_FAIL_LOAD, 95337517Sdavidcs}; 96337517Sdavidcs 97316485Sdavidcsenum ecore_override_force_load { 98316485Sdavidcs ECORE_OVERRIDE_FORCE_LOAD_NONE, 99316485Sdavidcs ECORE_OVERRIDE_FORCE_LOAD_ALWAYS, 100316485Sdavidcs ECORE_OVERRIDE_FORCE_LOAD_NEVER, 101316485Sdavidcs}; 102316485Sdavidcs 103316485Sdavidcsstruct ecore_drv_load_params { 104316485Sdavidcs /* Indicates whether the driver is running over a crash kernel. 105316485Sdavidcs * As part of the load request, this will be used for providing the 106316485Sdavidcs * driver role to the MFW. 107316485Sdavidcs * In case of a crash kernel over PDA - this should be set to false. 108316485Sdavidcs */ 109316485Sdavidcs bool is_crash_kernel; 110316485Sdavidcs 111316485Sdavidcs /* The timeout value that the MFW should use when locking the engine for 112316485Sdavidcs * the driver load process. 113316485Sdavidcs * A value of '0' means the default value, and '255' means no timeout. 114316485Sdavidcs */ 115316485Sdavidcs u8 mfw_timeout_val; 116316485Sdavidcs#define ECORE_LOAD_REQ_LOCK_TO_DEFAULT 0 117316485Sdavidcs#define ECORE_LOAD_REQ_LOCK_TO_NONE 255 118316485Sdavidcs 119337517Sdavidcs /* Action to take in case the MFW doesn't support timeout values other 120337517Sdavidcs * then default and none. 121337517Sdavidcs */ 122337517Sdavidcs enum ecore_mfw_timeout_fallback mfw_timeout_fallback; 123337517Sdavidcs 124316485Sdavidcs /* Avoid engine reset when first PF loads on it */ 125316485Sdavidcs bool avoid_eng_reset; 126316485Sdavidcs 127316485Sdavidcs /* Allow overriding the default force load behavior */ 128316485Sdavidcs enum ecore_override_force_load override_force_load; 129316485Sdavidcs}; 130316485Sdavidcs 131316485Sdavidcsstruct ecore_hw_init_params { 132316485Sdavidcs /* Tunneling parameters */ 133316485Sdavidcs struct ecore_tunnel_info *p_tunn; 134316485Sdavidcs 135316485Sdavidcs bool b_hw_start; 136316485Sdavidcs 137316485Sdavidcs /* Interrupt mode [msix, inta, etc.] to use */ 138316485Sdavidcs enum ecore_int_mode int_mode; 139316485Sdavidcs 140316485Sdavidcs /* NPAR tx switching to be used for vports configured for tx-switching */ 141316485Sdavidcs bool allow_npar_tx_switch; 142316485Sdavidcs 143337517Sdavidcs /* PCI relax ordering to be configured by MFW or ecore client */ 144337517Sdavidcs enum ecore_pci_rlx_odr pci_rlx_odr_mode; 145337517Sdavidcs 146316485Sdavidcs /* Binary fw data pointer in binary fw file */ 147316485Sdavidcs const u8 *bin_fw_data; 148316485Sdavidcs 149316485Sdavidcs /* Driver load parameters */ 150316485Sdavidcs struct ecore_drv_load_params *p_drv_load_params; 151337517Sdavidcs 152337517Sdavidcs /* Avoid engine affinity for RoCE/storage in case of CMT mode */ 153337517Sdavidcs bool avoid_eng_affin; 154316485Sdavidcs}; 155316485Sdavidcs 156316485Sdavidcs/** 157316485Sdavidcs * @brief ecore_hw_init - 158316485Sdavidcs * 159316485Sdavidcs * @param p_dev 160316485Sdavidcs * @param p_params 161316485Sdavidcs * 162316485Sdavidcs * @return enum _ecore_status_t 163316485Sdavidcs */ 164316485Sdavidcsenum _ecore_status_t ecore_hw_init(struct ecore_dev *p_dev, 165316485Sdavidcs struct ecore_hw_init_params *p_params); 166316485Sdavidcs 167316485Sdavidcs/** 168316485Sdavidcs * @brief ecore_hw_timers_stop_all - 169316485Sdavidcs * 170316485Sdavidcs * @param p_dev 171316485Sdavidcs * 172316485Sdavidcs * @return void 173316485Sdavidcs */ 174316485Sdavidcsvoid ecore_hw_timers_stop_all(struct ecore_dev *p_dev); 175316485Sdavidcs 176316485Sdavidcs/** 177316485Sdavidcs * @brief ecore_hw_stop - 178316485Sdavidcs * 179316485Sdavidcs * @param p_dev 180316485Sdavidcs * 181316485Sdavidcs * @return enum _ecore_status_t 182316485Sdavidcs */ 183316485Sdavidcsenum _ecore_status_t ecore_hw_stop(struct ecore_dev *p_dev); 184316485Sdavidcs 185316485Sdavidcs/** 186316485Sdavidcs * @brief ecore_hw_stop_fastpath -should be called incase 187316485Sdavidcs * slowpath is still required for the device, 188316485Sdavidcs * but fastpath is not. 189316485Sdavidcs * 190316485Sdavidcs * @param p_dev 191316485Sdavidcs * 192320164Sdavidcs * @return enum _ecore_status_t 193316485Sdavidcs */ 194320164Sdavidcsenum _ecore_status_t ecore_hw_stop_fastpath(struct ecore_dev *p_dev); 195316485Sdavidcs 196337517Sdavidcs#ifndef LINUX_REMOVE 197316485Sdavidcs/** 198316485Sdavidcs * @brief ecore_hw_hibernate_prepare -should be called when 199316485Sdavidcs * the system is going into the hibernate state 200316485Sdavidcs * 201316485Sdavidcs * @param p_dev 202316485Sdavidcs * 203316485Sdavidcs */ 204316485Sdavidcsvoid ecore_hw_hibernate_prepare(struct ecore_dev *p_dev); 205316485Sdavidcs 206316485Sdavidcs/** 207316485Sdavidcs * @brief ecore_hw_hibernate_resume -should be called when the system is 208316485Sdavidcs resuming from D3 power state and before calling ecore_hw_init. 209316485Sdavidcs * 210316485Sdavidcs * @param p_hwfn 211316485Sdavidcs * 212316485Sdavidcs */ 213316485Sdavidcsvoid ecore_hw_hibernate_resume(struct ecore_dev *p_dev); 214316485Sdavidcs 215337517Sdavidcs#endif 216316485Sdavidcs 217316485Sdavidcs/** 218316485Sdavidcs * @brief ecore_hw_start_fastpath -restart fastpath traffic, 219316485Sdavidcs * only if hw_stop_fastpath was called 220316485Sdavidcs 221320164Sdavidcs * @param p_hwfn 222316485Sdavidcs * 223320164Sdavidcs * @return enum _ecore_status_t 224316485Sdavidcs */ 225320164Sdavidcsenum _ecore_status_t ecore_hw_start_fastpath(struct ecore_hwfn *p_hwfn); 226316485Sdavidcs 227316485Sdavidcsenum ecore_hw_prepare_result { 228316485Sdavidcs ECORE_HW_PREPARE_SUCCESS, 229316485Sdavidcs 230316485Sdavidcs /* FAILED results indicate probe has failed & cleaned up */ 231316485Sdavidcs ECORE_HW_PREPARE_FAILED_ENG2, 232316485Sdavidcs ECORE_HW_PREPARE_FAILED_ME, 233316485Sdavidcs ECORE_HW_PREPARE_FAILED_MEM, 234316485Sdavidcs ECORE_HW_PREPARE_FAILED_DEV, 235316485Sdavidcs ECORE_HW_PREPARE_FAILED_NVM, 236316485Sdavidcs 237316485Sdavidcs /* BAD results indicate probe is passed even though some wrongness 238316485Sdavidcs * has occurred; Trying to actually use [I.e., hw_init()] might have 239316485Sdavidcs * dire reprecautions. 240316485Sdavidcs */ 241316485Sdavidcs ECORE_HW_PREPARE_BAD_IOV, 242316485Sdavidcs ECORE_HW_PREPARE_BAD_MCP, 243316485Sdavidcs ECORE_HW_PREPARE_BAD_IGU, 244316485Sdavidcs}; 245316485Sdavidcs 246316485Sdavidcsstruct ecore_hw_prepare_params { 247316485Sdavidcs /* Personality to initialize */ 248316485Sdavidcs int personality; 249316485Sdavidcs 250316485Sdavidcs /* Force the driver's default resource allocation */ 251316485Sdavidcs bool drv_resc_alloc; 252316485Sdavidcs 253316485Sdavidcs /* Check the reg_fifo after any register access */ 254316485Sdavidcs bool chk_reg_fifo; 255316485Sdavidcs 256316485Sdavidcs /* Request the MFW to initiate PF FLR */ 257316485Sdavidcs bool initiate_pf_flr; 258316485Sdavidcs 259316485Sdavidcs /* The OS Epoch time in seconds */ 260316485Sdavidcs u32 epoch; 261316485Sdavidcs 262316485Sdavidcs /* Allow the MFW to collect a crash dump */ 263316485Sdavidcs bool allow_mdump; 264316485Sdavidcs 265316485Sdavidcs /* Allow prepare to pass even if some initializations are failing. 266316485Sdavidcs * If set, the `p_prepare_res' field would be set with the return, 267316485Sdavidcs * and might allow probe to pass even if there are certain issues. 268316485Sdavidcs */ 269316485Sdavidcs bool b_relaxed_probe; 270316485Sdavidcs enum ecore_hw_prepare_result p_relaxed_res; 271316485Sdavidcs}; 272316485Sdavidcs 273316485Sdavidcs/** 274316485Sdavidcs * @brief ecore_hw_prepare - 275316485Sdavidcs * 276316485Sdavidcs * @param p_dev 277316485Sdavidcs * @param p_params 278316485Sdavidcs * 279316485Sdavidcs * @return enum _ecore_status_t 280316485Sdavidcs */ 281316485Sdavidcsenum _ecore_status_t ecore_hw_prepare(struct ecore_dev *p_dev, 282316485Sdavidcs struct ecore_hw_prepare_params *p_params); 283316485Sdavidcs 284316485Sdavidcs/** 285316485Sdavidcs * @brief ecore_hw_remove - 286316485Sdavidcs * 287316485Sdavidcs * @param p_dev 288316485Sdavidcs */ 289316485Sdavidcsvoid ecore_hw_remove(struct ecore_dev *p_dev); 290316485Sdavidcs 291316485Sdavidcs/** 292316485Sdavidcs* @brief ecore_set_nwuf_reg - 293316485Sdavidcs* 294316485Sdavidcs* @param p_dev 295316485Sdavidcs* @param reg_idx - Index of the pattern register 296316485Sdavidcs* @param pattern_size - size of pattern 297316485Sdavidcs* @param crc - CRC value of patter & mask 298316485Sdavidcs* 299316485Sdavidcs* @return enum _ecore_status_t 300316485Sdavidcs*/ 301316485Sdavidcsenum _ecore_status_t ecore_set_nwuf_reg(struct ecore_dev *p_dev, 302320164Sdavidcs u32 reg_idx, u32 pattern_size, u32 crc); 303316485Sdavidcs 304316485Sdavidcs/** 305316485Sdavidcs* @brief ecore_get_wake_info - get magic packet buffer 306316485Sdavidcs* 307320164Sdavidcs* @param p_hwfn 308320164Sdavidcs* @param p_ppt 309316485Sdavidcs* @param wake_info - pointer to ecore_wake_info buffer 310316485Sdavidcs* 311316485Sdavidcs* @return enum _ecore_status_t 312316485Sdavidcs*/ 313320164Sdavidcsenum _ecore_status_t ecore_get_wake_info(struct ecore_hwfn *p_hwfn, 314320164Sdavidcs struct ecore_ptt *p_ptt, 315320164Sdavidcs struct ecore_wake_info *wake_info); 316316485Sdavidcs 317316485Sdavidcs/** 318316485Sdavidcs* @brief ecore_wol_buffer_clear - Clear magic package buffer 319316485Sdavidcs* 320320164Sdavidcs* @param p_hwfn 321320164Sdavidcs* @param p_ptt 322316485Sdavidcs* 323316485Sdavidcs* @return void 324316485Sdavidcs*/ 325320164Sdavidcsvoid ecore_wol_buffer_clear(struct ecore_hwfn *p_hwfn, 326320164Sdavidcs struct ecore_ptt *p_ptt); 327316485Sdavidcs 328316485Sdavidcs/** 329316485Sdavidcs * @brief ecore_ptt_acquire - Allocate a PTT window 330316485Sdavidcs * 331316485Sdavidcs * Should be called at the entry point to the driver (at the beginning of an 332316485Sdavidcs * exported function) 333316485Sdavidcs * 334316485Sdavidcs * @param p_hwfn 335316485Sdavidcs * 336316485Sdavidcs * @return struct ecore_ptt 337316485Sdavidcs */ 338316485Sdavidcsstruct ecore_ptt *ecore_ptt_acquire(struct ecore_hwfn *p_hwfn); 339316485Sdavidcs 340316485Sdavidcs/** 341316485Sdavidcs * @brief ecore_ptt_release - Release PTT Window 342316485Sdavidcs * 343316485Sdavidcs * Should be called at the end of a flow - at the end of the function that 344316485Sdavidcs * acquired the PTT. 345316485Sdavidcs * 346316485Sdavidcs * 347316485Sdavidcs * @param p_hwfn 348316485Sdavidcs * @param p_ptt 349316485Sdavidcs */ 350316485Sdavidcsvoid ecore_ptt_release(struct ecore_hwfn *p_hwfn, 351316485Sdavidcs struct ecore_ptt *p_ptt); 352316485Sdavidcs 353337517Sdavidcs/** 354337517Sdavidcs * @brief ecore_get_dev_name - get device name, e.g., "BB B0" 355337517Sdavidcs * 356337517Sdavidcs * @param p_hwfn 357337517Sdavidcs * @param name - this is where the name will be written to 358337517Sdavidcs * @param max_chars - maximum chars that can be written to name including '\0' 359337517Sdavidcs */ 360337517Sdavidcsvoid ecore_get_dev_name(struct ecore_dev *p_dev, 361337517Sdavidcs u8 *name, 362337517Sdavidcs u8 max_chars); 363337517Sdavidcs 364337517Sdavidcs#ifndef __EXTRACT__LINUX__IF__ 365316485Sdavidcsstruct ecore_eth_stats_common { 366316485Sdavidcs u64 no_buff_discards; 367316485Sdavidcs u64 packet_too_big_discard; 368316485Sdavidcs u64 ttl0_discard; 369316485Sdavidcs u64 rx_ucast_bytes; 370316485Sdavidcs u64 rx_mcast_bytes; 371316485Sdavidcs u64 rx_bcast_bytes; 372316485Sdavidcs u64 rx_ucast_pkts; 373316485Sdavidcs u64 rx_mcast_pkts; 374316485Sdavidcs u64 rx_bcast_pkts; 375316485Sdavidcs u64 mftag_filter_discards; 376316485Sdavidcs u64 mac_filter_discards; 377316485Sdavidcs u64 tx_ucast_bytes; 378316485Sdavidcs u64 tx_mcast_bytes; 379316485Sdavidcs u64 tx_bcast_bytes; 380316485Sdavidcs u64 tx_ucast_pkts; 381316485Sdavidcs u64 tx_mcast_pkts; 382316485Sdavidcs u64 tx_bcast_pkts; 383316485Sdavidcs u64 tx_err_drop_pkts; 384316485Sdavidcs u64 tpa_coalesced_pkts; 385316485Sdavidcs u64 tpa_coalesced_events; 386316485Sdavidcs u64 tpa_aborts_num; 387316485Sdavidcs u64 tpa_not_coalesced_pkts; 388316485Sdavidcs u64 tpa_coalesced_bytes; 389316485Sdavidcs 390316485Sdavidcs /* port */ 391316485Sdavidcs u64 rx_64_byte_packets; 392316485Sdavidcs u64 rx_65_to_127_byte_packets; 393316485Sdavidcs u64 rx_128_to_255_byte_packets; 394316485Sdavidcs u64 rx_256_to_511_byte_packets; 395316485Sdavidcs u64 rx_512_to_1023_byte_packets; 396316485Sdavidcs u64 rx_1024_to_1518_byte_packets; 397316485Sdavidcs u64 rx_crc_errors; 398316485Sdavidcs u64 rx_mac_crtl_frames; 399316485Sdavidcs u64 rx_pause_frames; 400316485Sdavidcs u64 rx_pfc_frames; 401316485Sdavidcs u64 rx_align_errors; 402316485Sdavidcs u64 rx_carrier_errors; 403316485Sdavidcs u64 rx_oversize_packets; 404316485Sdavidcs u64 rx_jabbers; 405316485Sdavidcs u64 rx_undersize_packets; 406316485Sdavidcs u64 rx_fragments; 407316485Sdavidcs u64 tx_64_byte_packets; 408316485Sdavidcs u64 tx_65_to_127_byte_packets; 409316485Sdavidcs u64 tx_128_to_255_byte_packets; 410316485Sdavidcs u64 tx_256_to_511_byte_packets; 411316485Sdavidcs u64 tx_512_to_1023_byte_packets; 412316485Sdavidcs u64 tx_1024_to_1518_byte_packets; 413316485Sdavidcs u64 tx_pause_frames; 414316485Sdavidcs u64 tx_pfc_frames; 415316485Sdavidcs u64 brb_truncates; 416316485Sdavidcs u64 brb_discards; 417316485Sdavidcs u64 rx_mac_bytes; 418316485Sdavidcs u64 rx_mac_uc_packets; 419316485Sdavidcs u64 rx_mac_mc_packets; 420316485Sdavidcs u64 rx_mac_bc_packets; 421316485Sdavidcs u64 rx_mac_frames_ok; 422316485Sdavidcs u64 tx_mac_bytes; 423316485Sdavidcs u64 tx_mac_uc_packets; 424316485Sdavidcs u64 tx_mac_mc_packets; 425316485Sdavidcs u64 tx_mac_bc_packets; 426316485Sdavidcs u64 tx_mac_ctrl_frames; 427337517Sdavidcs u64 link_change_count; 428316485Sdavidcs}; 429316485Sdavidcs 430316485Sdavidcsstruct ecore_eth_stats_bb { 431316485Sdavidcs u64 rx_1519_to_1522_byte_packets; 432316485Sdavidcs u64 rx_1519_to_2047_byte_packets; 433316485Sdavidcs u64 rx_2048_to_4095_byte_packets; 434316485Sdavidcs u64 rx_4096_to_9216_byte_packets; 435316485Sdavidcs u64 rx_9217_to_16383_byte_packets; 436316485Sdavidcs u64 tx_1519_to_2047_byte_packets; 437316485Sdavidcs u64 tx_2048_to_4095_byte_packets; 438316485Sdavidcs u64 tx_4096_to_9216_byte_packets; 439316485Sdavidcs u64 tx_9217_to_16383_byte_packets; 440316485Sdavidcs u64 tx_lpi_entry_count; 441316485Sdavidcs u64 tx_total_collisions; 442316485Sdavidcs}; 443316485Sdavidcs 444316485Sdavidcsstruct ecore_eth_stats_ah { 445316485Sdavidcs u64 rx_1519_to_max_byte_packets; 446316485Sdavidcs u64 tx_1519_to_max_byte_packets; 447316485Sdavidcs}; 448316485Sdavidcs 449316485Sdavidcsstruct ecore_eth_stats { 450316485Sdavidcs struct ecore_eth_stats_common common; 451316485Sdavidcs union { 452316485Sdavidcs struct ecore_eth_stats_bb bb; 453316485Sdavidcs struct ecore_eth_stats_ah ah; 454316485Sdavidcs }; 455316485Sdavidcs}; 456320164Sdavidcs#endif 457316485Sdavidcs 458316485Sdavidcsenum ecore_dmae_address_type_t { 459316485Sdavidcs ECORE_DMAE_ADDRESS_HOST_VIRT, 460316485Sdavidcs ECORE_DMAE_ADDRESS_HOST_PHYS, 461316485Sdavidcs ECORE_DMAE_ADDRESS_GRC 462316485Sdavidcs}; 463316485Sdavidcs 464316485Sdavidcs/* value of flags If ECORE_DMAE_FLAG_RW_REPL_SRC flag is set and the 465316485Sdavidcs * source is a block of length DMAE_MAX_RW_SIZE and the 466316485Sdavidcs * destination is larger, the source block will be duplicated as 467316485Sdavidcs * many times as required to fill the destination block. This is 468316485Sdavidcs * used mostly to write a zeroed buffer to destination address 469316485Sdavidcs * using DMA 470316485Sdavidcs */ 471316485Sdavidcs#define ECORE_DMAE_FLAG_RW_REPL_SRC 0x00000001 472316485Sdavidcs#define ECORE_DMAE_FLAG_VF_SRC 0x00000002 473316485Sdavidcs#define ECORE_DMAE_FLAG_VF_DST 0x00000004 474316485Sdavidcs#define ECORE_DMAE_FLAG_COMPLETION_DST 0x00000008 475337517Sdavidcs#define ECORE_DMAE_FLAG_PORT 0x00000010 476337517Sdavidcs#define ECORE_DMAE_FLAG_PF_SRC 0x00000020 477337517Sdavidcs#define ECORE_DMAE_FLAG_PF_DST 0x00000040 478316485Sdavidcs 479316485Sdavidcsstruct ecore_dmae_params { 480316485Sdavidcs u32 flags; /* consists of ECORE_DMAE_FLAG_* values */ 481316485Sdavidcs u8 src_vfid; 482316485Sdavidcs u8 dst_vfid; 483337517Sdavidcs u8 port_id; 484337517Sdavidcs u8 src_pfid; 485337517Sdavidcs u8 dst_pfid; 486316485Sdavidcs}; 487316485Sdavidcs 488316485Sdavidcs/** 489316485Sdavidcs * @brief ecore_dmae_host2grc - copy data from source addr to 490316485Sdavidcs * dmae registers using the given ptt 491316485Sdavidcs * 492316485Sdavidcs * @param p_hwfn 493316485Sdavidcs * @param p_ptt 494316485Sdavidcs * @param source_addr 495316485Sdavidcs * @param grc_addr (dmae_data_offset) 496316485Sdavidcs * @param size_in_dwords 497337517Sdavidcs * @param p_params (default parameters will be used in case of OSAL_NULL) 498337517Sdavidcs * 499337517Sdavidcs * @return enum _ecore_status_t 500316485Sdavidcs */ 501316485Sdavidcsenum _ecore_status_t 502316485Sdavidcsecore_dmae_host2grc(struct ecore_hwfn *p_hwfn, 503316485Sdavidcs struct ecore_ptt *p_ptt, 504316485Sdavidcs u64 source_addr, 505316485Sdavidcs u32 grc_addr, 506316485Sdavidcs u32 size_in_dwords, 507337517Sdavidcs struct ecore_dmae_params *p_params); 508316485Sdavidcs 509316485Sdavidcs/** 510316485Sdavidcs * @brief ecore_dmae_grc2host - Read data from dmae data offset 511316485Sdavidcs * to source address using the given ptt 512316485Sdavidcs * 513316485Sdavidcs * @param p_ptt 514316485Sdavidcs * @param grc_addr (dmae_data_offset) 515316485Sdavidcs * @param dest_addr 516316485Sdavidcs * @param size_in_dwords 517337517Sdavidcs * @param p_params (default parameters will be used in case of OSAL_NULL) 518337517Sdavidcs * 519337517Sdavidcs * @return enum _ecore_status_t 520316485Sdavidcs */ 521316485Sdavidcsenum _ecore_status_t 522316485Sdavidcsecore_dmae_grc2host(struct ecore_hwfn *p_hwfn, 523316485Sdavidcs struct ecore_ptt *p_ptt, 524316485Sdavidcs u32 grc_addr, 525316485Sdavidcs dma_addr_t dest_addr, 526316485Sdavidcs u32 size_in_dwords, 527337517Sdavidcs struct ecore_dmae_params *p_params); 528316485Sdavidcs 529316485Sdavidcs/** 530316485Sdavidcs * @brief ecore_dmae_host2host - copy data from to source address 531320164Sdavidcs * to a destination adress (for SRIOV) using the given ptt 532316485Sdavidcs * 533316485Sdavidcs * @param p_hwfn 534316485Sdavidcs * @param p_ptt 535316485Sdavidcs * @param source_addr 536316485Sdavidcs * @param dest_addr 537316485Sdavidcs * @param size_in_dwords 538337517Sdavidcs * @param p_params (default parameters will be used in case of OSAL_NULL) 539337517Sdavidcs * 540337517Sdavidcs * @return enum _ecore_status_t 541316485Sdavidcs */ 542316485Sdavidcsenum _ecore_status_t 543316485Sdavidcsecore_dmae_host2host(struct ecore_hwfn *p_hwfn, 544316485Sdavidcs struct ecore_ptt *p_ptt, 545316485Sdavidcs dma_addr_t source_addr, 546316485Sdavidcs dma_addr_t dest_addr, 547316485Sdavidcs u32 size_in_dwords, 548316485Sdavidcs struct ecore_dmae_params *p_params); 549316485Sdavidcs 550316485Sdavidcs/** 551316485Sdavidcs * @brief ecore_chain_alloc - Allocate and initialize a chain 552316485Sdavidcs * 553316485Sdavidcs * @param p_hwfn 554316485Sdavidcs * @param intended_use 555316485Sdavidcs * @param mode 556316485Sdavidcs * @param num_elems 557316485Sdavidcs * @param elem_size 558316485Sdavidcs * @param p_chain 559316485Sdavidcs * 560316485Sdavidcs * @return enum _ecore_status_t 561316485Sdavidcs */ 562316485Sdavidcsenum _ecore_status_t 563316485Sdavidcsecore_chain_alloc(struct ecore_dev *p_dev, 564316485Sdavidcs enum ecore_chain_use_mode intended_use, 565316485Sdavidcs enum ecore_chain_mode mode, 566316485Sdavidcs enum ecore_chain_cnt_type cnt_type, 567316485Sdavidcs u32 num_elems, 568316485Sdavidcs osal_size_t elem_size, 569316485Sdavidcs struct ecore_chain *p_chain, 570316485Sdavidcs struct ecore_chain_ext_pbl *ext_pbl); 571316485Sdavidcs 572316485Sdavidcs/** 573316485Sdavidcs * @brief ecore_chain_free - Free chain DMA memory 574316485Sdavidcs * 575316485Sdavidcs * @param p_hwfn 576316485Sdavidcs * @param p_chain 577316485Sdavidcs */ 578316485Sdavidcsvoid ecore_chain_free(struct ecore_dev *p_dev, 579316485Sdavidcs struct ecore_chain *p_chain); 580316485Sdavidcs 581316485Sdavidcs/** 582316485Sdavidcs * @@brief ecore_fw_l2_queue - Get absolute L2 queue ID 583316485Sdavidcs * 584316485Sdavidcs * @param p_hwfn 585316485Sdavidcs * @param src_id - relative to p_hwfn 586316485Sdavidcs * @param dst_id - absolute per engine 587316485Sdavidcs * 588316485Sdavidcs * @return enum _ecore_status_t 589316485Sdavidcs */ 590316485Sdavidcsenum _ecore_status_t ecore_fw_l2_queue(struct ecore_hwfn *p_hwfn, 591316485Sdavidcs u16 src_id, 592316485Sdavidcs u16 *dst_id); 593316485Sdavidcs 594316485Sdavidcs/** 595316485Sdavidcs * @@brief ecore_fw_vport - Get absolute vport ID 596316485Sdavidcs * 597316485Sdavidcs * @param p_hwfn 598316485Sdavidcs * @param src_id - relative to p_hwfn 599316485Sdavidcs * @param dst_id - absolute per engine 600316485Sdavidcs * 601316485Sdavidcs * @return enum _ecore_status_t 602316485Sdavidcs */ 603316485Sdavidcsenum _ecore_status_t ecore_fw_vport(struct ecore_hwfn *p_hwfn, 604316485Sdavidcs u8 src_id, 605316485Sdavidcs u8 *dst_id); 606316485Sdavidcs 607316485Sdavidcs/** 608316485Sdavidcs * @@brief ecore_fw_rss_eng - Get absolute RSS engine ID 609316485Sdavidcs * 610316485Sdavidcs * @param p_hwfn 611316485Sdavidcs * @param src_id - relative to p_hwfn 612316485Sdavidcs * @param dst_id - absolute per engine 613316485Sdavidcs * 614316485Sdavidcs * @return enum _ecore_status_t 615316485Sdavidcs */ 616316485Sdavidcsenum _ecore_status_t ecore_fw_rss_eng(struct ecore_hwfn *p_hwfn, 617316485Sdavidcs u8 src_id, 618316485Sdavidcs u8 *dst_id); 619316485Sdavidcs 620316485Sdavidcs/** 621337517Sdavidcs * @brief ecore_llh_get_num_ppfid - Return the allocated number of LLH filter 622337517Sdavidcs * banks that are allocated to the PF. 623316485Sdavidcs * 624337517Sdavidcs * @param p_dev 625337517Sdavidcs * 626337517Sdavidcs * @return u8 - Number of LLH filter banks 627316485Sdavidcs */ 628337517Sdavidcsu8 ecore_llh_get_num_ppfid(struct ecore_dev *p_dev); 629316485Sdavidcs 630337517Sdavidcsenum ecore_eng { 631337517Sdavidcs ECORE_ENG0, 632337517Sdavidcs ECORE_ENG1, 633337517Sdavidcs ECORE_BOTH_ENG, 634337517Sdavidcs}; 635337517Sdavidcs 636316485Sdavidcs/** 637337517Sdavidcs * @brief ecore_llh_get_l2_affinity_hint - Return the hint for the L2 affinity 638316485Sdavidcs * 639337517Sdavidcs * @param p_dev 640337517Sdavidcs * 641337517Sdavidcs * @return enum ecore_eng - L2 affintiy hint 642316485Sdavidcs */ 643337517Sdavidcsenum ecore_eng ecore_llh_get_l2_affinity_hint(struct ecore_dev *p_dev); 644316485Sdavidcs 645337517Sdavidcs/** 646337517Sdavidcs * @brief ecore_llh_set_ppfid_affinity - Set the engine affinity for the given 647337517Sdavidcs * LLH filter bank. 648337517Sdavidcs * 649337517Sdavidcs * @param p_dev 650337517Sdavidcs * @param ppfid - relative within the allocated ppfids ('0' is the default one). 651337517Sdavidcs * @param eng 652337517Sdavidcs * 653337517Sdavidcs * @return enum _ecore_status_t 654337517Sdavidcs */ 655337517Sdavidcsenum _ecore_status_t ecore_llh_set_ppfid_affinity(struct ecore_dev *p_dev, 656337517Sdavidcs u8 ppfid, enum ecore_eng eng); 657337517Sdavidcs 658337517Sdavidcs/** 659337517Sdavidcs * @brief ecore_llh_set_roce_affinity - Set the RoCE engine affinity 660337517Sdavidcs * 661337517Sdavidcs * @param p_dev 662337517Sdavidcs * @param eng 663337517Sdavidcs * 664337517Sdavidcs * @return enum _ecore_status_t 665337517Sdavidcs */ 666337517Sdavidcsenum _ecore_status_t ecore_llh_set_roce_affinity(struct ecore_dev *p_dev, 667337517Sdavidcs enum ecore_eng eng); 668337517Sdavidcs 669337517Sdavidcs/** 670337517Sdavidcs * @brief ecore_llh_add_mac_filter - Add a LLH MAC filter into the given filter 671337517Sdavidcs * bank. 672337517Sdavidcs * 673337517Sdavidcs * @param p_dev 674337517Sdavidcs * @param ppfid - relative within the allocated ppfids ('0' is the default one). 675337517Sdavidcs * @param mac_addr - MAC to add 676337517Sdavidcs * 677337517Sdavidcs * @return enum _ecore_status_t 678337517Sdavidcs */ 679337517Sdavidcsenum _ecore_status_t ecore_llh_add_mac_filter(struct ecore_dev *p_dev, u8 ppfid, 680337517Sdavidcs u8 mac_addr[ETH_ALEN]); 681337517Sdavidcs 682337517Sdavidcs/** 683337517Sdavidcs * @brief ecore_llh_remove_mac_filter - Remove a LLH MAC filter from the given 684337517Sdavidcs * filter bank. 685337517Sdavidcs * 686337517Sdavidcs * @param p_dev 687337517Sdavidcs * @param ppfid - relative within the allocated ppfids ('0' is the default one). 688337517Sdavidcs * @param mac_addr - MAC to remove 689337517Sdavidcs */ 690337517Sdavidcsvoid ecore_llh_remove_mac_filter(struct ecore_dev *p_dev, u8 ppfid, 691337517Sdavidcs u8 mac_addr[ETH_ALEN]); 692337517Sdavidcs 693337517Sdavidcsenum ecore_llh_prot_filter_type_t { 694316485Sdavidcs ECORE_LLH_FILTER_ETHERTYPE, 695316485Sdavidcs ECORE_LLH_FILTER_TCP_SRC_PORT, 696316485Sdavidcs ECORE_LLH_FILTER_TCP_DEST_PORT, 697316485Sdavidcs ECORE_LLH_FILTER_TCP_SRC_AND_DEST_PORT, 698316485Sdavidcs ECORE_LLH_FILTER_UDP_SRC_PORT, 699316485Sdavidcs ECORE_LLH_FILTER_UDP_DEST_PORT, 700316485Sdavidcs ECORE_LLH_FILTER_UDP_SRC_AND_DEST_PORT 701316485Sdavidcs}; 702316485Sdavidcs 703316485Sdavidcs/** 704337517Sdavidcs * @brief ecore_llh_add_protocol_filter - Add a LLH protocol filter into the 705337517Sdavidcs * given filter bank. 706316485Sdavidcs * 707337517Sdavidcs * @param p_dev 708337517Sdavidcs * @param ppfid - relative within the allocated ppfids ('0' is the default one). 709337517Sdavidcs * @param type - type of filters and comparing 710316485Sdavidcs * @param source_port_or_eth_type - source port or ethertype to add 711316485Sdavidcs * @param dest_port - destination port to add 712337517Sdavidcs * 713337517Sdavidcs * @return enum _ecore_status_t 714316485Sdavidcs */ 715316485Sdavidcsenum _ecore_status_t 716337517Sdavidcsecore_llh_add_protocol_filter(struct ecore_dev *p_dev, u8 ppfid, 717337517Sdavidcs enum ecore_llh_prot_filter_type_t type, 718337517Sdavidcs u16 source_port_or_eth_type, u16 dest_port); 719316485Sdavidcs 720316485Sdavidcs/** 721337517Sdavidcs * @brief ecore_llh_remove_protocol_filter - Remove a LLH protocol filter from 722337517Sdavidcs * the given filter bank. 723316485Sdavidcs * 724337517Sdavidcs * @param p_dev 725337517Sdavidcs * @param ppfid - relative within the allocated ppfids ('0' is the default one). 726337517Sdavidcs * @param type - type of filters and comparing 727316485Sdavidcs * @param source_port_or_eth_type - source port or ethertype to add 728316485Sdavidcs * @param dest_port - destination port to add 729316485Sdavidcs */ 730337517Sdavidcsvoid ecore_llh_remove_protocol_filter(struct ecore_dev *p_dev, u8 ppfid, 731337517Sdavidcs enum ecore_llh_prot_filter_type_t type, 732337517Sdavidcs u16 source_port_or_eth_type, 733337517Sdavidcs u16 dest_port); 734316485Sdavidcs 735316485Sdavidcs/** 736337517Sdavidcs * @brief ecore_llh_clear_ppfid_filters - Remove all LLH filters from the given 737337517Sdavidcs * filter bank. 738316485Sdavidcs * 739337517Sdavidcs * @param p_dev 740337517Sdavidcs * @param ppfid - relative within the allocated ppfids ('0' is the default one). 741316485Sdavidcs */ 742337517Sdavidcsvoid ecore_llh_clear_ppfid_filters(struct ecore_dev *p_dev, u8 ppfid); 743316485Sdavidcs 744316485Sdavidcs/** 745337517Sdavidcs * @brief ecore_llh_clear_all_filters - Remove all LLH filters 746337517Sdavidcs * 747337517Sdavidcs * @param p_dev 748337517Sdavidcs */ 749337517Sdavidcsvoid ecore_llh_clear_all_filters(struct ecore_dev *p_dev); 750337517Sdavidcs 751337517Sdavidcs/** 752316485Sdavidcs * @brief ecore_llh_set_function_as_default - set function as defult per port 753316485Sdavidcs * 754316485Sdavidcs * @param p_hwfn 755316485Sdavidcs * @param p_ptt 756316485Sdavidcs */ 757316485Sdavidcsenum _ecore_status_t 758316485Sdavidcsecore_llh_set_function_as_default(struct ecore_hwfn *p_hwfn, 759316485Sdavidcs struct ecore_ptt *p_ptt); 760316485Sdavidcs 761316485Sdavidcs/** 762316485Sdavidcs *@brief Cleanup of previous driver remains prior to load 763316485Sdavidcs * 764316485Sdavidcs * @param p_hwfn 765316485Sdavidcs * @param p_ptt 766316485Sdavidcs * @param id - For PF, engine-relative. For VF, PF-relative. 767316485Sdavidcs * @param is_vf - true iff cleanup is made for a VF. 768316485Sdavidcs * 769316485Sdavidcs * @return enum _ecore_status_t 770316485Sdavidcs */ 771316485Sdavidcsenum _ecore_status_t ecore_final_cleanup(struct ecore_hwfn *p_hwfn, 772316485Sdavidcs struct ecore_ptt *p_ptt, 773316485Sdavidcs u16 id, 774316485Sdavidcs bool is_vf); 775337517Sdavidcs 776316485Sdavidcs/** 777337517Sdavidcs * @brief ecore_get_queue_coalesce - Retrieve coalesce value for a given queue. 778337517Sdavidcs * 779337517Sdavidcs * @param p_hwfn 780337517Sdavidcs * @param p_coal - store coalesce value read from the hardware. 781337517Sdavidcs * @param p_handle 782337517Sdavidcs * 783337517Sdavidcs * @return enum _ecore_status_t 784337517Sdavidcs **/ 785337517Sdavidcsenum _ecore_status_t 786337517Sdavidcsecore_get_queue_coalesce(struct ecore_hwfn *p_hwfn, u16 *coal, 787337517Sdavidcs void *handle); 788337517Sdavidcs 789337517Sdavidcs/** 790316485Sdavidcs * @brief ecore_set_queue_coalesce - Configure coalesce parameters for Rx and 791316485Sdavidcs * Tx queue. The fact that we can configure coalescing to up to 511, but on 792316485Sdavidcs * varying accuracy [the bigger the value the less accurate] up to a mistake 793316485Sdavidcs * of 3usec for the highest values. 794316485Sdavidcs * While the API allows setting coalescing per-qid, all queues sharing a SB 795316485Sdavidcs * should be in same range [i.e., either 0-0x7f, 0x80-0xff or 0x100-0x1ff] 796316485Sdavidcs * otherwise configuration would break. 797316485Sdavidcs * 798316485Sdavidcs * @param p_hwfn 799316485Sdavidcs * @param rx_coal - Rx Coalesce value in micro seconds. 800316485Sdavidcs * @param tx_coal - TX Coalesce value in micro seconds. 801316485Sdavidcs * @param p_handle 802316485Sdavidcs * 803316485Sdavidcs * @return enum _ecore_status_t 804316485Sdavidcs **/ 805316485Sdavidcsenum _ecore_status_t 806316485Sdavidcsecore_set_queue_coalesce(struct ecore_hwfn *p_hwfn, u16 rx_coal, 807316485Sdavidcs u16 tx_coal, void *p_handle); 808316485Sdavidcs 809316485Sdavidcs/** 810316485Sdavidcs * @brief - Recalculate feature distributions based on HW resources and 811316485Sdavidcs * user inputs. Currently this affects RDMA_CNQ, PF_L2_QUE and VF_L2_QUE. 812316485Sdavidcs * As a result, this must not be called while RDMA is active or while VFs 813316485Sdavidcs * are enabled. 814316485Sdavidcs * 815316485Sdavidcs * @param p_hwfn 816316485Sdavidcs */ 817316485Sdavidcsvoid ecore_hw_set_feat(struct ecore_hwfn *p_hwfn); 818316485Sdavidcs 819316485Sdavidcs/** 820337517Sdavidcs * @brief ecore_pglueb_set_pfid_enable - Enable or disable PCI BUS MASTER 821316485Sdavidcs * 822316485Sdavidcs * @param p_hwfn 823316485Sdavidcs * @param p_ptt 824337517Sdavidcs * @param b_enable - true/false 825316485Sdavidcs * 826316485Sdavidcs * @return enum _ecore_status_t 827316485Sdavidcs */ 828337517Sdavidcsenum _ecore_status_t ecore_pglueb_set_pfid_enable(struct ecore_hwfn *p_hwfn, 829337517Sdavidcs struct ecore_ptt *p_ptt, 830337517Sdavidcs bool b_enable); 831316485Sdavidcs 832337517Sdavidcs#ifndef __EXTRACT__LINUX__IF__ 833320164Sdavidcsenum ecore_db_rec_width { 834320164Sdavidcs DB_REC_WIDTH_32B, 835320164Sdavidcs DB_REC_WIDTH_64B, 836320164Sdavidcs}; 837320164Sdavidcs 838320164Sdavidcsenum ecore_db_rec_space { 839320164Sdavidcs DB_REC_KERNEL, 840320164Sdavidcs DB_REC_USER, 841320164Sdavidcs}; 842316485Sdavidcs#endif 843320164Sdavidcs 844320164Sdavidcs/** 845320164Sdavidcs * @brief db_recovery_add - add doorbell information to the doorbell 846320164Sdavidcs * recovery mechanism. 847320164Sdavidcs * 848320164Sdavidcs * @param p_dev 849320164Sdavidcs * @param db_addr - doorbell address 850320164Sdavidcs * @param db_data - address of where db_data is stored 851320164Sdavidcs * @param db_width - doorbell is 32b pr 64b 852320164Sdavidcs * @param db_space - doorbell recovery addresses are user or kernel space 853320164Sdavidcs */ 854320164Sdavidcsenum _ecore_status_t ecore_db_recovery_add(struct ecore_dev *p_dev, 855320164Sdavidcs void OSAL_IOMEM *db_addr, 856320164Sdavidcs void *db_data, 857320164Sdavidcs enum ecore_db_rec_width db_width, 858320164Sdavidcs enum ecore_db_rec_space db_space); 859320164Sdavidcs 860320164Sdavidcs/** 861320164Sdavidcs * @brief db_recovery_del - remove doorbell information from the doorbell 862320164Sdavidcs * recovery mechanism. db_data serves as key (db_addr is not unique). 863320164Sdavidcs * 864320164Sdavidcs * @param cdev 865320164Sdavidcs * @param db_addr - doorbell address 866320164Sdavidcs * @param db_data - address where db_data is stored. Serves as key for the 867320164Sdavidcs * entry to delete. 868320164Sdavidcs */ 869320164Sdavidcsenum _ecore_status_t ecore_db_recovery_del(struct ecore_dev *p_dev, 870320164Sdavidcs void OSAL_IOMEM *db_addr, 871320164Sdavidcs void *db_data); 872337517Sdavidcs 873337517Sdavidcs#ifndef __EXTRACT__LINUX__THROW__ 874337517Sdavidcsstatic OSAL_INLINE bool ecore_is_mf_ufp(struct ecore_hwfn *p_hwfn) 875337517Sdavidcs{ 876337517Sdavidcs return !!OSAL_TEST_BIT(ECORE_MF_UFP_SPECIFIC, &p_hwfn->p_dev->mf_bits); 877337517Sdavidcs} 878320164Sdavidcs#endif 879337517Sdavidcs 880337517Sdavidcs/** 881337517Sdavidcs * @brief ecore_set_dev_access_enable - Enable or disable access to the device 882337517Sdavidcs * 883337517Sdavidcs * @param p_hwfn 884337517Sdavidcs * @param b_enable - true/false 885337517Sdavidcs */ 886337517Sdavidcsvoid ecore_set_dev_access_enable(struct ecore_dev *p_dev, bool b_enable); 887337517Sdavidcs 888337517Sdavidcs/** 889337517Sdavidcs * @brief ecore_set_ilt_page_size - Set ILT page size 890337517Sdavidcs * 891337517Sdavidcs * @param p_dev 892337517Sdavidcs * @param ilt_size 893337517Sdavidcs * 894337517Sdavidcs * @return enum _ecore_status_t 895337517Sdavidcs */ 896337517Sdavidcsvoid ecore_set_ilt_page_size(struct ecore_dev *p_dev, u8 ilt_size); 897337517Sdavidcs 898337517Sdavidcs#endif 899