163b3bba8SJerry Jelinek /******************************************************************************
29da57d7bSbt 
3*dc0cb1cdSDale Ghent   Copyright (c) 2001-2015, Intel Corporation
463b3bba8SJerry Jelinek   All rights reserved.
563b3bba8SJerry Jelinek 
663b3bba8SJerry Jelinek   Redistribution and use in source and binary forms, with or without
763b3bba8SJerry Jelinek   modification, are permitted provided that the following conditions are met:
863b3bba8SJerry Jelinek 
963b3bba8SJerry Jelinek    1. Redistributions of source code must retain the above copyright notice,
1063b3bba8SJerry Jelinek       this list of conditions and the following disclaimer.
1163b3bba8SJerry Jelinek 
1263b3bba8SJerry Jelinek    2. Redistributions in binary form must reproduce the above copyright
1363b3bba8SJerry Jelinek       notice, this list of conditions and the following disclaimer in the
1463b3bba8SJerry Jelinek       documentation and/or other materials provided with the distribution.
1563b3bba8SJerry Jelinek 
1663b3bba8SJerry Jelinek    3. Neither the name of the Intel Corporation nor the names of its
1763b3bba8SJerry Jelinek       contributors may be used to endorse or promote products derived from
1863b3bba8SJerry Jelinek       this software without specific prior written permission.
1963b3bba8SJerry Jelinek 
2063b3bba8SJerry Jelinek   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
2163b3bba8SJerry Jelinek   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2263b3bba8SJerry Jelinek   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2363b3bba8SJerry Jelinek   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
2463b3bba8SJerry Jelinek   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2563b3bba8SJerry Jelinek   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2663b3bba8SJerry Jelinek   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2763b3bba8SJerry Jelinek   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2863b3bba8SJerry Jelinek   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2963b3bba8SJerry Jelinek   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
3063b3bba8SJerry Jelinek   POSSIBILITY OF SUCH DAMAGE.
315b6dd21fSchenlu chen - Sun Microsystems - Beijing China 
3263b3bba8SJerry Jelinek ******************************************************************************/
33*dc0cb1cdSDale Ghent /*$FreeBSD$*/
349da57d7bSbt 
3563b3bba8SJerry Jelinek #ifndef _IXGBE_API_H_
3663b3bba8SJerry Jelinek #define _IXGBE_API_H_
379da57d7bSbt 
389da57d7bSbt #include "ixgbe_type.h"
399da57d7bSbt 
40*dc0cb1cdSDale Ghent void ixgbe_dcb_get_rtrup2tc(struct ixgbe_hw *hw, u8 *map);
41*dc0cb1cdSDale Ghent 
429da57d7bSbt s32 ixgbe_init_shared_code(struct ixgbe_hw *hw);
439da57d7bSbt 
4469b5a878SDan McDonald extern s32 ixgbe_init_ops_82598(struct ixgbe_hw *hw);
4569b5a878SDan McDonald extern s32 ixgbe_init_ops_82599(struct ixgbe_hw *hw);
4669b5a878SDan McDonald extern s32 ixgbe_init_ops_X540(struct ixgbe_hw *hw);
47*dc0cb1cdSDale Ghent extern s32 ixgbe_init_ops_X550(struct ixgbe_hw *hw);
48*dc0cb1cdSDale Ghent extern s32 ixgbe_init_ops_X550EM(struct ixgbe_hw *hw);
4969b5a878SDan McDonald extern s32 ixgbe_init_ops_vf(struct ixgbe_hw *hw);
5069b5a878SDan McDonald 
519da57d7bSbt s32 ixgbe_set_mac_type(struct ixgbe_hw *hw);
529da57d7bSbt s32 ixgbe_init_hw(struct ixgbe_hw *hw);
539da57d7bSbt s32 ixgbe_reset_hw(struct ixgbe_hw *hw);
549da57d7bSbt s32 ixgbe_start_hw(struct ixgbe_hw *hw);
5519843f01SPaul Guo void ixgbe_enable_relaxed_ordering(struct ixgbe_hw *hw);
569da57d7bSbt s32 ixgbe_clear_hw_cntrs(struct ixgbe_hw *hw);
579da57d7bSbt enum ixgbe_media_type ixgbe_get_media_type(struct ixgbe_hw *hw);
589da57d7bSbt s32 ixgbe_get_mac_addr(struct ixgbe_hw *hw, u8 *mac_addr);
599da57d7bSbt s32 ixgbe_get_bus_info(struct ixgbe_hw *hw);
609da57d7bSbt u32 ixgbe_get_num_of_tx_queues(struct ixgbe_hw *hw);
619da57d7bSbt u32 ixgbe_get_num_of_rx_queues(struct ixgbe_hw *hw);
629da57d7bSbt s32 ixgbe_stop_adapter(struct ixgbe_hw *hw);
639da57d7bSbt s32 ixgbe_read_pba_num(struct ixgbe_hw *hw, u32 *pba_num);
6463b3bba8SJerry Jelinek s32 ixgbe_read_pba_string(struct ixgbe_hw *hw, u8 *pba_num, u32 pba_num_size);
659da57d7bSbt 
669da57d7bSbt s32 ixgbe_identify_phy(struct ixgbe_hw *hw);
679da57d7bSbt s32 ixgbe_reset_phy(struct ixgbe_hw *hw);
689da57d7bSbt s32 ixgbe_read_phy_reg(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type,
6969b5a878SDan McDonald 		       u16 *phy_data);
709da57d7bSbt s32 ixgbe_write_phy_reg(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type,
7169b5a878SDan McDonald 			u16 phy_data);
729da57d7bSbt 
739da57d7bSbt s32 ixgbe_setup_phy_link(struct ixgbe_hw *hw);
74*dc0cb1cdSDale Ghent s32 ixgbe_setup_internal_phy(struct ixgbe_hw *hw);
759da57d7bSbt s32 ixgbe_check_phy_link(struct ixgbe_hw *hw,
7669b5a878SDan McDonald 			 ixgbe_link_speed *speed,
7769b5a878SDan McDonald 			 bool *link_up);
7863b3bba8SJerry Jelinek s32 ixgbe_setup_phy_link_speed(struct ixgbe_hw *hw,
7969b5a878SDan McDonald 			       ixgbe_link_speed speed,
8069b5a878SDan McDonald 			       bool autoneg_wait_to_complete);
81*dc0cb1cdSDale Ghent s32 ixgbe_set_phy_power(struct ixgbe_hw *, bool on);
825b6dd21fSchenlu chen - Sun Microsystems - Beijing China void ixgbe_disable_tx_laser(struct ixgbe_hw *hw);
835b6dd21fSchenlu chen - Sun Microsystems - Beijing China void ixgbe_enable_tx_laser(struct ixgbe_hw *hw);
845b6dd21fSchenlu chen - Sun Microsystems - Beijing China void ixgbe_flap_tx_laser(struct ixgbe_hw *hw);
853cfa0eb9Schenlu chen - Sun Microsystems - Beijing China s32 ixgbe_setup_link(struct ixgbe_hw *hw, ixgbe_link_speed speed,
86*dc0cb1cdSDale Ghent 		     bool autoneg_wait_to_complete);
87*dc0cb1cdSDale Ghent s32 ixgbe_setup_mac_link(struct ixgbe_hw *hw, ixgbe_link_speed speed,
88*dc0cb1cdSDale Ghent 			 bool autoneg_wait_to_complete);
899da57d7bSbt s32 ixgbe_check_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
9069b5a878SDan McDonald 		     bool *link_up, bool link_up_wait_to_complete);
919da57d7bSbt s32 ixgbe_get_link_capabilities(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
9269b5a878SDan McDonald 				bool *autoneg);
939da57d7bSbt s32 ixgbe_led_on(struct ixgbe_hw *hw, u32 index);
949da57d7bSbt s32 ixgbe_led_off(struct ixgbe_hw *hw, u32 index);
959da57d7bSbt s32 ixgbe_blink_led_start(struct ixgbe_hw *hw, u32 index);
969da57d7bSbt s32 ixgbe_blink_led_stop(struct ixgbe_hw *hw, u32 index);
979da57d7bSbt 
989da57d7bSbt s32 ixgbe_init_eeprom_params(struct ixgbe_hw *hw);
999da57d7bSbt s32 ixgbe_write_eeprom(struct ixgbe_hw *hw, u16 offset, u16 data);
10069b5a878SDan McDonald s32 ixgbe_write_eeprom_buffer(struct ixgbe_hw *hw, u16 offset,
10169b5a878SDan McDonald 			      u16 words, u16 *data);
1029da57d7bSbt s32 ixgbe_read_eeprom(struct ixgbe_hw *hw, u16 offset, u16 *data);
10369b5a878SDan McDonald s32 ixgbe_read_eeprom_buffer(struct ixgbe_hw *hw, u16 offset,
10469b5a878SDan McDonald 			     u16 words, u16 *data);
10569b5a878SDan McDonald 
1069da57d7bSbt s32 ixgbe_validate_eeprom_checksum(struct ixgbe_hw *hw, u16 *checksum_val);
1079da57d7bSbt s32 ixgbe_update_eeprom_checksum(struct ixgbe_hw *hw);
1089da57d7bSbt 
10973cd555cSBin Tu - Sun Microsystems - Beijing China s32 ixgbe_insert_mac_addr(struct ixgbe_hw *hw, u8 *addr, u32 vmdq);
1109da57d7bSbt s32 ixgbe_set_rar(struct ixgbe_hw *hw, u32 index, u8 *addr, u32 vmdq,
11169b5a878SDan McDonald 		  u32 enable_addr);
11213740cb2SPaul Guo s32 ixgbe_clear_rar(struct ixgbe_hw *hw, u32 index);
1139da57d7bSbt s32 ixgbe_set_vmdq(struct ixgbe_hw *hw, u32 rar, u32 vmdq);
11469b5a878SDan McDonald s32 ixgbe_set_vmdq_san_mac(struct ixgbe_hw *hw, u32 vmdq);
11513740cb2SPaul Guo s32 ixgbe_clear_vmdq(struct ixgbe_hw *hw, u32 rar, u32 vmdq);
1169da57d7bSbt s32 ixgbe_init_rx_addrs(struct ixgbe_hw *hw);
1179da57d7bSbt u32 ixgbe_get_num_rx_addrs(struct ixgbe_hw *hw);
1189da57d7bSbt s32 ixgbe_update_uc_addr_list(struct ixgbe_hw *hw, u8 *addr_list,
11969b5a878SDan McDonald 			      u32 addr_count, ixgbe_mc_addr_itr func);
1209da57d7bSbt s32 ixgbe_update_mc_addr_list(struct ixgbe_hw *hw, u8 *mc_addr_list,
12169b5a878SDan McDonald 			      u32 mc_addr_count, ixgbe_mc_addr_itr func,
12269b5a878SDan McDonald 			      bool clear);
1233cfa0eb9Schenlu chen - Sun Microsystems - Beijing China void ixgbe_add_uc_addr(struct ixgbe_hw *hw, u8 *addr_list, u32 vmdq);
1249da57d7bSbt s32 ixgbe_enable_mc(struct ixgbe_hw *hw);
1259da57d7bSbt s32 ixgbe_disable_mc(struct ixgbe_hw *hw);
1269da57d7bSbt s32 ixgbe_clear_vfta(struct ixgbe_hw *hw);
12763b3bba8SJerry Jelinek s32 ixgbe_set_vfta(struct ixgbe_hw *hw, u32 vlan,
12869b5a878SDan McDonald 		   u32 vind, bool vlan_on);
12969b5a878SDan McDonald s32 ixgbe_set_vlvf(struct ixgbe_hw *hw, u32 vlan, u32 vind,
13069b5a878SDan McDonald 		   bool vlan_on, bool *vfta_changed);
13169b5a878SDan McDonald s32 ixgbe_fc_enable(struct ixgbe_hw *hw);
132*dc0cb1cdSDale Ghent s32 ixgbe_setup_fc(struct ixgbe_hw *hw);
13369b5a878SDan McDonald s32 ixgbe_set_fw_drv_ver(struct ixgbe_hw *hw, u8 maj, u8 min, u8 build,
13469b5a878SDan McDonald 			 u8 ver);
1359da57d7bSbt void ixgbe_set_mta(struct ixgbe_hw *hw, u8 *mc_addr);
1369da57d7bSbt s32 ixgbe_get_phy_firmware_version(struct ixgbe_hw *hw,
13769b5a878SDan McDonald 				   u16 *firmware_version);
1389da57d7bSbt s32 ixgbe_read_analog_reg8(struct ixgbe_hw *hw, u32 reg, u8 *val);
1399da57d7bSbt s32 ixgbe_write_analog_reg8(struct ixgbe_hw *hw, u32 reg, u8 val);
14013740cb2SPaul Guo s32 ixgbe_init_uta_tables(struct ixgbe_hw *hw);
14113740cb2SPaul Guo s32 ixgbe_read_i2c_eeprom(struct ixgbe_hw *hw, u8 byte_offset, u8 *eeprom_data);
14273cd555cSBin Tu - Sun Microsystems - Beijing China u32 ixgbe_get_supported_physical_layer(struct ixgbe_hw *hw);
14373cd555cSBin Tu - Sun Microsystems - Beijing China s32 ixgbe_enable_rx_dma(struct ixgbe_hw *hw, u32 regval);
14469b5a878SDan McDonald s32 ixgbe_disable_sec_rx_path(struct ixgbe_hw *hw);
14569b5a878SDan McDonald s32 ixgbe_enable_sec_rx_path(struct ixgbe_hw *hw);
146*dc0cb1cdSDale Ghent s32 ixgbe_mng_fw_enabled(struct ixgbe_hw *hw);
14773cd555cSBin Tu - Sun Microsystems - Beijing China s32 ixgbe_reinit_fdir_tables_82599(struct ixgbe_hw *hw);
14869b5a878SDan McDonald s32 ixgbe_init_fdir_signature_82599(struct ixgbe_hw *hw, u32 fdirctrl);
149*dc0cb1cdSDale Ghent s32 ixgbe_init_fdir_perfect_82599(struct ixgbe_hw *hw, u32 fdirctrl,
150*dc0cb1cdSDale Ghent 					bool cloud_mode);
151*dc0cb1cdSDale Ghent void ixgbe_fdir_add_signature_filter_82599(struct ixgbe_hw *hw,
152*dc0cb1cdSDale Ghent 					   union ixgbe_atr_hash_dword input,
153*dc0cb1cdSDale Ghent 					   union ixgbe_atr_hash_dword common,
154*dc0cb1cdSDale Ghent 					   u8 queue);
15569b5a878SDan McDonald s32 ixgbe_fdir_set_input_mask_82599(struct ixgbe_hw *hw,
156*dc0cb1cdSDale Ghent 				    union ixgbe_atr_input *input_mask, bool cloud_mode);
15769b5a878SDan McDonald s32 ixgbe_fdir_write_perfect_filter_82599(struct ixgbe_hw *hw,
15869b5a878SDan McDonald 					  union ixgbe_atr_input *input,
159*dc0cb1cdSDale Ghent 					  u16 soft_id, u8 queue, bool cloud_mode);
16069b5a878SDan McDonald s32 ixgbe_fdir_erase_perfect_filter_82599(struct ixgbe_hw *hw,
16169b5a878SDan McDonald 					  union ixgbe_atr_input *input,
16269b5a878SDan McDonald 					  u16 soft_id);
16373cd555cSBin Tu - Sun Microsystems - Beijing China s32 ixgbe_fdir_add_perfect_filter_82599(struct ixgbe_hw *hw,
16469b5a878SDan McDonald 					union ixgbe_atr_input *input,
16569b5a878SDan McDonald 					union ixgbe_atr_input *mask,
16669b5a878SDan McDonald 					u16 soft_id,
167*dc0cb1cdSDale Ghent 					u8 queue,
168*dc0cb1cdSDale Ghent 					bool cloud_mode);
16969b5a878SDan McDonald void ixgbe_atr_compute_perfect_hash_82599(union ixgbe_atr_input *input,
17069b5a878SDan McDonald 					  union ixgbe_atr_input *mask);
17169b5a878SDan McDonald u32 ixgbe_atr_compute_sig_hash_82599(union ixgbe_atr_hash_dword input,
17269b5a878SDan McDonald 				     union ixgbe_atr_hash_dword common);
173*dc0cb1cdSDale Ghent bool ixgbe_verify_lesm_fw_enabled_82599(struct ixgbe_hw *hw);
17473cd555cSBin Tu - Sun Microsystems - Beijing China s32 ixgbe_read_i2c_byte(struct ixgbe_hw *hw, u8 byte_offset, u8 dev_addr,
17569b5a878SDan McDonald 			u8 *data);
176*dc0cb1cdSDale Ghent s32 ixgbe_read_i2c_byte_unlocked(struct ixgbe_hw *hw, u8 byte_offset,
177*dc0cb1cdSDale Ghent 				 u8 dev_addr, u8 *data);
178*dc0cb1cdSDale Ghent s32 ixgbe_read_i2c_combined(struct ixgbe_hw *hw, u8 addr, u16 reg, u16 *val);
179*dc0cb1cdSDale Ghent s32 ixgbe_read_i2c_combined_unlocked(struct ixgbe_hw *hw, u8 addr, u16 reg,
180*dc0cb1cdSDale Ghent 				     u16 *val);
18173cd555cSBin Tu - Sun Microsystems - Beijing China s32 ixgbe_write_i2c_byte(struct ixgbe_hw *hw, u8 byte_offset, u8 dev_addr,
18269b5a878SDan McDonald 			 u8 data);
183*dc0cb1cdSDale Ghent void ixgbe_set_fdir_drop_queue_82599(struct ixgbe_hw *hw, u8 dropqueue);
184*dc0cb1cdSDale Ghent s32 ixgbe_write_i2c_byte_unlocked(struct ixgbe_hw *hw, u8 byte_offset,
185*dc0cb1cdSDale Ghent 				  u8 dev_addr, u8 data);
186*dc0cb1cdSDale Ghent s32 ixgbe_write_i2c_combined(struct ixgbe_hw *hw, u8 addr, u16 reg, u16 val);
187*dc0cb1cdSDale Ghent s32 ixgbe_write_i2c_combined_unlocked(struct ixgbe_hw *hw, u8 addr, u16 reg,
188*dc0cb1cdSDale Ghent 				      u16 val);
18973cd555cSBin Tu - Sun Microsystems - Beijing China s32 ixgbe_write_i2c_eeprom(struct ixgbe_hw *hw, u8 byte_offset, u8 eeprom_data);
19073cd555cSBin Tu - Sun Microsystems - Beijing China s32 ixgbe_get_san_mac_addr(struct ixgbe_hw *hw, u8 *san_mac_addr);
19173cd555cSBin Tu - Sun Microsystems - Beijing China s32 ixgbe_set_san_mac_addr(struct ixgbe_hw *hw, u8 *san_mac_addr);
19273cd555cSBin Tu - Sun Microsystems - Beijing China s32 ixgbe_get_device_caps(struct ixgbe_hw *hw, u16 *device_caps);
193*dc0cb1cdSDale Ghent s32 ixgbe_acquire_swfw_semaphore(struct ixgbe_hw *hw, u32 mask);
194*dc0cb1cdSDale Ghent void ixgbe_release_swfw_semaphore(struct ixgbe_hw *hw, u32 mask);
1953cfa0eb9Schenlu chen - Sun Microsystems - Beijing China s32 ixgbe_get_wwn_prefix(struct ixgbe_hw *hw, u16 *wwnn_prefix,
19669b5a878SDan McDonald 			 u16 *wwpn_prefix);
1975b6dd21fSchenlu chen - Sun Microsystems - Beijing China s32 ixgbe_get_fcoe_boot_status(struct ixgbe_hw *hw, u16 *bs);
198*dc0cb1cdSDale Ghent s32 ixgbe_dmac_config(struct ixgbe_hw *hw);
199*dc0cb1cdSDale Ghent s32 ixgbe_dmac_update_tcs(struct ixgbe_hw *hw);
200*dc0cb1cdSDale Ghent s32 ixgbe_dmac_config_tcs(struct ixgbe_hw *hw);
201*dc0cb1cdSDale Ghent s32 ixgbe_setup_eee(struct ixgbe_hw *hw, bool enable_eee);
202*dc0cb1cdSDale Ghent void ixgbe_set_source_address_pruning(struct ixgbe_hw *hw, bool enable,
203*dc0cb1cdSDale Ghent 				      unsigned int vf);
204*dc0cb1cdSDale Ghent void ixgbe_set_ethertype_anti_spoofing(struct ixgbe_hw *hw, bool enable,
205*dc0cb1cdSDale Ghent 				       int vf);
206*dc0cb1cdSDale Ghent s32 ixgbe_read_iosf_sb_reg(struct ixgbe_hw *hw, u32 reg_addr,
207*dc0cb1cdSDale Ghent 			u32 device_type, u32 *phy_data);
208*dc0cb1cdSDale Ghent s32 ixgbe_write_iosf_sb_reg(struct ixgbe_hw *hw, u32 reg_addr,
209*dc0cb1cdSDale Ghent 			u32 device_type, u32 phy_data);
210*dc0cb1cdSDale Ghent void ixgbe_disable_mdd(struct ixgbe_hw *hw);
211*dc0cb1cdSDale Ghent void ixgbe_enable_mdd(struct ixgbe_hw *hw);
212*dc0cb1cdSDale Ghent void ixgbe_mdd_event(struct ixgbe_hw *hw, u32 *vf_bitmap);
213*dc0cb1cdSDale Ghent void ixgbe_restore_mdd_vf(struct ixgbe_hw *hw, u32 vf);
214*dc0cb1cdSDale Ghent s32 ixgbe_enter_lplu(struct ixgbe_hw *hw);
215*dc0cb1cdSDale Ghent s32 ixgbe_handle_lasi(struct ixgbe_hw *hw);
216*dc0cb1cdSDale Ghent void ixgbe_set_rate_select_speed(struct ixgbe_hw *hw, ixgbe_link_speed speed);
217*dc0cb1cdSDale Ghent void ixgbe_disable_rx(struct ixgbe_hw *hw);
218*dc0cb1cdSDale Ghent void ixgbe_enable_rx(struct ixgbe_hw *hw);
2199da57d7bSbt 
22063b3bba8SJerry Jelinek #endif /* _IXGBE_API_H_ */
221