Jesse Brandeburg | 56a62fc | 2013-09-11 08:40:12 +0000 | [diff] [blame] | 1 | /******************************************************************************* |
| 2 | * |
| 3 | * Intel Ethernet Controller XL710 Family Linux Driver |
| 4 | * Copyright(c) 2013 Intel Corporation. |
| 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms and conditions of the GNU General Public License, |
| 8 | * version 2, as published by the Free Software Foundation. |
| 9 | * |
| 10 | * This program is distributed in the hope it will be useful, but WITHOUT |
| 11 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| 13 | * more details. |
| 14 | * |
| 15 | * You should have received a copy of the GNU General Public License along with |
| 16 | * this program; if not, write to the Free Software Foundation, Inc., |
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
| 18 | * |
| 19 | * The full GNU General Public License is included in this distribution in |
| 20 | * the file called "COPYING". |
| 21 | * |
| 22 | * Contact Information: |
| 23 | * e1000-devel Mailing List <e1000-devel@lists.sourceforge.net> |
| 24 | * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 |
| 25 | * |
| 26 | ******************************************************************************/ |
| 27 | |
| 28 | #ifndef _I40E_PROTOTYPE_H_ |
| 29 | #define _I40E_PROTOTYPE_H_ |
| 30 | |
| 31 | #include "i40e_type.h" |
| 32 | #include "i40e_alloc.h" |
| 33 | #include "i40e_virtchnl.h" |
| 34 | |
| 35 | /* Prototypes for shared code functions that are not in |
| 36 | * the standard function pointer structures. These are |
| 37 | * mostly because they are needed even before the init |
| 38 | * has happened and will assist in the early SW and FW |
| 39 | * setup. |
| 40 | */ |
| 41 | |
| 42 | /* adminq functions */ |
| 43 | i40e_status i40e_init_adminq(struct i40e_hw *hw); |
| 44 | i40e_status i40e_shutdown_adminq(struct i40e_hw *hw); |
| 45 | void i40e_adminq_init_ring_data(struct i40e_hw *hw); |
| 46 | i40e_status i40e_clean_arq_element(struct i40e_hw *hw, |
| 47 | struct i40e_arq_event_info *e, |
| 48 | u16 *events_pending); |
| 49 | i40e_status i40e_asq_send_command(struct i40e_hw *hw, |
| 50 | struct i40e_aq_desc *desc, |
| 51 | void *buff, /* can be NULL */ |
| 52 | u16 buff_size, |
| 53 | struct i40e_asq_cmd_details *cmd_details); |
Jesse Brandeburg | 56a62fc | 2013-09-11 08:40:12 +0000 | [diff] [blame] | 54 | |
| 55 | /* debug function for adminq */ |
| 56 | void i40e_debug_aq(struct i40e_hw *hw, |
| 57 | enum i40e_debug_mask mask, |
| 58 | void *desc, |
| 59 | void *buffer); |
| 60 | |
| 61 | void i40e_idle_aq(struct i40e_hw *hw); |
Jesse Brandeburg | 56a62fc | 2013-09-11 08:40:12 +0000 | [diff] [blame] | 62 | |
| 63 | u32 i40e_led_get(struct i40e_hw *hw); |
| 64 | void i40e_led_set(struct i40e_hw *hw, u32 mode); |
| 65 | |
| 66 | /* admin send queue commands */ |
| 67 | |
| 68 | i40e_status i40e_aq_get_firmware_version(struct i40e_hw *hw, |
| 69 | u16 *fw_major_version, u16 *fw_minor_version, |
| 70 | u16 *api_major_version, u16 *api_minor_version, |
| 71 | struct i40e_asq_cmd_details *cmd_details); |
| 72 | i40e_status i40e_aq_queue_shutdown(struct i40e_hw *hw, |
| 73 | bool unloading); |
| 74 | i40e_status i40e_aq_set_phy_reset(struct i40e_hw *hw, |
| 75 | struct i40e_asq_cmd_details *cmd_details); |
| 76 | i40e_status i40e_aq_set_default_vsi(struct i40e_hw *hw, u16 vsi_id, |
| 77 | struct i40e_asq_cmd_details *cmd_details); |
| 78 | i40e_status i40e_aq_set_link_restart_an(struct i40e_hw *hw, |
| 79 | struct i40e_asq_cmd_details *cmd_details); |
| 80 | i40e_status i40e_aq_get_link_info(struct i40e_hw *hw, |
| 81 | bool enable_lse, struct i40e_link_status *link, |
| 82 | struct i40e_asq_cmd_details *cmd_details); |
| 83 | i40e_status i40e_aq_set_local_advt_reg(struct i40e_hw *hw, |
| 84 | u64 advt_reg, |
| 85 | struct i40e_asq_cmd_details *cmd_details); |
| 86 | i40e_status i40e_aq_send_driver_version(struct i40e_hw *hw, |
| 87 | struct i40e_driver_version *dv, |
| 88 | struct i40e_asq_cmd_details *cmd_details); |
| 89 | i40e_status i40e_aq_add_vsi(struct i40e_hw *hw, |
| 90 | struct i40e_vsi_context *vsi_ctx, |
| 91 | struct i40e_asq_cmd_details *cmd_details); |
| 92 | i40e_status i40e_aq_set_vsi_broadcast(struct i40e_hw *hw, |
| 93 | u16 vsi_id, bool set_filter, |
| 94 | struct i40e_asq_cmd_details *cmd_details); |
| 95 | i40e_status i40e_aq_set_vsi_unicast_promiscuous(struct i40e_hw *hw, |
| 96 | u16 vsi_id, bool set, struct i40e_asq_cmd_details *cmd_details); |
| 97 | i40e_status i40e_aq_set_vsi_multicast_promiscuous(struct i40e_hw *hw, |
| 98 | u16 vsi_id, bool set, struct i40e_asq_cmd_details *cmd_details); |
| 99 | i40e_status i40e_aq_get_vsi_params(struct i40e_hw *hw, |
| 100 | struct i40e_vsi_context *vsi_ctx, |
| 101 | struct i40e_asq_cmd_details *cmd_details); |
| 102 | i40e_status i40e_aq_update_vsi_params(struct i40e_hw *hw, |
| 103 | struct i40e_vsi_context *vsi_ctx, |
| 104 | struct i40e_asq_cmd_details *cmd_details); |
| 105 | i40e_status i40e_aq_add_veb(struct i40e_hw *hw, u16 uplink_seid, |
| 106 | u16 downlink_seid, u8 enabled_tc, |
Kevin Scott | e1c51b95 | 2013-11-20 10:02:51 +0000 | [diff] [blame] | 107 | bool default_port, bool enable_l2_filtering, |
| 108 | u16 *pveb_seid, |
Jesse Brandeburg | 56a62fc | 2013-09-11 08:40:12 +0000 | [diff] [blame] | 109 | struct i40e_asq_cmd_details *cmd_details); |
| 110 | i40e_status i40e_aq_get_veb_parameters(struct i40e_hw *hw, |
| 111 | u16 veb_seid, u16 *switch_id, bool *floating, |
| 112 | u16 *statistic_index, u16 *vebs_used, |
| 113 | u16 *vebs_free, |
| 114 | struct i40e_asq_cmd_details *cmd_details); |
| 115 | i40e_status i40e_aq_add_macvlan(struct i40e_hw *hw, u16 vsi_id, |
| 116 | struct i40e_aqc_add_macvlan_element_data *mv_list, |
| 117 | u16 count, struct i40e_asq_cmd_details *cmd_details); |
| 118 | i40e_status i40e_aq_remove_macvlan(struct i40e_hw *hw, u16 vsi_id, |
| 119 | struct i40e_aqc_remove_macvlan_element_data *mv_list, |
| 120 | u16 count, struct i40e_asq_cmd_details *cmd_details); |
Jesse Brandeburg | 56a62fc | 2013-09-11 08:40:12 +0000 | [diff] [blame] | 121 | i40e_status i40e_aq_send_msg_to_vf(struct i40e_hw *hw, u16 vfid, |
| 122 | u32 v_opcode, u32 v_retval, u8 *msg, u16 msglen, |
| 123 | struct i40e_asq_cmd_details *cmd_details); |
| 124 | i40e_status i40e_aq_get_switch_config(struct i40e_hw *hw, |
| 125 | struct i40e_aqc_get_switch_config_resp *buf, |
| 126 | u16 buf_size, u16 *start_seid, |
| 127 | struct i40e_asq_cmd_details *cmd_details); |
| 128 | i40e_status i40e_aq_request_resource(struct i40e_hw *hw, |
| 129 | enum i40e_aq_resources_ids resource, |
| 130 | enum i40e_aq_resource_access_type access, |
| 131 | u8 sdp_number, u64 *timeout, |
| 132 | struct i40e_asq_cmd_details *cmd_details); |
| 133 | i40e_status i40e_aq_release_resource(struct i40e_hw *hw, |
| 134 | enum i40e_aq_resources_ids resource, |
| 135 | u8 sdp_number, |
| 136 | struct i40e_asq_cmd_details *cmd_details); |
| 137 | i40e_status i40e_aq_read_nvm(struct i40e_hw *hw, u8 module_pointer, |
| 138 | u32 offset, u16 length, void *data, |
| 139 | bool last_command, |
| 140 | struct i40e_asq_cmd_details *cmd_details); |
| 141 | i40e_status i40e_aq_discover_capabilities(struct i40e_hw *hw, |
| 142 | void *buff, u16 buff_size, u16 *data_size, |
| 143 | enum i40e_admin_queue_opc list_type_opc, |
| 144 | struct i40e_asq_cmd_details *cmd_details); |
| 145 | i40e_status i40e_aq_update_nvm(struct i40e_hw *hw, u8 module_pointer, |
| 146 | u32 offset, u16 length, void *data, |
| 147 | bool last_command, |
| 148 | struct i40e_asq_cmd_details *cmd_details); |
| 149 | i40e_status i40e_aq_get_lldp_mib(struct i40e_hw *hw, u8 bridge_type, |
| 150 | u8 mib_type, void *buff, u16 buff_size, |
| 151 | u16 *local_len, u16 *remote_len, |
| 152 | struct i40e_asq_cmd_details *cmd_details); |
| 153 | i40e_status i40e_aq_cfg_lldp_mib_change_event(struct i40e_hw *hw, |
| 154 | bool enable_update, |
| 155 | struct i40e_asq_cmd_details *cmd_details); |
| 156 | i40e_status i40e_aq_stop_lldp(struct i40e_hw *hw, bool shutdown_agent, |
| 157 | struct i40e_asq_cmd_details *cmd_details); |
| 158 | i40e_status i40e_aq_start_lldp(struct i40e_hw *hw, |
| 159 | struct i40e_asq_cmd_details *cmd_details); |
| 160 | i40e_status i40e_aq_delete_element(struct i40e_hw *hw, u16 seid, |
| 161 | struct i40e_asq_cmd_details *cmd_details); |
| 162 | i40e_status i40e_aq_mac_address_write(struct i40e_hw *hw, |
| 163 | u16 flags, u8 *mac_addr, |
| 164 | struct i40e_asq_cmd_details *cmd_details); |
| 165 | i40e_status i40e_aq_set_hmc_resource_profile(struct i40e_hw *hw, |
| 166 | enum i40e_aq_hmc_profile profile, |
| 167 | u8 pe_vf_enabled_count, |
| 168 | struct i40e_asq_cmd_details *cmd_details); |
| 169 | i40e_status i40e_aq_config_switch_comp_bw_limit(struct i40e_hw *hw, |
| 170 | u16 seid, u16 credit, u8 max_bw, |
| 171 | struct i40e_asq_cmd_details *cmd_details); |
| 172 | i40e_status i40e_aq_config_vsi_tc_bw(struct i40e_hw *hw, u16 seid, |
| 173 | struct i40e_aqc_configure_vsi_tc_bw_data *bw_data, |
| 174 | struct i40e_asq_cmd_details *cmd_details); |
| 175 | i40e_status i40e_aq_query_vsi_bw_config(struct i40e_hw *hw, |
| 176 | u16 seid, |
| 177 | struct i40e_aqc_query_vsi_bw_config_resp *bw_data, |
| 178 | struct i40e_asq_cmd_details *cmd_details); |
| 179 | i40e_status i40e_aq_query_vsi_ets_sla_config(struct i40e_hw *hw, |
| 180 | u16 seid, |
| 181 | struct i40e_aqc_query_vsi_ets_sla_config_resp *bw_data, |
| 182 | struct i40e_asq_cmd_details *cmd_details); |
| 183 | i40e_status i40e_aq_query_switch_comp_ets_config(struct i40e_hw *hw, |
| 184 | u16 seid, |
| 185 | struct i40e_aqc_query_switching_comp_ets_config_resp *bw_data, |
| 186 | struct i40e_asq_cmd_details *cmd_details); |
| 187 | i40e_status i40e_aq_query_port_ets_config(struct i40e_hw *hw, |
| 188 | u16 seid, |
| 189 | struct i40e_aqc_query_port_ets_config_resp *bw_data, |
| 190 | struct i40e_asq_cmd_details *cmd_details); |
| 191 | i40e_status i40e_aq_query_switch_comp_bw_config(struct i40e_hw *hw, |
| 192 | u16 seid, |
| 193 | struct i40e_aqc_query_switching_comp_bw_config_resp *bw_data, |
| 194 | struct i40e_asq_cmd_details *cmd_details); |
| 195 | /* i40e_common */ |
| 196 | i40e_status i40e_init_shared_code(struct i40e_hw *hw); |
| 197 | i40e_status i40e_pf_reset(struct i40e_hw *hw); |
| 198 | void i40e_clear_pxe_mode(struct i40e_hw *hw); |
| 199 | bool i40e_get_link_status(struct i40e_hw *hw); |
| 200 | i40e_status i40e_get_mac_addr(struct i40e_hw *hw, |
| 201 | u8 *mac_addr); |
| 202 | i40e_status i40e_validate_mac_addr(u8 *mac_addr); |
| 203 | i40e_status i40e_read_lldp_cfg(struct i40e_hw *hw, |
| 204 | struct i40e_lldp_variables *lldp_cfg); |
| 205 | /* prototype for functions used for NVM access */ |
| 206 | i40e_status i40e_init_nvm(struct i40e_hw *hw); |
| 207 | i40e_status i40e_acquire_nvm(struct i40e_hw *hw, |
| 208 | enum i40e_aq_resource_access_type access); |
| 209 | void i40e_release_nvm(struct i40e_hw *hw); |
| 210 | i40e_status i40e_read_nvm_srrd(struct i40e_hw *hw, u16 offset, |
| 211 | u16 *data); |
| 212 | i40e_status i40e_read_nvm_word(struct i40e_hw *hw, u16 offset, |
| 213 | u16 *data); |
| 214 | i40e_status i40e_read_nvm_buffer(struct i40e_hw *hw, u16 offset, |
| 215 | u16 *words, u16 *data); |
| 216 | i40e_status i40e_validate_nvm_checksum(struct i40e_hw *hw, |
| 217 | u16 *checksum); |
Catherine Sullivan | d4dfb81 | 2013-11-28 06:39:21 +0000 | [diff] [blame^] | 218 | void i40e_set_pci_config_data(struct i40e_hw *hw, u16 link_status); |
Jesse Brandeburg | 56a62fc | 2013-09-11 08:40:12 +0000 | [diff] [blame] | 219 | |
| 220 | /* prototype for functions used for SW locks */ |
| 221 | |
| 222 | /* i40e_common for VF drivers*/ |
| 223 | void i40e_vf_parse_hw_config(struct i40e_hw *hw, |
| 224 | struct i40e_virtchnl_vf_resource *msg); |
| 225 | i40e_status i40e_vf_reset(struct i40e_hw *hw); |
| 226 | i40e_status i40e_aq_send_msg_to_pf(struct i40e_hw *hw, |
| 227 | enum i40e_virtchnl_ops v_opcode, |
| 228 | i40e_status v_retval, |
| 229 | u8 *msg, u16 msglen, |
| 230 | struct i40e_asq_cmd_details *cmd_details); |
| 231 | i40e_status i40e_set_filter_control(struct i40e_hw *hw, |
| 232 | struct i40e_filter_control_settings *settings); |
| 233 | #endif /* _I40E_PROTOTYPE_H_ */ |