111e25f0dSDavid C Somayajulu /* 211e25f0dSDavid C Somayajulu * Copyright (c) 2017-2018 Cavium, Inc. 311e25f0dSDavid C Somayajulu * All rights reserved. 411e25f0dSDavid C Somayajulu * 511e25f0dSDavid C Somayajulu * Redistribution and use in source and binary forms, with or without 611e25f0dSDavid C Somayajulu * modification, are permitted provided that the following conditions 711e25f0dSDavid C Somayajulu * are met: 811e25f0dSDavid C Somayajulu * 911e25f0dSDavid C Somayajulu * 1. Redistributions of source code must retain the above copyright 1011e25f0dSDavid C Somayajulu * notice, this list of conditions and the following disclaimer. 1111e25f0dSDavid C Somayajulu * 2. Redistributions in binary form must reproduce the above copyright 1211e25f0dSDavid C Somayajulu * notice, this list of conditions and the following disclaimer in the 1311e25f0dSDavid C Somayajulu * documentation and/or other materials provided with the distribution. 1411e25f0dSDavid C Somayajulu * 1511e25f0dSDavid C Somayajulu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 1611e25f0dSDavid C Somayajulu * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1711e25f0dSDavid C Somayajulu * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1811e25f0dSDavid C Somayajulu * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 1911e25f0dSDavid C Somayajulu * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2011e25f0dSDavid C Somayajulu * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2111e25f0dSDavid C Somayajulu * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2211e25f0dSDavid C Somayajulu * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2311e25f0dSDavid C Somayajulu * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2411e25f0dSDavid C Somayajulu * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 2511e25f0dSDavid C Somayajulu * POSSIBILITY OF SUCH DAMAGE. 2611e25f0dSDavid C Somayajulu * 2711e25f0dSDavid C Somayajulu */ 2811e25f0dSDavid C Somayajulu 2911e25f0dSDavid C Somayajulu #ifndef __ECORE_MCP_API_H__ 3011e25f0dSDavid C Somayajulu #define __ECORE_MCP_API_H__ 3111e25f0dSDavid C Somayajulu 3211e25f0dSDavid C Somayajulu #include "ecore_status.h" 3311e25f0dSDavid C Somayajulu 3411e25f0dSDavid C Somayajulu struct ecore_mcp_link_speed_params { 3511e25f0dSDavid C Somayajulu bool autoneg; 3611e25f0dSDavid C Somayajulu u32 advertised_speeds; /* bitmask of DRV_SPEED_CAPABILITY */ 3711e25f0dSDavid C Somayajulu u32 forced_speed; /* In Mb/s */ 3811e25f0dSDavid C Somayajulu }; 3911e25f0dSDavid C Somayajulu 4011e25f0dSDavid C Somayajulu struct ecore_mcp_link_pause_params { 4111e25f0dSDavid C Somayajulu bool autoneg; 4211e25f0dSDavid C Somayajulu bool forced_rx; 4311e25f0dSDavid C Somayajulu bool forced_tx; 4411e25f0dSDavid C Somayajulu }; 4511e25f0dSDavid C Somayajulu 4611e25f0dSDavid C Somayajulu enum ecore_mcp_eee_mode { 4711e25f0dSDavid C Somayajulu ECORE_MCP_EEE_DISABLED, 4811e25f0dSDavid C Somayajulu ECORE_MCP_EEE_ENABLED, 4911e25f0dSDavid C Somayajulu ECORE_MCP_EEE_UNSUPPORTED 5011e25f0dSDavid C Somayajulu }; 5111e25f0dSDavid C Somayajulu 529efd0ba7SDavid C Somayajulu #ifndef __EXTRACT__LINUX__ 5311e25f0dSDavid C Somayajulu struct ecore_link_eee_params { 5411e25f0dSDavid C Somayajulu u32 tx_lpi_timer; 5511e25f0dSDavid C Somayajulu #define ECORE_EEE_1G_ADV (1 << 0) 5611e25f0dSDavid C Somayajulu #define ECORE_EEE_10G_ADV (1 << 1) 5711e25f0dSDavid C Somayajulu /* Capabilities are represented using ECORE_EEE_*_ADV values */ 5811e25f0dSDavid C Somayajulu u8 adv_caps; 5911e25f0dSDavid C Somayajulu u8 lp_adv_caps; 6011e25f0dSDavid C Somayajulu bool enable; 6111e25f0dSDavid C Somayajulu bool tx_lpi_enable; 6211e25f0dSDavid C Somayajulu }; 639efd0ba7SDavid C Somayajulu #endif 6411e25f0dSDavid C Somayajulu 6511e25f0dSDavid C Somayajulu struct ecore_mcp_link_params { 6611e25f0dSDavid C Somayajulu struct ecore_mcp_link_speed_params speed; 6711e25f0dSDavid C Somayajulu struct ecore_mcp_link_pause_params pause; 6811e25f0dSDavid C Somayajulu u32 loopback_mode; /* in PMM_LOOPBACK values */ 6911e25f0dSDavid C Somayajulu struct ecore_link_eee_params eee; 7011e25f0dSDavid C Somayajulu }; 7111e25f0dSDavid C Somayajulu 7211e25f0dSDavid C Somayajulu struct ecore_mcp_link_capabilities { 7311e25f0dSDavid C Somayajulu u32 speed_capabilities; 7411e25f0dSDavid C Somayajulu bool default_speed_autoneg; /* In Mb/s */ 75*217ec208SDavid C Somayajulu u32 default_speed; /* In Mb/s */ /* __LINUX__THROW__ */ 7611e25f0dSDavid C Somayajulu enum ecore_mcp_eee_mode default_eee; 7711e25f0dSDavid C Somayajulu u32 eee_lpi_timer; 78*217ec208SDavid C Somayajulu u8 eee_speed_caps; 7911e25f0dSDavid C Somayajulu }; 8011e25f0dSDavid C Somayajulu 8111e25f0dSDavid C Somayajulu struct ecore_mcp_link_state { 8211e25f0dSDavid C Somayajulu bool link_up; 8311e25f0dSDavid C Somayajulu 8411e25f0dSDavid C Somayajulu u32 min_pf_rate; /* In Mb/s */ 85*217ec208SDavid C Somayajulu 86*217ec208SDavid C Somayajulu /* Actual link speed in Mb/s */ 87*217ec208SDavid C Somayajulu u32 line_speed; 88*217ec208SDavid C Somayajulu 89*217ec208SDavid C Somayajulu /* PF max speed in MB/s, deduced from line_speed 90*217ec208SDavid C Somayajulu * according to PF max bandwidth configuration. 91*217ec208SDavid C Somayajulu */ 92*217ec208SDavid C Somayajulu u32 speed; 9311e25f0dSDavid C Somayajulu bool full_duplex; 9411e25f0dSDavid C Somayajulu 9511e25f0dSDavid C Somayajulu bool an; 9611e25f0dSDavid C Somayajulu bool an_complete; 9711e25f0dSDavid C Somayajulu bool parallel_detection; 9811e25f0dSDavid C Somayajulu bool pfc_enabled; 9911e25f0dSDavid C Somayajulu 10011e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_1G_HD (1 << 0) 10111e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_1G_FD (1 << 1) 10211e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_10G (1 << 2) 10311e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_20G (1 << 3) 10411e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_25G (1 << 4) 10511e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_40G (1 << 5) 10611e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_50G (1 << 6) 10711e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SPEED_100G (1 << 7) 10811e25f0dSDavid C Somayajulu u32 partner_adv_speed; 10911e25f0dSDavid C Somayajulu 11011e25f0dSDavid C Somayajulu bool partner_tx_flow_ctrl_en; 11111e25f0dSDavid C Somayajulu bool partner_rx_flow_ctrl_en; 11211e25f0dSDavid C Somayajulu 11311e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_SYMMETRIC_PAUSE (1) 11411e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_ASYMMETRIC_PAUSE (2) 11511e25f0dSDavid C Somayajulu #define ECORE_LINK_PARTNER_BOTH_PAUSE (3) 11611e25f0dSDavid C Somayajulu u8 partner_adv_pause; 11711e25f0dSDavid C Somayajulu 11811e25f0dSDavid C Somayajulu bool sfp_tx_fault; 11911e25f0dSDavid C Somayajulu 12011e25f0dSDavid C Somayajulu bool eee_active; 12111e25f0dSDavid C Somayajulu u8 eee_adv_caps; 12211e25f0dSDavid C Somayajulu u8 eee_lp_adv_caps; 12311e25f0dSDavid C Somayajulu }; 12411e25f0dSDavid C Somayajulu 12511e25f0dSDavid C Somayajulu struct ecore_mcp_function_info { 12611e25f0dSDavid C Somayajulu u8 pause_on_host; 12711e25f0dSDavid C Somayajulu 12811e25f0dSDavid C Somayajulu enum ecore_pci_personality protocol; 12911e25f0dSDavid C Somayajulu 13011e25f0dSDavid C Somayajulu u8 bandwidth_min; 13111e25f0dSDavid C Somayajulu u8 bandwidth_max; 13211e25f0dSDavid C Somayajulu 13311e25f0dSDavid C Somayajulu u8 mac[ETH_ALEN]; 13411e25f0dSDavid C Somayajulu 13511e25f0dSDavid C Somayajulu u64 wwn_port; 13611e25f0dSDavid C Somayajulu u64 wwn_node; 13711e25f0dSDavid C Somayajulu 13811e25f0dSDavid C Somayajulu #define ECORE_MCP_VLAN_UNSET (0xffff) 13911e25f0dSDavid C Somayajulu u16 ovlan; 14011e25f0dSDavid C Somayajulu 14111e25f0dSDavid C Somayajulu u16 mtu; 14211e25f0dSDavid C Somayajulu }; 14311e25f0dSDavid C Somayajulu 1449efd0ba7SDavid C Somayajulu #ifndef __EXTRACT__LINUX__ 14511e25f0dSDavid C Somayajulu enum ecore_nvm_images { 14611e25f0dSDavid C Somayajulu ECORE_NVM_IMAGE_ISCSI_CFG, 14711e25f0dSDavid C Somayajulu ECORE_NVM_IMAGE_FCOE_CFG, 14811e25f0dSDavid C Somayajulu ECORE_NVM_IMAGE_MDUMP, 14911e25f0dSDavid C Somayajulu }; 1509efd0ba7SDavid C Somayajulu #endif 15111e25f0dSDavid C Somayajulu 15211e25f0dSDavid C Somayajulu struct ecore_mcp_drv_version { 15311e25f0dSDavid C Somayajulu u32 version; 15411e25f0dSDavid C Somayajulu u8 name[MCP_DRV_VER_STR_SIZE - 4]; 15511e25f0dSDavid C Somayajulu }; 15611e25f0dSDavid C Somayajulu 15711e25f0dSDavid C Somayajulu struct ecore_mcp_lan_stats { 15811e25f0dSDavid C Somayajulu u64 ucast_rx_pkts; 15911e25f0dSDavid C Somayajulu u64 ucast_tx_pkts; 16011e25f0dSDavid C Somayajulu u32 fcs_err; 16111e25f0dSDavid C Somayajulu }; 16211e25f0dSDavid C Somayajulu 16311e25f0dSDavid C Somayajulu #ifndef ECORE_PROTO_STATS 16411e25f0dSDavid C Somayajulu #define ECORE_PROTO_STATS 16511e25f0dSDavid C Somayajulu struct ecore_mcp_fcoe_stats { 16611e25f0dSDavid C Somayajulu u64 rx_pkts; 16711e25f0dSDavid C Somayajulu u64 tx_pkts; 16811e25f0dSDavid C Somayajulu u32 fcs_err; 16911e25f0dSDavid C Somayajulu u32 login_failure; 17011e25f0dSDavid C Somayajulu }; 17111e25f0dSDavid C Somayajulu 17211e25f0dSDavid C Somayajulu struct ecore_mcp_iscsi_stats { 17311e25f0dSDavid C Somayajulu u64 rx_pdus; 17411e25f0dSDavid C Somayajulu u64 tx_pdus; 17511e25f0dSDavid C Somayajulu u64 rx_bytes; 17611e25f0dSDavid C Somayajulu u64 tx_bytes; 17711e25f0dSDavid C Somayajulu }; 17811e25f0dSDavid C Somayajulu 17911e25f0dSDavid C Somayajulu struct ecore_mcp_rdma_stats { 18011e25f0dSDavid C Somayajulu u64 rx_pkts; 18111e25f0dSDavid C Somayajulu u64 tx_pkts; 18211e25f0dSDavid C Somayajulu u64 rx_bytes; 18311e25f0dSDavid C Somayajulu u64 tx_byts; 18411e25f0dSDavid C Somayajulu }; 18511e25f0dSDavid C Somayajulu 18611e25f0dSDavid C Somayajulu enum ecore_mcp_protocol_type { 18711e25f0dSDavid C Somayajulu ECORE_MCP_LAN_STATS, 18811e25f0dSDavid C Somayajulu ECORE_MCP_FCOE_STATS, 18911e25f0dSDavid C Somayajulu ECORE_MCP_ISCSI_STATS, 19011e25f0dSDavid C Somayajulu ECORE_MCP_RDMA_STATS 19111e25f0dSDavid C Somayajulu }; 19211e25f0dSDavid C Somayajulu 19311e25f0dSDavid C Somayajulu union ecore_mcp_protocol_stats { 19411e25f0dSDavid C Somayajulu struct ecore_mcp_lan_stats lan_stats; 19511e25f0dSDavid C Somayajulu struct ecore_mcp_fcoe_stats fcoe_stats; 19611e25f0dSDavid C Somayajulu struct ecore_mcp_iscsi_stats iscsi_stats; 19711e25f0dSDavid C Somayajulu struct ecore_mcp_rdma_stats rdma_stats; 19811e25f0dSDavid C Somayajulu }; 19911e25f0dSDavid C Somayajulu #endif 20011e25f0dSDavid C Somayajulu 20111e25f0dSDavid C Somayajulu enum ecore_ov_client { 20211e25f0dSDavid C Somayajulu ECORE_OV_CLIENT_DRV, 20311e25f0dSDavid C Somayajulu ECORE_OV_CLIENT_USER, 20411e25f0dSDavid C Somayajulu ECORE_OV_CLIENT_VENDOR_SPEC 20511e25f0dSDavid C Somayajulu }; 20611e25f0dSDavid C Somayajulu 20711e25f0dSDavid C Somayajulu enum ecore_ov_driver_state { 20811e25f0dSDavid C Somayajulu ECORE_OV_DRIVER_STATE_NOT_LOADED, 20911e25f0dSDavid C Somayajulu ECORE_OV_DRIVER_STATE_DISABLED, 21011e25f0dSDavid C Somayajulu ECORE_OV_DRIVER_STATE_ACTIVE 21111e25f0dSDavid C Somayajulu }; 21211e25f0dSDavid C Somayajulu 21311e25f0dSDavid C Somayajulu enum ecore_ov_wol { 21411e25f0dSDavid C Somayajulu ECORE_OV_WOL_DEFAULT, 21511e25f0dSDavid C Somayajulu ECORE_OV_WOL_DISABLED, 21611e25f0dSDavid C Somayajulu ECORE_OV_WOL_ENABLED 21711e25f0dSDavid C Somayajulu }; 21811e25f0dSDavid C Somayajulu 2199efd0ba7SDavid C Somayajulu #ifndef __EXTRACT__LINUX__ 22011e25f0dSDavid C Somayajulu #define ECORE_MAX_NPIV_ENTRIES 128 22111e25f0dSDavid C Somayajulu #define ECORE_WWN_SIZE 8 22211e25f0dSDavid C Somayajulu struct ecore_fc_npiv_tbl { 22311e25f0dSDavid C Somayajulu u16 num_wwpn; 22411e25f0dSDavid C Somayajulu u16 num_wwnn; 22511e25f0dSDavid C Somayajulu u8 wwpn[ECORE_MAX_NPIV_ENTRIES][ECORE_WWN_SIZE]; 22611e25f0dSDavid C Somayajulu u8 wwnn[ECORE_MAX_NPIV_ENTRIES][ECORE_WWN_SIZE]; 22711e25f0dSDavid C Somayajulu }; 22811e25f0dSDavid C Somayajulu 22911e25f0dSDavid C Somayajulu enum ecore_led_mode { 23011e25f0dSDavid C Somayajulu ECORE_LED_MODE_OFF, 23111e25f0dSDavid C Somayajulu ECORE_LED_MODE_ON, 23211e25f0dSDavid C Somayajulu ECORE_LED_MODE_RESTORE 23311e25f0dSDavid C Somayajulu }; 2349efd0ba7SDavid C Somayajulu #endif 23511e25f0dSDavid C Somayajulu 23611e25f0dSDavid C Somayajulu struct ecore_temperature_sensor { 23711e25f0dSDavid C Somayajulu u8 sensor_location; 23811e25f0dSDavid C Somayajulu u8 threshold_high; 23911e25f0dSDavid C Somayajulu u8 critical; 24011e25f0dSDavid C Somayajulu u8 current_temp; 24111e25f0dSDavid C Somayajulu }; 24211e25f0dSDavid C Somayajulu 24311e25f0dSDavid C Somayajulu #define ECORE_MAX_NUM_OF_SENSORS 7 24411e25f0dSDavid C Somayajulu struct ecore_temperature_info { 24511e25f0dSDavid C Somayajulu u32 num_sensors; 24611e25f0dSDavid C Somayajulu struct ecore_temperature_sensor sensors[ECORE_MAX_NUM_OF_SENSORS]; 24711e25f0dSDavid C Somayajulu }; 24811e25f0dSDavid C Somayajulu 24911e25f0dSDavid C Somayajulu enum ecore_mba_img_idx { 25011e25f0dSDavid C Somayajulu ECORE_MBA_LEGACY_IDX, 25111e25f0dSDavid C Somayajulu ECORE_MBA_PCI3CLP_IDX, 25211e25f0dSDavid C Somayajulu ECORE_MBA_PCI3_IDX, 25311e25f0dSDavid C Somayajulu ECORE_MBA_FCODE_IDX, 25411e25f0dSDavid C Somayajulu ECORE_EFI_X86_IDX, 25511e25f0dSDavid C Somayajulu ECORE_EFI_IPF_IDX, 25611e25f0dSDavid C Somayajulu ECORE_EFI_EBC_IDX, 25711e25f0dSDavid C Somayajulu ECORE_EFI_X64_IDX, 25811e25f0dSDavid C Somayajulu ECORE_MAX_NUM_OF_ROMIMG 25911e25f0dSDavid C Somayajulu }; 26011e25f0dSDavid C Somayajulu 26111e25f0dSDavid C Somayajulu struct ecore_mba_vers { 26211e25f0dSDavid C Somayajulu u32 mba_vers[ECORE_MAX_NUM_OF_ROMIMG]; 26311e25f0dSDavid C Somayajulu }; 26411e25f0dSDavid C Somayajulu 26511e25f0dSDavid C Somayajulu enum ecore_mfw_tlv_type { 26611e25f0dSDavid C Somayajulu ECORE_MFW_TLV_GENERIC = 0x1, /* Core driver TLVs */ 26711e25f0dSDavid C Somayajulu ECORE_MFW_TLV_ETH = 0x2, /* L2 driver TLVs */ 26811e25f0dSDavid C Somayajulu ECORE_MFW_TLV_FCOE = 0x4, /* FCoE protocol TLVs */ 26911e25f0dSDavid C Somayajulu ECORE_MFW_TLV_ISCSI = 0x8, /* SCSI protocol TLVs */ 27011e25f0dSDavid C Somayajulu ECORE_MFW_TLV_MAX = 0x16, 27111e25f0dSDavid C Somayajulu }; 27211e25f0dSDavid C Somayajulu 27311e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_generic { 27411e25f0dSDavid C Somayajulu struct { 27511e25f0dSDavid C Somayajulu u8 ipv4_csum_offload; 27611e25f0dSDavid C Somayajulu u8 lso_supported; 27711e25f0dSDavid C Somayajulu bool b_set; 27811e25f0dSDavid C Somayajulu } flags; 27911e25f0dSDavid C Somayajulu 28011e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_MAC_COUNT 3 28111e25f0dSDavid C Somayajulu /* First entry for primary MAC, 2 secondary MACs possible */ 28211e25f0dSDavid C Somayajulu u8 mac[ECORE_MFW_TLV_MAC_COUNT][6]; 28311e25f0dSDavid C Somayajulu bool mac_set[ECORE_MFW_TLV_MAC_COUNT]; 28411e25f0dSDavid C Somayajulu 28511e25f0dSDavid C Somayajulu u64 rx_frames; 28611e25f0dSDavid C Somayajulu bool rx_frames_set; 28711e25f0dSDavid C Somayajulu u64 rx_bytes; 28811e25f0dSDavid C Somayajulu bool rx_bytes_set; 28911e25f0dSDavid C Somayajulu u64 tx_frames; 29011e25f0dSDavid C Somayajulu bool tx_frames_set; 29111e25f0dSDavid C Somayajulu u64 tx_bytes; 29211e25f0dSDavid C Somayajulu bool tx_bytes_set; 29311e25f0dSDavid C Somayajulu }; 29411e25f0dSDavid C Somayajulu 2959efd0ba7SDavid C Somayajulu #ifndef __EXTRACT__LINUX__ 29611e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_eth { 29711e25f0dSDavid C Somayajulu u16 lso_maxoff_size; 29811e25f0dSDavid C Somayajulu bool lso_maxoff_size_set; 29911e25f0dSDavid C Somayajulu u16 lso_minseg_size; 30011e25f0dSDavid C Somayajulu bool lso_minseg_size_set; 30111e25f0dSDavid C Somayajulu u8 prom_mode; 30211e25f0dSDavid C Somayajulu bool prom_mode_set; 30311e25f0dSDavid C Somayajulu u16 tx_descr_size; 30411e25f0dSDavid C Somayajulu bool tx_descr_size_set; 30511e25f0dSDavid C Somayajulu u16 rx_descr_size; 30611e25f0dSDavid C Somayajulu bool rx_descr_size_set; 30711e25f0dSDavid C Somayajulu u16 netq_count; 30811e25f0dSDavid C Somayajulu bool netq_count_set; 30911e25f0dSDavid C Somayajulu u32 tcp4_offloads; 31011e25f0dSDavid C Somayajulu bool tcp4_offloads_set; 31111e25f0dSDavid C Somayajulu u32 tcp6_offloads; 31211e25f0dSDavid C Somayajulu bool tcp6_offloads_set; 31311e25f0dSDavid C Somayajulu u16 tx_descr_qdepth; 31411e25f0dSDavid C Somayajulu bool tx_descr_qdepth_set; 31511e25f0dSDavid C Somayajulu u16 rx_descr_qdepth; 31611e25f0dSDavid C Somayajulu bool rx_descr_qdepth_set; 31711e25f0dSDavid C Somayajulu u8 iov_offload; 31811e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_IOV_OFFLOAD_NONE (0) 31911e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_IOV_OFFLOAD_MULTIQUEUE (1) 32011e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_IOV_OFFLOAD_VEB (2) 32111e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_IOV_OFFLOAD_VEPA (3) 32211e25f0dSDavid C Somayajulu bool iov_offload_set; 32311e25f0dSDavid C Somayajulu u8 txqs_empty; 32411e25f0dSDavid C Somayajulu bool txqs_empty_set; 32511e25f0dSDavid C Somayajulu u8 rxqs_empty; 32611e25f0dSDavid C Somayajulu bool rxqs_empty_set; 32711e25f0dSDavid C Somayajulu u8 num_txqs_full; 32811e25f0dSDavid C Somayajulu bool num_txqs_full_set; 32911e25f0dSDavid C Somayajulu u8 num_rxqs_full; 33011e25f0dSDavid C Somayajulu bool num_rxqs_full_set; 33111e25f0dSDavid C Somayajulu }; 33211e25f0dSDavid C Somayajulu 33311e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_time { 33411e25f0dSDavid C Somayajulu bool b_set; 33511e25f0dSDavid C Somayajulu u8 month; 33611e25f0dSDavid C Somayajulu u8 day; 33711e25f0dSDavid C Somayajulu u8 hour; 33811e25f0dSDavid C Somayajulu u8 min; 33911e25f0dSDavid C Somayajulu u16 msec; 34011e25f0dSDavid C Somayajulu u16 usec; 34111e25f0dSDavid C Somayajulu }; 34211e25f0dSDavid C Somayajulu 34311e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_fcoe { 34411e25f0dSDavid C Somayajulu u8 scsi_timeout; 34511e25f0dSDavid C Somayajulu bool scsi_timeout_set; 34611e25f0dSDavid C Somayajulu u32 rt_tov; 34711e25f0dSDavid C Somayajulu bool rt_tov_set; 34811e25f0dSDavid C Somayajulu u32 ra_tov; 34911e25f0dSDavid C Somayajulu bool ra_tov_set; 35011e25f0dSDavid C Somayajulu u32 ed_tov; 35111e25f0dSDavid C Somayajulu bool ed_tov_set; 35211e25f0dSDavid C Somayajulu u32 cr_tov; 35311e25f0dSDavid C Somayajulu bool cr_tov_set; 35411e25f0dSDavid C Somayajulu u8 boot_type; 35511e25f0dSDavid C Somayajulu bool boot_type_set; 35611e25f0dSDavid C Somayajulu u8 npiv_state; 35711e25f0dSDavid C Somayajulu bool npiv_state_set; 35811e25f0dSDavid C Somayajulu u32 num_npiv_ids; 35911e25f0dSDavid C Somayajulu bool num_npiv_ids_set; 36011e25f0dSDavid C Somayajulu u8 switch_name[8]; 36111e25f0dSDavid C Somayajulu bool switch_name_set; 36211e25f0dSDavid C Somayajulu u16 switch_portnum; 36311e25f0dSDavid C Somayajulu bool switch_portnum_set; 36411e25f0dSDavid C Somayajulu u8 switch_portid[3]; 36511e25f0dSDavid C Somayajulu bool switch_portid_set; 36611e25f0dSDavid C Somayajulu u8 vendor_name[8]; 36711e25f0dSDavid C Somayajulu bool vendor_name_set; 36811e25f0dSDavid C Somayajulu u8 switch_model[8]; 36911e25f0dSDavid C Somayajulu bool switch_model_set; 37011e25f0dSDavid C Somayajulu u8 switch_fw_version[8]; 37111e25f0dSDavid C Somayajulu bool switch_fw_version_set; 37211e25f0dSDavid C Somayajulu u8 qos_pri; 37311e25f0dSDavid C Somayajulu bool qos_pri_set; 37411e25f0dSDavid C Somayajulu u8 port_alias[3]; 37511e25f0dSDavid C Somayajulu bool port_alias_set; 37611e25f0dSDavid C Somayajulu u8 port_state; 37711e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_PORT_STATE_OFFLINE (0) 37811e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_PORT_STATE_LOOP (1) 37911e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_PORT_STATE_P2P (2) 38011e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_PORT_STATE_FABRIC (3) 38111e25f0dSDavid C Somayajulu bool port_state_set; 38211e25f0dSDavid C Somayajulu u16 fip_tx_descr_size; 38311e25f0dSDavid C Somayajulu bool fip_tx_descr_size_set; 38411e25f0dSDavid C Somayajulu u16 fip_rx_descr_size; 38511e25f0dSDavid C Somayajulu bool fip_rx_descr_size_set; 38611e25f0dSDavid C Somayajulu u16 link_failures; 38711e25f0dSDavid C Somayajulu bool link_failures_set; 38811e25f0dSDavid C Somayajulu u8 fcoe_boot_progress; 38911e25f0dSDavid C Somayajulu bool fcoe_boot_progress_set; 39011e25f0dSDavid C Somayajulu u64 rx_bcast; 39111e25f0dSDavid C Somayajulu bool rx_bcast_set; 39211e25f0dSDavid C Somayajulu u64 tx_bcast; 39311e25f0dSDavid C Somayajulu bool tx_bcast_set; 39411e25f0dSDavid C Somayajulu u16 fcoe_txq_depth; 39511e25f0dSDavid C Somayajulu bool fcoe_txq_depth_set; 39611e25f0dSDavid C Somayajulu u16 fcoe_rxq_depth; 39711e25f0dSDavid C Somayajulu bool fcoe_rxq_depth_set; 39811e25f0dSDavid C Somayajulu u64 fcoe_rx_frames; 39911e25f0dSDavid C Somayajulu bool fcoe_rx_frames_set; 40011e25f0dSDavid C Somayajulu u64 fcoe_rx_bytes; 40111e25f0dSDavid C Somayajulu bool fcoe_rx_bytes_set; 40211e25f0dSDavid C Somayajulu u64 fcoe_tx_frames; 40311e25f0dSDavid C Somayajulu bool fcoe_tx_frames_set; 40411e25f0dSDavid C Somayajulu u64 fcoe_tx_bytes; 40511e25f0dSDavid C Somayajulu bool fcoe_tx_bytes_set; 40611e25f0dSDavid C Somayajulu u16 crc_count; 40711e25f0dSDavid C Somayajulu bool crc_count_set; 40811e25f0dSDavid C Somayajulu u32 crc_err_src_fcid[5]; 40911e25f0dSDavid C Somayajulu bool crc_err_src_fcid_set[5]; 41011e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_time crc_err[5]; 41111e25f0dSDavid C Somayajulu u16 losync_err; 41211e25f0dSDavid C Somayajulu bool losync_err_set; 41311e25f0dSDavid C Somayajulu u16 losig_err; 41411e25f0dSDavid C Somayajulu bool losig_err_set; 41511e25f0dSDavid C Somayajulu u16 primtive_err; 41611e25f0dSDavid C Somayajulu bool primtive_err_set; 41711e25f0dSDavid C Somayajulu u16 disparity_err; 41811e25f0dSDavid C Somayajulu bool disparity_err_set; 41911e25f0dSDavid C Somayajulu u16 code_violation_err; 42011e25f0dSDavid C Somayajulu bool code_violation_err_set; 42111e25f0dSDavid C Somayajulu u32 flogi_param[4]; 42211e25f0dSDavid C Somayajulu bool flogi_param_set[4]; 42311e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_time flogi_tstamp; 42411e25f0dSDavid C Somayajulu u32 flogi_acc_param[4]; 42511e25f0dSDavid C Somayajulu bool flogi_acc_param_set[4]; 42611e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_time flogi_acc_tstamp; 42711e25f0dSDavid C Somayajulu u32 flogi_rjt; 42811e25f0dSDavid C Somayajulu bool flogi_rjt_set; 42911e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_time flogi_rjt_tstamp; 43011e25f0dSDavid C Somayajulu u32 fdiscs; 43111e25f0dSDavid C Somayajulu bool fdiscs_set; 43211e25f0dSDavid C Somayajulu u8 fdisc_acc; 43311e25f0dSDavid C Somayajulu bool fdisc_acc_set; 43411e25f0dSDavid C Somayajulu u8 fdisc_rjt; 43511e25f0dSDavid C Somayajulu bool fdisc_rjt_set; 43611e25f0dSDavid C Somayajulu u8 plogi; 43711e25f0dSDavid C Somayajulu bool plogi_set; 43811e25f0dSDavid C Somayajulu u8 plogi_acc; 43911e25f0dSDavid C Somayajulu bool plogi_acc_set; 44011e25f0dSDavid C Somayajulu u8 plogi_rjt; 44111e25f0dSDavid C Somayajulu bool plogi_rjt_set; 44211e25f0dSDavid C Somayajulu u32 plogi_dst_fcid[5]; 44311e25f0dSDavid C Somayajulu bool plogi_dst_fcid_set[5]; 44411e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_time plogi_tstamp[5]; 44511e25f0dSDavid C Somayajulu u32 plogi_acc_src_fcid[5]; 44611e25f0dSDavid C Somayajulu bool plogi_acc_src_fcid_set[5]; 44711e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_time plogi_acc_tstamp[5]; 44811e25f0dSDavid C Somayajulu u8 tx_plogos; 44911e25f0dSDavid C Somayajulu bool tx_plogos_set; 45011e25f0dSDavid C Somayajulu u8 plogo_acc; 45111e25f0dSDavid C Somayajulu bool plogo_acc_set; 45211e25f0dSDavid C Somayajulu u8 plogo_rjt; 45311e25f0dSDavid C Somayajulu bool plogo_rjt_set; 45411e25f0dSDavid C Somayajulu u32 plogo_src_fcid[5]; 45511e25f0dSDavid C Somayajulu bool plogo_src_fcid_set[5]; 45611e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_time plogo_tstamp[5]; 45711e25f0dSDavid C Somayajulu u8 rx_logos; 45811e25f0dSDavid C Somayajulu bool rx_logos_set; 45911e25f0dSDavid C Somayajulu u8 tx_accs; 46011e25f0dSDavid C Somayajulu bool tx_accs_set; 46111e25f0dSDavid C Somayajulu u8 tx_prlis; 46211e25f0dSDavid C Somayajulu bool tx_prlis_set; 46311e25f0dSDavid C Somayajulu u8 rx_accs; 46411e25f0dSDavid C Somayajulu bool rx_accs_set; 46511e25f0dSDavid C Somayajulu u8 tx_abts; 46611e25f0dSDavid C Somayajulu bool tx_abts_set; 46711e25f0dSDavid C Somayajulu u8 rx_abts_acc; 46811e25f0dSDavid C Somayajulu bool rx_abts_acc_set; 46911e25f0dSDavid C Somayajulu u8 rx_abts_rjt; 47011e25f0dSDavid C Somayajulu bool rx_abts_rjt_set; 47111e25f0dSDavid C Somayajulu u32 abts_dst_fcid[5]; 47211e25f0dSDavid C Somayajulu bool abts_dst_fcid_set[5]; 47311e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_time abts_tstamp[5]; 47411e25f0dSDavid C Somayajulu u8 rx_rscn; 47511e25f0dSDavid C Somayajulu bool rx_rscn_set; 47611e25f0dSDavid C Somayajulu u32 rx_rscn_nport[4]; 47711e25f0dSDavid C Somayajulu bool rx_rscn_nport_set[4]; 47811e25f0dSDavid C Somayajulu u8 tx_lun_rst; 47911e25f0dSDavid C Somayajulu bool tx_lun_rst_set; 48011e25f0dSDavid C Somayajulu u8 abort_task_sets; 48111e25f0dSDavid C Somayajulu bool abort_task_sets_set; 48211e25f0dSDavid C Somayajulu u8 tx_tprlos; 48311e25f0dSDavid C Somayajulu bool tx_tprlos_set; 48411e25f0dSDavid C Somayajulu u8 tx_nos; 48511e25f0dSDavid C Somayajulu bool tx_nos_set; 48611e25f0dSDavid C Somayajulu u8 rx_nos; 48711e25f0dSDavid C Somayajulu bool rx_nos_set; 48811e25f0dSDavid C Somayajulu u8 ols; 48911e25f0dSDavid C Somayajulu bool ols_set; 49011e25f0dSDavid C Somayajulu u8 lr; 49111e25f0dSDavid C Somayajulu bool lr_set; 49211e25f0dSDavid C Somayajulu u8 lrr; 49311e25f0dSDavid C Somayajulu bool lrr_set; 49411e25f0dSDavid C Somayajulu u8 tx_lip; 49511e25f0dSDavid C Somayajulu bool tx_lip_set; 49611e25f0dSDavid C Somayajulu u8 rx_lip; 49711e25f0dSDavid C Somayajulu bool rx_lip_set; 49811e25f0dSDavid C Somayajulu u8 eofa; 49911e25f0dSDavid C Somayajulu bool eofa_set; 50011e25f0dSDavid C Somayajulu u8 eofni; 50111e25f0dSDavid C Somayajulu bool eofni_set; 50211e25f0dSDavid C Somayajulu u8 scsi_chks; 50311e25f0dSDavid C Somayajulu bool scsi_chks_set; 50411e25f0dSDavid C Somayajulu u8 scsi_cond_met; 50511e25f0dSDavid C Somayajulu bool scsi_cond_met_set; 50611e25f0dSDavid C Somayajulu u8 scsi_busy; 50711e25f0dSDavid C Somayajulu bool scsi_busy_set; 50811e25f0dSDavid C Somayajulu u8 scsi_inter; 50911e25f0dSDavid C Somayajulu bool scsi_inter_set; 51011e25f0dSDavid C Somayajulu u8 scsi_inter_cond_met; 51111e25f0dSDavid C Somayajulu bool scsi_inter_cond_met_set; 51211e25f0dSDavid C Somayajulu u8 scsi_rsv_conflicts; 51311e25f0dSDavid C Somayajulu bool scsi_rsv_conflicts_set; 51411e25f0dSDavid C Somayajulu u8 scsi_tsk_full; 51511e25f0dSDavid C Somayajulu bool scsi_tsk_full_set; 51611e25f0dSDavid C Somayajulu u8 scsi_aca_active; 51711e25f0dSDavid C Somayajulu bool scsi_aca_active_set; 51811e25f0dSDavid C Somayajulu u8 scsi_tsk_abort; 51911e25f0dSDavid C Somayajulu bool scsi_tsk_abort_set; 52011e25f0dSDavid C Somayajulu u32 scsi_rx_chk[5]; 52111e25f0dSDavid C Somayajulu bool scsi_rx_chk_set[5]; 52211e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_time scsi_chk_tstamp[5]; 52311e25f0dSDavid C Somayajulu }; 52411e25f0dSDavid C Somayajulu 52511e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_iscsi { 52611e25f0dSDavid C Somayajulu u8 target_llmnr; 52711e25f0dSDavid C Somayajulu bool target_llmnr_set; 52811e25f0dSDavid C Somayajulu u8 header_digest; 52911e25f0dSDavid C Somayajulu bool header_digest_set; 53011e25f0dSDavid C Somayajulu u8 data_digest; 53111e25f0dSDavid C Somayajulu bool data_digest_set; 53211e25f0dSDavid C Somayajulu u8 auth_method; 53311e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_AUTH_METHOD_NONE (1) 53411e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_AUTH_METHOD_CHAP (2) 53511e25f0dSDavid C Somayajulu #define ECORE_MFW_TLV_AUTH_METHOD_MUTUAL_CHAP (3) 53611e25f0dSDavid C Somayajulu bool auth_method_set; 53711e25f0dSDavid C Somayajulu u16 boot_taget_portal; 53811e25f0dSDavid C Somayajulu bool boot_taget_portal_set; 53911e25f0dSDavid C Somayajulu u16 frame_size; 54011e25f0dSDavid C Somayajulu bool frame_size_set; 54111e25f0dSDavid C Somayajulu u16 tx_desc_size; 54211e25f0dSDavid C Somayajulu bool tx_desc_size_set; 54311e25f0dSDavid C Somayajulu u16 rx_desc_size; 54411e25f0dSDavid C Somayajulu bool rx_desc_size_set; 54511e25f0dSDavid C Somayajulu u8 boot_progress; 54611e25f0dSDavid C Somayajulu bool boot_progress_set; 54711e25f0dSDavid C Somayajulu u16 tx_desc_qdepth; 54811e25f0dSDavid C Somayajulu bool tx_desc_qdepth_set; 54911e25f0dSDavid C Somayajulu u16 rx_desc_qdepth; 55011e25f0dSDavid C Somayajulu bool rx_desc_qdepth_set; 55111e25f0dSDavid C Somayajulu u64 rx_frames; 55211e25f0dSDavid C Somayajulu bool rx_frames_set; 55311e25f0dSDavid C Somayajulu u64 rx_bytes; 55411e25f0dSDavid C Somayajulu bool rx_bytes_set; 55511e25f0dSDavid C Somayajulu u64 tx_frames; 55611e25f0dSDavid C Somayajulu bool tx_frames_set; 55711e25f0dSDavid C Somayajulu u64 tx_bytes; 55811e25f0dSDavid C Somayajulu bool tx_bytes_set; 55911e25f0dSDavid C Somayajulu }; 5609efd0ba7SDavid C Somayajulu #endif 56111e25f0dSDavid C Somayajulu 56211e25f0dSDavid C Somayajulu union ecore_mfw_tlv_data { 56311e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_generic generic; 56411e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_eth eth; 56511e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_fcoe fcoe; 56611e25f0dSDavid C Somayajulu struct ecore_mfw_tlv_iscsi iscsi; 56711e25f0dSDavid C Somayajulu }; 56811e25f0dSDavid C Somayajulu 569*217ec208SDavid C Somayajulu #ifndef __EXTRACT__LINUX__ 57011e25f0dSDavid C Somayajulu enum ecore_hw_info_change { 57111e25f0dSDavid C Somayajulu ECORE_HW_INFO_CHANGE_OVLAN, 57211e25f0dSDavid C Somayajulu }; 573*217ec208SDavid C Somayajulu #endif 57411e25f0dSDavid C Somayajulu 57511e25f0dSDavid C Somayajulu /** 57611e25f0dSDavid C Somayajulu * @brief - returns the link params of the hw function 57711e25f0dSDavid C Somayajulu * 57811e25f0dSDavid C Somayajulu * @param p_hwfn 57911e25f0dSDavid C Somayajulu * 58011e25f0dSDavid C Somayajulu * @returns pointer to link params 58111e25f0dSDavid C Somayajulu */ 582*217ec208SDavid C Somayajulu struct ecore_mcp_link_params *ecore_mcp_get_link_params(struct ecore_hwfn 583*217ec208SDavid C Somayajulu *p_hwfn); 58411e25f0dSDavid C Somayajulu 58511e25f0dSDavid C Somayajulu /** 58611e25f0dSDavid C Somayajulu * @brief - return the link state of the hw function 58711e25f0dSDavid C Somayajulu * 58811e25f0dSDavid C Somayajulu * @param p_hwfn 58911e25f0dSDavid C Somayajulu * 59011e25f0dSDavid C Somayajulu * @returns pointer to link state 59111e25f0dSDavid C Somayajulu */ 592*217ec208SDavid C Somayajulu struct ecore_mcp_link_state *ecore_mcp_get_link_state(struct ecore_hwfn 593*217ec208SDavid C Somayajulu *p_hwfn); 59411e25f0dSDavid C Somayajulu 59511e25f0dSDavid C Somayajulu /** 59611e25f0dSDavid C Somayajulu * @brief - return the link capabilities of the hw function 59711e25f0dSDavid C Somayajulu * 59811e25f0dSDavid C Somayajulu * @param p_hwfn 59911e25f0dSDavid C Somayajulu * 60011e25f0dSDavid C Somayajulu * @returns pointer to link capabilities 60111e25f0dSDavid C Somayajulu */ 60211e25f0dSDavid C Somayajulu struct ecore_mcp_link_capabilities 60311e25f0dSDavid C Somayajulu *ecore_mcp_get_link_capabilities(struct ecore_hwfn *p_hwfn); 60411e25f0dSDavid C Somayajulu 60511e25f0dSDavid C Somayajulu /** 60611e25f0dSDavid C Somayajulu * @brief Request the MFW to set the the link according to 'link_input'. 60711e25f0dSDavid C Somayajulu * 60811e25f0dSDavid C Somayajulu * @param p_hwfn 60911e25f0dSDavid C Somayajulu * @param p_ptt 61011e25f0dSDavid C Somayajulu * @param b_up - raise link if `true'. Reset link if `false'. 61111e25f0dSDavid C Somayajulu * 61211e25f0dSDavid C Somayajulu * @return enum _ecore_status_t 61311e25f0dSDavid C Somayajulu */ 61411e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_set_link(struct ecore_hwfn *p_hwfn, 61511e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 61611e25f0dSDavid C Somayajulu bool b_up); 61711e25f0dSDavid C Somayajulu 61811e25f0dSDavid C Somayajulu /** 61911e25f0dSDavid C Somayajulu * @brief Get the management firmware version value 62011e25f0dSDavid C Somayajulu * 62111e25f0dSDavid C Somayajulu * @param p_hwfn 62211e25f0dSDavid C Somayajulu * @param p_ptt 62311e25f0dSDavid C Somayajulu * @param p_mfw_ver - mfw version value 62411e25f0dSDavid C Somayajulu * @param p_running_bundle_id - image id in nvram; Optional. 62511e25f0dSDavid C Somayajulu * 62611e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 62711e25f0dSDavid C Somayajulu */ 62811e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_mfw_ver(struct ecore_hwfn *p_hwfn, 62911e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 63011e25f0dSDavid C Somayajulu u32 *p_mfw_ver, 63111e25f0dSDavid C Somayajulu u32 *p_running_bundle_id); 63211e25f0dSDavid C Somayajulu 63311e25f0dSDavid C Somayajulu /** 63411e25f0dSDavid C Somayajulu * @brief Get the MBI version value 63511e25f0dSDavid C Somayajulu * 63611e25f0dSDavid C Somayajulu * @param p_hwfn 63711e25f0dSDavid C Somayajulu * @param p_ptt 63811e25f0dSDavid C Somayajulu * @param p_mbi_ver - A pointer to a variable to be filled with the MBI version. 63911e25f0dSDavid C Somayajulu * 64011e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 64111e25f0dSDavid C Somayajulu */ 64211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_mbi_ver(struct ecore_hwfn *p_hwfn, 64311e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 64411e25f0dSDavid C Somayajulu u32 *p_mbi_ver); 64511e25f0dSDavid C Somayajulu 64611e25f0dSDavid C Somayajulu /** 64711e25f0dSDavid C Somayajulu * @brief Get media type value of the port. 64811e25f0dSDavid C Somayajulu * 64911e25f0dSDavid C Somayajulu * @param p_dev - ecore dev pointer 650*217ec208SDavid C Somayajulu * @param p_ptt 65111e25f0dSDavid C Somayajulu * @param mfw_ver - media type value 65211e25f0dSDavid C Somayajulu * 65311e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - 65411e25f0dSDavid C Somayajulu * ECORE_SUCCESS - Operation was successful. 65511e25f0dSDavid C Somayajulu * ECORE_BUSY - Operation failed 65611e25f0dSDavid C Somayajulu */ 657*217ec208SDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_media_type(struct ecore_hwfn *p_hwfn, 658*217ec208SDavid C Somayajulu struct ecore_ptt *p_ptt, 65911e25f0dSDavid C Somayajulu u32 *media_type); 66011e25f0dSDavid C Somayajulu 66111e25f0dSDavid C Somayajulu /** 662*217ec208SDavid C Somayajulu * @brief Get transciever data of the port. 663*217ec208SDavid C Somayajulu * 664*217ec208SDavid C Somayajulu * @param p_dev - ecore dev pointer 665*217ec208SDavid C Somayajulu * @param p_ptt 666*217ec208SDavid C Somayajulu * @param p_transciever_type - media type value 667*217ec208SDavid C Somayajulu * 668*217ec208SDavid C Somayajulu * @return enum _ecore_status_t - 669*217ec208SDavid C Somayajulu * ECORE_SUCCESS - Operation was successful. 670*217ec208SDavid C Somayajulu * ECORE_BUSY - Operation failed 671*217ec208SDavid C Somayajulu */ 672*217ec208SDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_transceiver_data(struct ecore_hwfn *p_hwfn, 673*217ec208SDavid C Somayajulu struct ecore_ptt *p_ptt, 674*217ec208SDavid C Somayajulu u32 *p_tranceiver_type); 675*217ec208SDavid C Somayajulu 676*217ec208SDavid C Somayajulu /** 677*217ec208SDavid C Somayajulu * @brief Get transciever supported speed mask. 678*217ec208SDavid C Somayajulu * 679*217ec208SDavid C Somayajulu * @param p_dev - ecore dev pointer 680*217ec208SDavid C Somayajulu * @param p_ptt 681*217ec208SDavid C Somayajulu * @param p_speed_mask - Bit mask of all supported speeds. 682*217ec208SDavid C Somayajulu * 683*217ec208SDavid C Somayajulu * @return enum _ecore_status_t - 684*217ec208SDavid C Somayajulu * ECORE_SUCCESS - Operation was successful. 685*217ec208SDavid C Somayajulu * ECORE_BUSY - Operation failed 686*217ec208SDavid C Somayajulu */ 687*217ec208SDavid C Somayajulu 688*217ec208SDavid C Somayajulu enum _ecore_status_t ecore_mcp_trans_speed_mask(struct ecore_hwfn *p_hwfn, 689*217ec208SDavid C Somayajulu struct ecore_ptt *p_ptt, 690*217ec208SDavid C Somayajulu u32 *p_speed_mask); 691*217ec208SDavid C Somayajulu 692*217ec208SDavid C Somayajulu /** 693*217ec208SDavid C Somayajulu * @brief Get board configuration. 694*217ec208SDavid C Somayajulu * 695*217ec208SDavid C Somayajulu * @param p_dev - ecore dev pointer 696*217ec208SDavid C Somayajulu * @param p_ptt 697*217ec208SDavid C Somayajulu * @param p_board_config - Board config. 698*217ec208SDavid C Somayajulu * 699*217ec208SDavid C Somayajulu * @return enum _ecore_status_t - 700*217ec208SDavid C Somayajulu * ECORE_SUCCESS - Operation was successful. 701*217ec208SDavid C Somayajulu * ECORE_BUSY - Operation failed 702*217ec208SDavid C Somayajulu */ 703*217ec208SDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_board_config(struct ecore_hwfn *p_hwfn, 704*217ec208SDavid C Somayajulu struct ecore_ptt *p_ptt, 705*217ec208SDavid C Somayajulu u32 *p_board_config); 706*217ec208SDavid C Somayajulu 707*217ec208SDavid C Somayajulu /** 70811e25f0dSDavid C Somayajulu * @brief - Sends a command to the MCP mailbox. 70911e25f0dSDavid C Somayajulu * 71011e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 71111e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 71211e25f0dSDavid C Somayajulu * @param cmd - command to be sent to the MCP 713*217ec208SDavid C Somayajulu * @param param - Optional param 714*217ec208SDavid C Somayajulu * @param o_mcp_resp - The MCP response code (exclude sequence) 715*217ec208SDavid C Somayajulu * @param o_mcp_param - Optional parameter provided by the MCP response 71611e25f0dSDavid C Somayajulu * 71711e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - 71811e25f0dSDavid C Somayajulu * ECORE_SUCCESS - operation was successful 71911e25f0dSDavid C Somayajulu * ECORE_BUSY - operation failed 72011e25f0dSDavid C Somayajulu */ 72111e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_cmd(struct ecore_hwfn *p_hwfn, 72211e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, u32 cmd, u32 param, 72311e25f0dSDavid C Somayajulu u32 *o_mcp_resp, u32 *o_mcp_param); 72411e25f0dSDavid C Somayajulu 72511e25f0dSDavid C Somayajulu /** 72611e25f0dSDavid C Somayajulu * @brief - drains the nig, allowing completion to pass in case of pauses. 72711e25f0dSDavid C Somayajulu * (Should be called only from sleepable context) 72811e25f0dSDavid C Somayajulu * 72911e25f0dSDavid C Somayajulu * @param p_hwfn 73011e25f0dSDavid C Somayajulu * @param p_ptt 73111e25f0dSDavid C Somayajulu */ 73211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_drain(struct ecore_hwfn *p_hwfn, 73311e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt); 73411e25f0dSDavid C Somayajulu 7359efd0ba7SDavid C Somayajulu #ifndef LINUX_REMOVE 73611e25f0dSDavid C Somayajulu /** 73711e25f0dSDavid C Somayajulu * @brief - return the mcp function info of the hw function 73811e25f0dSDavid C Somayajulu * 73911e25f0dSDavid C Somayajulu * @param p_hwfn 74011e25f0dSDavid C Somayajulu * 74111e25f0dSDavid C Somayajulu * @returns pointer to mcp function info 74211e25f0dSDavid C Somayajulu */ 74311e25f0dSDavid C Somayajulu const struct ecore_mcp_function_info 74411e25f0dSDavid C Somayajulu *ecore_mcp_get_function_info(struct ecore_hwfn *p_hwfn); 7459efd0ba7SDavid C Somayajulu #endif 74611e25f0dSDavid C Somayajulu 7479efd0ba7SDavid C Somayajulu #ifndef LINUX_REMOVE 74811e25f0dSDavid C Somayajulu /** 74911e25f0dSDavid C Somayajulu * @brief - count number of function with a matching personality on engine. 75011e25f0dSDavid C Somayajulu * 75111e25f0dSDavid C Somayajulu * @param p_hwfn 75211e25f0dSDavid C Somayajulu * @param p_ptt 75311e25f0dSDavid C Somayajulu * @param personalities - a bitmask of ecore_pci_personality values 75411e25f0dSDavid C Somayajulu * 75511e25f0dSDavid C Somayajulu * @returns the count of all devices on engine whose personality match one of 75611e25f0dSDavid C Somayajulu * the bitsmasks. 75711e25f0dSDavid C Somayajulu */ 75811e25f0dSDavid C Somayajulu int ecore_mcp_get_personality_cnt(struct ecore_hwfn *p_hwfn, 75911e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 76011e25f0dSDavid C Somayajulu u32 personalities); 7619efd0ba7SDavid C Somayajulu #endif 76211e25f0dSDavid C Somayajulu 76311e25f0dSDavid C Somayajulu /** 76411e25f0dSDavid C Somayajulu * @brief Get the flash size value 76511e25f0dSDavid C Somayajulu * 76611e25f0dSDavid C Somayajulu * @param p_hwfn 76711e25f0dSDavid C Somayajulu * @param p_ptt 76811e25f0dSDavid C Somayajulu * @param p_flash_size - flash size in bytes to be filled. 76911e25f0dSDavid C Somayajulu * 77011e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 77111e25f0dSDavid C Somayajulu */ 77211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_flash_size(struct ecore_hwfn *p_hwfn, 77311e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 77411e25f0dSDavid C Somayajulu u32 *p_flash_size); 77511e25f0dSDavid C Somayajulu 77611e25f0dSDavid C Somayajulu /** 77711e25f0dSDavid C Somayajulu * @brief Send driver version to MFW 77811e25f0dSDavid C Somayajulu * 77911e25f0dSDavid C Somayajulu * @param p_hwfn 78011e25f0dSDavid C Somayajulu * @param p_ptt 78111e25f0dSDavid C Somayajulu * @param version - Version value 78211e25f0dSDavid C Somayajulu * @param name - Protocol driver name 78311e25f0dSDavid C Somayajulu * 78411e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 78511e25f0dSDavid C Somayajulu */ 78611e25f0dSDavid C Somayajulu enum _ecore_status_t 78711e25f0dSDavid C Somayajulu ecore_mcp_send_drv_version(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, 78811e25f0dSDavid C Somayajulu struct ecore_mcp_drv_version *p_ver); 78911e25f0dSDavid C Somayajulu 79011e25f0dSDavid C Somayajulu /** 79111e25f0dSDavid C Somayajulu * @brief Read the MFW process kill counter 79211e25f0dSDavid C Somayajulu * 79311e25f0dSDavid C Somayajulu * @param p_hwfn 79411e25f0dSDavid C Somayajulu * @param p_ptt 79511e25f0dSDavid C Somayajulu * 79611e25f0dSDavid C Somayajulu * @return u32 79711e25f0dSDavid C Somayajulu */ 79811e25f0dSDavid C Somayajulu u32 ecore_get_process_kill_counter(struct ecore_hwfn *p_hwfn, 79911e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt); 80011e25f0dSDavid C Somayajulu 80111e25f0dSDavid C Somayajulu /** 80211e25f0dSDavid C Somayajulu * @brief Trigger a recovery process 80311e25f0dSDavid C Somayajulu * 80411e25f0dSDavid C Somayajulu * @param p_hwfn 80511e25f0dSDavid C Somayajulu * @param p_ptt 80611e25f0dSDavid C Somayajulu * 80711e25f0dSDavid C Somayajulu * @return enum _ecore_status_t 80811e25f0dSDavid C Somayajulu */ 80911e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_start_recovery_process(struct ecore_hwfn *p_hwfn, 81011e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt); 81111e25f0dSDavid C Somayajulu 81211e25f0dSDavid C Somayajulu /** 813*217ec208SDavid C Somayajulu * @brief A recovery handler must call this function as its first step. 814*217ec208SDavid C Somayajulu * It is assumed that the handler is not run from an interrupt context. 815*217ec208SDavid C Somayajulu * 816*217ec208SDavid C Somayajulu * @param p_dev 817*217ec208SDavid C Somayajulu * @param p_ptt 818*217ec208SDavid C Somayajulu * 819*217ec208SDavid C Somayajulu * @return enum _ecore_status_t 820*217ec208SDavid C Somayajulu */ 821*217ec208SDavid C Somayajulu enum _ecore_status_t ecore_recovery_prolog(struct ecore_dev *p_dev); 822*217ec208SDavid C Somayajulu 823*217ec208SDavid C Somayajulu /** 82411e25f0dSDavid C Somayajulu * @brief Notify MFW about the change in base device properties 82511e25f0dSDavid C Somayajulu * 82611e25f0dSDavid C Somayajulu * @param p_hwfn 82711e25f0dSDavid C Somayajulu * @param p_ptt 82811e25f0dSDavid C Somayajulu * @param client - ecore client type 82911e25f0dSDavid C Somayajulu * 83011e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 83111e25f0dSDavid C Somayajulu */ 83211e25f0dSDavid C Somayajulu enum _ecore_status_t 83311e25f0dSDavid C Somayajulu ecore_mcp_ov_update_current_config(struct ecore_hwfn *p_hwfn, 83411e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 83511e25f0dSDavid C Somayajulu enum ecore_ov_client client); 83611e25f0dSDavid C Somayajulu 83711e25f0dSDavid C Somayajulu /** 83811e25f0dSDavid C Somayajulu * @brief Notify MFW about the driver state 83911e25f0dSDavid C Somayajulu * 84011e25f0dSDavid C Somayajulu * @param p_hwfn 84111e25f0dSDavid C Somayajulu * @param p_ptt 84211e25f0dSDavid C Somayajulu * @param drv_state - Driver state 84311e25f0dSDavid C Somayajulu * 84411e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 84511e25f0dSDavid C Somayajulu */ 84611e25f0dSDavid C Somayajulu enum _ecore_status_t 84711e25f0dSDavid C Somayajulu ecore_mcp_ov_update_driver_state(struct ecore_hwfn *p_hwfn, 84811e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 84911e25f0dSDavid C Somayajulu enum ecore_ov_driver_state drv_state); 85011e25f0dSDavid C Somayajulu 85111e25f0dSDavid C Somayajulu /** 85211e25f0dSDavid C Somayajulu * @brief Read NPIV settings form the MFW 85311e25f0dSDavid C Somayajulu * 85411e25f0dSDavid C Somayajulu * @param p_hwfn 85511e25f0dSDavid C Somayajulu * @param p_ptt 85611e25f0dSDavid C Somayajulu * @param p_table - Array to hold the FC NPIV data. Client need allocate the 85711e25f0dSDavid C Somayajulu * required buffer. The field 'count' specifies number of NPIV 85811e25f0dSDavid C Somayajulu * entries. A value of 0 means the table was not populated. 85911e25f0dSDavid C Somayajulu * 86011e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 86111e25f0dSDavid C Somayajulu */ 86211e25f0dSDavid C Somayajulu enum _ecore_status_t 86311e25f0dSDavid C Somayajulu ecore_mcp_ov_get_fc_npiv(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, 86411e25f0dSDavid C Somayajulu struct ecore_fc_npiv_tbl *p_table); 86511e25f0dSDavid C Somayajulu 86611e25f0dSDavid C Somayajulu /** 86711e25f0dSDavid C Somayajulu * @brief Send MTU size to MFW 86811e25f0dSDavid C Somayajulu * 86911e25f0dSDavid C Somayajulu * @param p_hwfn 87011e25f0dSDavid C Somayajulu * @param p_ptt 87111e25f0dSDavid C Somayajulu * @param mtu - MTU size 87211e25f0dSDavid C Somayajulu * 87311e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 87411e25f0dSDavid C Somayajulu */ 87511e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_ov_update_mtu(struct ecore_hwfn *p_hwfn, 87611e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, u16 mtu); 87711e25f0dSDavid C Somayajulu 87811e25f0dSDavid C Somayajulu /** 87911e25f0dSDavid C Somayajulu * @brief Send MAC address to MFW 88011e25f0dSDavid C Somayajulu * 88111e25f0dSDavid C Somayajulu * @param p_hwfn 88211e25f0dSDavid C Somayajulu * @param p_ptt 88311e25f0dSDavid C Somayajulu * @param mac - MAC address 88411e25f0dSDavid C Somayajulu * 88511e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 88611e25f0dSDavid C Somayajulu */ 88711e25f0dSDavid C Somayajulu enum _ecore_status_t 88811e25f0dSDavid C Somayajulu ecore_mcp_ov_update_mac(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, 88911e25f0dSDavid C Somayajulu u8 *mac); 89011e25f0dSDavid C Somayajulu 89111e25f0dSDavid C Somayajulu /** 89211e25f0dSDavid C Somayajulu * @brief Send WOL mode to MFW 89311e25f0dSDavid C Somayajulu * 89411e25f0dSDavid C Somayajulu * @param p_hwfn 89511e25f0dSDavid C Somayajulu * @param p_ptt 89611e25f0dSDavid C Somayajulu * @param wol - WOL mode 89711e25f0dSDavid C Somayajulu * 89811e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 89911e25f0dSDavid C Somayajulu */ 90011e25f0dSDavid C Somayajulu enum _ecore_status_t 90111e25f0dSDavid C Somayajulu ecore_mcp_ov_update_wol(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, 90211e25f0dSDavid C Somayajulu enum ecore_ov_wol wol); 90311e25f0dSDavid C Somayajulu 90411e25f0dSDavid C Somayajulu /** 90511e25f0dSDavid C Somayajulu * @brief Set LED status 90611e25f0dSDavid C Somayajulu * 90711e25f0dSDavid C Somayajulu * @param p_hwfn 90811e25f0dSDavid C Somayajulu * @param p_ptt 90911e25f0dSDavid C Somayajulu * @param mode - LED mode 91011e25f0dSDavid C Somayajulu * 91111e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 91211e25f0dSDavid C Somayajulu */ 91311e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_set_led(struct ecore_hwfn *p_hwfn, 91411e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 91511e25f0dSDavid C Somayajulu enum ecore_led_mode mode); 91611e25f0dSDavid C Somayajulu 91711e25f0dSDavid C Somayajulu /** 91811e25f0dSDavid C Somayajulu * @brief Set secure mode 91911e25f0dSDavid C Somayajulu * 92011e25f0dSDavid C Somayajulu * @param p_dev 92111e25f0dSDavid C Somayajulu * @param addr - nvm offset 92211e25f0dSDavid C Somayajulu * 92311e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 92411e25f0dSDavid C Somayajulu */ 92511e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_set_secure_mode(struct ecore_dev *p_dev, 92611e25f0dSDavid C Somayajulu u32 addr); 92711e25f0dSDavid C Somayajulu 92811e25f0dSDavid C Somayajulu /** 92911e25f0dSDavid C Somayajulu * @brief Write to phy 93011e25f0dSDavid C Somayajulu * 93111e25f0dSDavid C Somayajulu * @param p_dev 93211e25f0dSDavid C Somayajulu * @param addr - nvm offset 93311e25f0dSDavid C Somayajulu * @param cmd - nvm command 93411e25f0dSDavid C Somayajulu * @param p_buf - nvm write buffer 93511e25f0dSDavid C Somayajulu * @param len - buffer len 93611e25f0dSDavid C Somayajulu * 93711e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 93811e25f0dSDavid C Somayajulu */ 93911e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_phy_write(struct ecore_dev *p_dev, u32 cmd, 94011e25f0dSDavid C Somayajulu u32 addr, u8 *p_buf, u32 len); 94111e25f0dSDavid C Somayajulu 94211e25f0dSDavid C Somayajulu /** 94311e25f0dSDavid C Somayajulu * @brief Write to nvm 94411e25f0dSDavid C Somayajulu * 94511e25f0dSDavid C Somayajulu * @param p_dev 94611e25f0dSDavid C Somayajulu * @param addr - nvm offset 94711e25f0dSDavid C Somayajulu * @param cmd - nvm command 94811e25f0dSDavid C Somayajulu * @param p_buf - nvm write buffer 94911e25f0dSDavid C Somayajulu * @param len - buffer len 95011e25f0dSDavid C Somayajulu * 95111e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 95211e25f0dSDavid C Somayajulu */ 95311e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_write(struct ecore_dev *p_dev, u32 cmd, 95411e25f0dSDavid C Somayajulu u32 addr, u8 *p_buf, u32 len); 95511e25f0dSDavid C Somayajulu 95611e25f0dSDavid C Somayajulu /** 95711e25f0dSDavid C Somayajulu * @brief Put file begin 95811e25f0dSDavid C Somayajulu * 95911e25f0dSDavid C Somayajulu * @param p_dev 96011e25f0dSDavid C Somayajulu * @param addr - nvm offset 96111e25f0dSDavid C Somayajulu * 96211e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 96311e25f0dSDavid C Somayajulu */ 96411e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_put_file_begin(struct ecore_dev *p_dev, 96511e25f0dSDavid C Somayajulu u32 addr); 96611e25f0dSDavid C Somayajulu 96711e25f0dSDavid C Somayajulu /** 96811e25f0dSDavid C Somayajulu * @brief Delete file 96911e25f0dSDavid C Somayajulu * 97011e25f0dSDavid C Somayajulu * @param p_dev 97111e25f0dSDavid C Somayajulu * @param addr - nvm offset 97211e25f0dSDavid C Somayajulu * 97311e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 97411e25f0dSDavid C Somayajulu */ 97511e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_del_file(struct ecore_dev *p_dev, 97611e25f0dSDavid C Somayajulu u32 addr); 97711e25f0dSDavid C Somayajulu 97811e25f0dSDavid C Somayajulu /** 97911e25f0dSDavid C Somayajulu * @brief Check latest response 98011e25f0dSDavid C Somayajulu * 98111e25f0dSDavid C Somayajulu * @param p_dev 98211e25f0dSDavid C Somayajulu * @param p_buf - nvm write buffer 98311e25f0dSDavid C Somayajulu * 98411e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 98511e25f0dSDavid C Somayajulu */ 98611e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_resp(struct ecore_dev *p_dev, u8 *p_buf); 98711e25f0dSDavid C Somayajulu 98811e25f0dSDavid C Somayajulu /** 98911e25f0dSDavid C Somayajulu * @brief Read from phy 99011e25f0dSDavid C Somayajulu * 99111e25f0dSDavid C Somayajulu * @param p_dev 99211e25f0dSDavid C Somayajulu * @param addr - nvm offset 99311e25f0dSDavid C Somayajulu * @param cmd - nvm command 994*217ec208SDavid C Somayajulu * @param p_buf - nvm read buffer 99511e25f0dSDavid C Somayajulu * @param len - buffer len 99611e25f0dSDavid C Somayajulu * 99711e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 99811e25f0dSDavid C Somayajulu */ 99911e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_phy_read(struct ecore_dev *p_dev, u32 cmd, 100011e25f0dSDavid C Somayajulu u32 addr, u8 *p_buf, u32 len); 100111e25f0dSDavid C Somayajulu 100211e25f0dSDavid C Somayajulu /** 100311e25f0dSDavid C Somayajulu * @brief Read from nvm 100411e25f0dSDavid C Somayajulu * 100511e25f0dSDavid C Somayajulu * @param p_dev 100611e25f0dSDavid C Somayajulu * @param addr - nvm offset 1007*217ec208SDavid C Somayajulu * @param p_buf - nvm read buffer 100811e25f0dSDavid C Somayajulu * @param len - buffer len 100911e25f0dSDavid C Somayajulu * 101011e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 101111e25f0dSDavid C Somayajulu */ 101211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_read(struct ecore_dev *p_dev, u32 addr, 101311e25f0dSDavid C Somayajulu u8 *p_buf, u32 len); 101411e25f0dSDavid C Somayajulu 101511e25f0dSDavid C Somayajulu struct ecore_nvm_image_att { 101611e25f0dSDavid C Somayajulu u32 start_addr; 101711e25f0dSDavid C Somayajulu u32 length; 101811e25f0dSDavid C Somayajulu }; 101911e25f0dSDavid C Somayajulu 102011e25f0dSDavid C Somayajulu /** 102111e25f0dSDavid C Somayajulu * @brief Allows reading a whole nvram image 102211e25f0dSDavid C Somayajulu * 102311e25f0dSDavid C Somayajulu * @param p_hwfn 102411e25f0dSDavid C Somayajulu * @param p_ptt 102511e25f0dSDavid C Somayajulu * @param image_id - image to get attributes for 102611e25f0dSDavid C Somayajulu * @param p_image_att - image attributes structure into which to fill data 102711e25f0dSDavid C Somayajulu * 102811e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 102911e25f0dSDavid C Somayajulu */ 103011e25f0dSDavid C Somayajulu enum _ecore_status_t 103111e25f0dSDavid C Somayajulu ecore_mcp_get_nvm_image_att(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, 103211e25f0dSDavid C Somayajulu enum ecore_nvm_images image_id, 103311e25f0dSDavid C Somayajulu struct ecore_nvm_image_att *p_image_att); 103411e25f0dSDavid C Somayajulu 103511e25f0dSDavid C Somayajulu /** 103611e25f0dSDavid C Somayajulu * @brief Allows reading a whole nvram image 103711e25f0dSDavid C Somayajulu * 103811e25f0dSDavid C Somayajulu * @param p_hwfn 103911e25f0dSDavid C Somayajulu * @param p_ptt 104011e25f0dSDavid C Somayajulu * @param image_id - image requested for reading 104111e25f0dSDavid C Somayajulu * @param p_buffer - allocated buffer into which to fill data 104211e25f0dSDavid C Somayajulu * @param buffer_len - length of the allocated buffer. 104311e25f0dSDavid C Somayajulu * 104411e25f0dSDavid C Somayajulu * @return ECORE_SUCCESS iff p_buffer now contains the nvram image. 104511e25f0dSDavid C Somayajulu */ 104611e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_nvm_image(struct ecore_hwfn *p_hwfn, 104711e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 104811e25f0dSDavid C Somayajulu enum ecore_nvm_images image_id, 104911e25f0dSDavid C Somayajulu u8 *p_buffer, u32 buffer_len); 105011e25f0dSDavid C Somayajulu 105111e25f0dSDavid C Somayajulu /** 10529efd0ba7SDavid C Somayajulu * @brief - Sends an NVM write command request to the MFW with 10539efd0ba7SDavid C Somayajulu * payload. 10549efd0ba7SDavid C Somayajulu * 10559efd0ba7SDavid C Somayajulu * @param p_hwfn 10569efd0ba7SDavid C Somayajulu * @param p_ptt 10579efd0ba7SDavid C Somayajulu * @param cmd - Command: Either DRV_MSG_CODE_NVM_WRITE_NVRAM or 10589efd0ba7SDavid C Somayajulu * DRV_MSG_CODE_NVM_PUT_FILE_DATA 10599efd0ba7SDavid C Somayajulu * @param param - [0:23] - Offset [24:31] - Size 10609efd0ba7SDavid C Somayajulu * @param o_mcp_resp - MCP response 10619efd0ba7SDavid C Somayajulu * @param o_mcp_param - MCP response param 10629efd0ba7SDavid C Somayajulu * @param i_txn_size - Buffer size 10639efd0ba7SDavid C Somayajulu * @param i_buf - Pointer to the buffer 10649efd0ba7SDavid C Somayajulu * 10659efd0ba7SDavid C Somayajulu * @param return ECORE_SUCCESS upon success. 10669efd0ba7SDavid C Somayajulu */ 10679efd0ba7SDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_wr_cmd(struct ecore_hwfn *p_hwfn, 10689efd0ba7SDavid C Somayajulu struct ecore_ptt *p_ptt, 10699efd0ba7SDavid C Somayajulu u32 cmd, 10709efd0ba7SDavid C Somayajulu u32 param, 10719efd0ba7SDavid C Somayajulu u32 *o_mcp_resp, 10729efd0ba7SDavid C Somayajulu u32 *o_mcp_param, 10739efd0ba7SDavid C Somayajulu u32 i_txn_size, 10749efd0ba7SDavid C Somayajulu u32 *i_buf); 10759efd0ba7SDavid C Somayajulu 10769efd0ba7SDavid C Somayajulu /** 10779efd0ba7SDavid C Somayajulu * @brief - Sends an NVM read command request to the MFW to get 10789efd0ba7SDavid C Somayajulu * a buffer. 10799efd0ba7SDavid C Somayajulu * 10809efd0ba7SDavid C Somayajulu * @param p_hwfn 10819efd0ba7SDavid C Somayajulu * @param p_ptt 10829efd0ba7SDavid C Somayajulu * @param cmd - Command: DRV_MSG_CODE_NVM_GET_FILE_DATA or 10839efd0ba7SDavid C Somayajulu * DRV_MSG_CODE_NVM_READ_NVRAM commands 10849efd0ba7SDavid C Somayajulu * @param param - [0:23] - Offset [24:31] - Size 10859efd0ba7SDavid C Somayajulu * @param o_mcp_resp - MCP response 10869efd0ba7SDavid C Somayajulu * @param o_mcp_param - MCP response param 10879efd0ba7SDavid C Somayajulu * @param o_txn_size - Buffer size output 10889efd0ba7SDavid C Somayajulu * @param o_buf - Pointer to the buffer returned by the MFW. 10899efd0ba7SDavid C Somayajulu * 10909efd0ba7SDavid C Somayajulu * @param return ECORE_SUCCESS upon success. 10919efd0ba7SDavid C Somayajulu */ 10929efd0ba7SDavid C Somayajulu enum _ecore_status_t ecore_mcp_nvm_rd_cmd(struct ecore_hwfn *p_hwfn, 10939efd0ba7SDavid C Somayajulu struct ecore_ptt *p_ptt, 10949efd0ba7SDavid C Somayajulu u32 cmd, 10959efd0ba7SDavid C Somayajulu u32 param, 10969efd0ba7SDavid C Somayajulu u32 *o_mcp_resp, 10979efd0ba7SDavid C Somayajulu u32 *o_mcp_param, 10989efd0ba7SDavid C Somayajulu u32 *o_txn_size, 10999efd0ba7SDavid C Somayajulu u32 *o_buf); 11009efd0ba7SDavid C Somayajulu 11019efd0ba7SDavid C Somayajulu /** 110211e25f0dSDavid C Somayajulu * @brief Read from sfp 110311e25f0dSDavid C Somayajulu * 110411e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 110511e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 110611e25f0dSDavid C Somayajulu * @param port - transceiver port 110711e25f0dSDavid C Somayajulu * @param addr - I2C address 110811e25f0dSDavid C Somayajulu * @param offset - offset in sfp 110911e25f0dSDavid C Somayajulu * @param len - buffer length 111011e25f0dSDavid C Somayajulu * @param p_buf - buffer to read into 111111e25f0dSDavid C Somayajulu * 111211e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 111311e25f0dSDavid C Somayajulu */ 111411e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_phy_sfp_read(struct ecore_hwfn *p_hwfn, 111511e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 111611e25f0dSDavid C Somayajulu u32 port, u32 addr, u32 offset, 111711e25f0dSDavid C Somayajulu u32 len, u8 *p_buf); 111811e25f0dSDavid C Somayajulu 111911e25f0dSDavid C Somayajulu /** 112011e25f0dSDavid C Somayajulu * @brief Write to sfp 112111e25f0dSDavid C Somayajulu * 112211e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 112311e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 112411e25f0dSDavid C Somayajulu * @param port - transceiver port 112511e25f0dSDavid C Somayajulu * @param addr - I2C address 112611e25f0dSDavid C Somayajulu * @param offset - offset in sfp 112711e25f0dSDavid C Somayajulu * @param len - buffer length 112811e25f0dSDavid C Somayajulu * @param p_buf - buffer to write from 112911e25f0dSDavid C Somayajulu * 113011e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 113111e25f0dSDavid C Somayajulu */ 113211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_phy_sfp_write(struct ecore_hwfn *p_hwfn, 113311e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 113411e25f0dSDavid C Somayajulu u32 port, u32 addr, u32 offset, 113511e25f0dSDavid C Somayajulu u32 len, u8 *p_buf); 113611e25f0dSDavid C Somayajulu 113711e25f0dSDavid C Somayajulu /** 113811e25f0dSDavid C Somayajulu * @brief Gpio read 113911e25f0dSDavid C Somayajulu * 114011e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 114111e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 114211e25f0dSDavid C Somayajulu * @param gpio - gpio number 114311e25f0dSDavid C Somayajulu * @param gpio_val - value read from gpio 114411e25f0dSDavid C Somayajulu * 114511e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 114611e25f0dSDavid C Somayajulu */ 114711e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_gpio_read(struct ecore_hwfn *p_hwfn, 114811e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 114911e25f0dSDavid C Somayajulu u16 gpio, u32 *gpio_val); 115011e25f0dSDavid C Somayajulu 115111e25f0dSDavid C Somayajulu /** 115211e25f0dSDavid C Somayajulu * @brief Gpio write 115311e25f0dSDavid C Somayajulu * 115411e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 115511e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 115611e25f0dSDavid C Somayajulu * @param gpio - gpio number 115711e25f0dSDavid C Somayajulu * @param gpio_val - value to write to gpio 115811e25f0dSDavid C Somayajulu * 115911e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 116011e25f0dSDavid C Somayajulu */ 116111e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_gpio_write(struct ecore_hwfn *p_hwfn, 116211e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 116311e25f0dSDavid C Somayajulu u16 gpio, u16 gpio_val); 116411e25f0dSDavid C Somayajulu 116511e25f0dSDavid C Somayajulu /** 116611e25f0dSDavid C Somayajulu * @brief Gpio get information 116711e25f0dSDavid C Somayajulu * 116811e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 116911e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 117011e25f0dSDavid C Somayajulu * @param gpio - gpio number 117111e25f0dSDavid C Somayajulu * @param gpio_direction - gpio is output (0) or input (1) 117211e25f0dSDavid C Somayajulu * @param gpio_ctrl - gpio control is uninitialized (0), 117311e25f0dSDavid C Somayajulu * path 0 (1), path 1 (2) or shared(3) 117411e25f0dSDavid C Somayajulu * 117511e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 117611e25f0dSDavid C Somayajulu */ 117711e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_gpio_info(struct ecore_hwfn *p_hwfn, 117811e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 117911e25f0dSDavid C Somayajulu u16 gpio, u32 *gpio_direction, 118011e25f0dSDavid C Somayajulu u32 *gpio_ctrl); 118111e25f0dSDavid C Somayajulu 118211e25f0dSDavid C Somayajulu /** 118311e25f0dSDavid C Somayajulu * @brief Bist register test 118411e25f0dSDavid C Somayajulu * 118511e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 118611e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 118711e25f0dSDavid C Somayajulu * 118811e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 118911e25f0dSDavid C Somayajulu */ 119011e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_bist_register_test(struct ecore_hwfn *p_hwfn, 119111e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt); 119211e25f0dSDavid C Somayajulu 119311e25f0dSDavid C Somayajulu /** 119411e25f0dSDavid C Somayajulu * @brief Bist clock test 119511e25f0dSDavid C Somayajulu * 119611e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 119711e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 119811e25f0dSDavid C Somayajulu * 119911e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 120011e25f0dSDavid C Somayajulu */ 120111e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_bist_clock_test(struct ecore_hwfn *p_hwfn, 120211e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt); 120311e25f0dSDavid C Somayajulu 120411e25f0dSDavid C Somayajulu /** 120511e25f0dSDavid C Somayajulu * @brief Bist nvm test - get number of images 120611e25f0dSDavid C Somayajulu * 120711e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 120811e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 120911e25f0dSDavid C Somayajulu * @param num_images - number of images if operation was 121011e25f0dSDavid C Somayajulu * successful. 0 if not. 121111e25f0dSDavid C Somayajulu * 121211e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 121311e25f0dSDavid C Somayajulu */ 121411e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_bist_nvm_test_get_num_images(struct ecore_hwfn *p_hwfn, 121511e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 121611e25f0dSDavid C Somayajulu u32 *num_images); 121711e25f0dSDavid C Somayajulu 121811e25f0dSDavid C Somayajulu /** 121911e25f0dSDavid C Somayajulu * @brief Bist nvm test - get image attributes by index 122011e25f0dSDavid C Somayajulu * 122111e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 122211e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 122311e25f0dSDavid C Somayajulu * @param p_image_att - Attributes of image 122411e25f0dSDavid C Somayajulu * @param image_index - Index of image to get information for 122511e25f0dSDavid C Somayajulu * 122611e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 122711e25f0dSDavid C Somayajulu */ 122811e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_bist_nvm_test_get_image_att(struct ecore_hwfn *p_hwfn, 122911e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 123011e25f0dSDavid C Somayajulu struct bist_nvm_image_att *p_image_att, 123111e25f0dSDavid C Somayajulu u32 image_index); 123211e25f0dSDavid C Somayajulu 123311e25f0dSDavid C Somayajulu /** 123411e25f0dSDavid C Somayajulu * @brief ecore_mcp_get_temperature_info - get the status of the temperature 123511e25f0dSDavid C Somayajulu * sensors 123611e25f0dSDavid C Somayajulu * 123711e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 123811e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 123911e25f0dSDavid C Somayajulu * @param p_temp_status - A pointer to an ecore_temperature_info structure to 124011e25f0dSDavid C Somayajulu * be filled with the temperature data 124111e25f0dSDavid C Somayajulu * 124211e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 124311e25f0dSDavid C Somayajulu */ 124411e25f0dSDavid C Somayajulu enum _ecore_status_t 124511e25f0dSDavid C Somayajulu ecore_mcp_get_temperature_info(struct ecore_hwfn *p_hwfn, 124611e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 124711e25f0dSDavid C Somayajulu struct ecore_temperature_info *p_temp_info); 124811e25f0dSDavid C Somayajulu 124911e25f0dSDavid C Somayajulu /** 125011e25f0dSDavid C Somayajulu * @brief Get MBA versions - get MBA sub images versions 125111e25f0dSDavid C Somayajulu * 125211e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 125311e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 125411e25f0dSDavid C Somayajulu * @param p_mba_vers - MBA versions array to fill 125511e25f0dSDavid C Somayajulu * 125611e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 125711e25f0dSDavid C Somayajulu */ 125811e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_mba_versions( 125911e25f0dSDavid C Somayajulu struct ecore_hwfn *p_hwfn, 126011e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 126111e25f0dSDavid C Somayajulu struct ecore_mba_vers *p_mba_vers); 126211e25f0dSDavid C Somayajulu 126311e25f0dSDavid C Somayajulu /** 126411e25f0dSDavid C Somayajulu * @brief Count memory ecc events 126511e25f0dSDavid C Somayajulu * 126611e25f0dSDavid C Somayajulu * @param p_hwfn - hw function 126711e25f0dSDavid C Somayajulu * @param p_ptt - PTT required for register access 126811e25f0dSDavid C Somayajulu * @param num_events - number of memory ecc events 126911e25f0dSDavid C Somayajulu * 127011e25f0dSDavid C Somayajulu * @return enum _ecore_status_t - ECORE_SUCCESS - operation was successful. 127111e25f0dSDavid C Somayajulu */ 127211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_mem_ecc_events(struct ecore_hwfn *p_hwfn, 127311e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 127411e25f0dSDavid C Somayajulu u64 *num_events); 127511e25f0dSDavid C Somayajulu 127611e25f0dSDavid C Somayajulu struct ecore_mdump_info { 127711e25f0dSDavid C Somayajulu u32 reason; 127811e25f0dSDavid C Somayajulu u32 version; 127911e25f0dSDavid C Somayajulu u32 config; 128011e25f0dSDavid C Somayajulu u32 epoch; 128111e25f0dSDavid C Somayajulu u32 num_of_logs; 128211e25f0dSDavid C Somayajulu u32 valid_logs; 128311e25f0dSDavid C Somayajulu }; 128411e25f0dSDavid C Somayajulu 128511e25f0dSDavid C Somayajulu /** 128611e25f0dSDavid C Somayajulu * @brief - Gets the MFW crash dump configuration and logs info. 128711e25f0dSDavid C Somayajulu * 128811e25f0dSDavid C Somayajulu * @param p_hwfn 128911e25f0dSDavid C Somayajulu * @param p_ptt 129011e25f0dSDavid C Somayajulu * @param p_mdump_info 129111e25f0dSDavid C Somayajulu * 129211e25f0dSDavid C Somayajulu * @param return ECORE_SUCCESS upon success. 129311e25f0dSDavid C Somayajulu */ 129411e25f0dSDavid C Somayajulu enum _ecore_status_t 129511e25f0dSDavid C Somayajulu ecore_mcp_mdump_get_info(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, 129611e25f0dSDavid C Somayajulu struct ecore_mdump_info *p_mdump_info); 129711e25f0dSDavid C Somayajulu 129811e25f0dSDavid C Somayajulu /** 129911e25f0dSDavid C Somayajulu * @brief - Clears the MFW crash dump logs. 130011e25f0dSDavid C Somayajulu * 130111e25f0dSDavid C Somayajulu * @param p_hwfn 130211e25f0dSDavid C Somayajulu * @param p_ptt 130311e25f0dSDavid C Somayajulu * 130411e25f0dSDavid C Somayajulu * @param return ECORE_SUCCESS upon success. 130511e25f0dSDavid C Somayajulu */ 130611e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_mdump_clear_logs(struct ecore_hwfn *p_hwfn, 130711e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt); 130811e25f0dSDavid C Somayajulu 130911e25f0dSDavid C Somayajulu /** 13109efd0ba7SDavid C Somayajulu * @brief - Clear the mdump retained data. 13119efd0ba7SDavid C Somayajulu * 13129efd0ba7SDavid C Somayajulu * @param p_hwfn 13139efd0ba7SDavid C Somayajulu * @param p_ptt 13149efd0ba7SDavid C Somayajulu * 13159efd0ba7SDavid C Somayajulu * @param return ECORE_SUCCESS upon success. 13169efd0ba7SDavid C Somayajulu */ 13179efd0ba7SDavid C Somayajulu enum _ecore_status_t ecore_mcp_mdump_clr_retain(struct ecore_hwfn *p_hwfn, 13189efd0ba7SDavid C Somayajulu struct ecore_ptt *p_ptt); 13199efd0ba7SDavid C Somayajulu 13209efd0ba7SDavid C Somayajulu /** 132111e25f0dSDavid C Somayajulu * @brief - Gets the LLDP MAC address. 132211e25f0dSDavid C Somayajulu * 132311e25f0dSDavid C Somayajulu * @param p_hwfn 132411e25f0dSDavid C Somayajulu * @param p_ptt 132511e25f0dSDavid C Somayajulu * @param lldp_mac_addr - a buffer to be filled with the read LLDP MAC address. 132611e25f0dSDavid C Somayajulu * 132711e25f0dSDavid C Somayajulu * @param return ECORE_SUCCESS upon success. 132811e25f0dSDavid C Somayajulu */ 132911e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_get_lldp_mac(struct ecore_hwfn *p_hwfn, 133011e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 133111e25f0dSDavid C Somayajulu u8 lldp_mac_addr[ETH_ALEN]); 133211e25f0dSDavid C Somayajulu 133311e25f0dSDavid C Somayajulu /** 133411e25f0dSDavid C Somayajulu * @brief - Sets the LLDP MAC address. 133511e25f0dSDavid C Somayajulu * 133611e25f0dSDavid C Somayajulu * @param p_hwfn 133711e25f0dSDavid C Somayajulu * @param p_ptt 133811e25f0dSDavid C Somayajulu * @param lldp_mac_addr - a buffer with the LLDP MAC address to be written. 133911e25f0dSDavid C Somayajulu * 134011e25f0dSDavid C Somayajulu * @param return ECORE_SUCCESS upon success. 134111e25f0dSDavid C Somayajulu */ 134211e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mcp_set_lldp_mac(struct ecore_hwfn *p_hwfn, 134311e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, 134411e25f0dSDavid C Somayajulu u8 lldp_mac_addr[ETH_ALEN]); 134511e25f0dSDavid C Somayajulu 134611e25f0dSDavid C Somayajulu /** 134711e25f0dSDavid C Somayajulu * @brief - Processes the TLV request from MFW i.e., get the required TLV info 134811e25f0dSDavid C Somayajulu * from the ecore client and send it to the MFW. 134911e25f0dSDavid C Somayajulu * 135011e25f0dSDavid C Somayajulu * @param p_hwfn 135111e25f0dSDavid C Somayajulu * @param p_ptt 135211e25f0dSDavid C Somayajulu * 135311e25f0dSDavid C Somayajulu * @param return ECORE_SUCCESS upon success. 135411e25f0dSDavid C Somayajulu */ 135511e25f0dSDavid C Somayajulu enum _ecore_status_t ecore_mfw_process_tlv_req(struct ecore_hwfn *p_hwfn, 135611e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt); 135711e25f0dSDavid C Somayajulu 135811e25f0dSDavid C Somayajulu /** 135911e25f0dSDavid C Somayajulu * @brief - Update fcoe vlan id value to the MFW. 136011e25f0dSDavid C Somayajulu * 136111e25f0dSDavid C Somayajulu * @param p_hwfn 136211e25f0dSDavid C Somayajulu * @param p_ptt 136311e25f0dSDavid C Somayajulu * @param vlan - fcoe vlan 136411e25f0dSDavid C Somayajulu * 136511e25f0dSDavid C Somayajulu * @param return ECORE_SUCCESS upon success. 136611e25f0dSDavid C Somayajulu */ 136711e25f0dSDavid C Somayajulu enum _ecore_status_t 136811e25f0dSDavid C Somayajulu ecore_mcp_update_fcoe_cvid(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, 136911e25f0dSDavid C Somayajulu u16 vlan); 137011e25f0dSDavid C Somayajulu 137111e25f0dSDavid C Somayajulu /** 137211e25f0dSDavid C Somayajulu * @brief - Update fabric name (wwn) value to the MFW. 137311e25f0dSDavid C Somayajulu * 137411e25f0dSDavid C Somayajulu * @param p_hwfn 137511e25f0dSDavid C Somayajulu * @param p_ptt 137611e25f0dSDavid C Somayajulu * @param wwn - world wide name 137711e25f0dSDavid C Somayajulu * 137811e25f0dSDavid C Somayajulu * @param return ECORE_SUCCESS upon success. 137911e25f0dSDavid C Somayajulu */ 138011e25f0dSDavid C Somayajulu enum _ecore_status_t 138111e25f0dSDavid C Somayajulu ecore_mcp_update_fcoe_fabric_name(struct ecore_hwfn *p_hwfn, 138211e25f0dSDavid C Somayajulu struct ecore_ptt *p_ptt, u8 *wwn); 1383*217ec208SDavid C Somayajulu 1384*217ec208SDavid C Somayajulu /** 1385*217ec208SDavid C Somayajulu * @brief - Return whether management firmware support smart AN 1386*217ec208SDavid C Somayajulu * 1387*217ec208SDavid C Somayajulu * @param p_hwfn 1388*217ec208SDavid C Somayajulu * 1389*217ec208SDavid C Somayajulu * @return bool - true if feature is supported. 1390*217ec208SDavid C Somayajulu */ 1391*217ec208SDavid C Somayajulu bool ecore_mcp_is_smart_an_supported(struct ecore_hwfn *p_hwfn); 1392*217ec208SDavid C Somayajulu 1393*217ec208SDavid C Somayajulu /** 1394*217ec208SDavid C Somayajulu * @brief - Return whether management firmware support setting of 1395*217ec208SDavid C Somayajulu * PCI relaxed ordering. 1396*217ec208SDavid C Somayajulu * 1397*217ec208SDavid C Somayajulu * @param p_hwfn 1398*217ec208SDavid C Somayajulu * 1399*217ec208SDavid C Somayajulu * @return bool - true if feature is supported. 1400*217ec208SDavid C Somayajulu */ 1401*217ec208SDavid C Somayajulu bool ecore_mcp_rlx_odr_supported(struct ecore_hwfn *p_hwfn); 140211e25f0dSDavid C Somayajulu #endif 1403