igb_api.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 FILE_LICENCE ( GPL2_ONLY );
00029
00030 #ifndef _IGB_API_H_
00031 #define _IGB_API_H_
00032
00033 #include <stdint.h>
00034 #include <stdlib.h>
00035 #include <stdio.h>
00036 #include <string.h>
00037 #include <unistd.h>
00038 #include <gpxe/io.h>
00039 #include <errno.h>
00040 #include <byteswap.h>
00041 #include <gpxe/pci.h>
00042 #include <gpxe/malloc.h>
00043 #include <gpxe/if_ether.h>
00044 #include <gpxe/ethernet.h>
00045 #include <gpxe/iobuf.h>
00046 #include <gpxe/netdevice.h>
00047
00048 #include "igb_hw.h"
00049
00050 extern void igb_init_function_pointers_82575(struct e1000_hw *hw) __attribute__((weak));
00051 extern void igb_rx_fifo_flush_82575(struct e1000_hw *hw) __attribute__((weak));
00052 extern void igb_init_function_pointers_vf(struct e1000_hw *hw) __attribute__((weak));
00053 extern void igb_shutdown_fiber_serdes_link(struct e1000_hw *hw) __attribute__((weak));
00054
00055 s32 igb_set_mac_type(struct e1000_hw *hw);
00056 s32 igb_setup_init_funcs(struct e1000_hw *hw, bool init_device);
00057 s32 igb_init_mac_params(struct e1000_hw *hw);
00058 s32 igb_init_nvm_params(struct e1000_hw *hw);
00059 s32 igb_init_phy_params(struct e1000_hw *hw);
00060 s32 igb_init_mbx_params(struct e1000_hw *hw);
00061 s32 igb_get_bus_info(struct e1000_hw *hw);
00062 void igb_clear_vfta(struct e1000_hw *hw);
00063 void igb_write_vfta(struct e1000_hw *hw, u32 offset, u32 value);
00064 s32 igb_force_mac_fc(struct e1000_hw *hw);
00065 s32 igb_check_for_link(struct e1000_hw *hw);
00066 s32 igb_reset_hw(struct e1000_hw *hw);
00067 s32 igb_init_hw(struct e1000_hw *hw);
00068 s32 igb_setup_link(struct e1000_hw *hw);
00069 s32 igb_get_speed_and_duplex(struct e1000_hw *hw, u16 *speed,
00070 u16 *duplex);
00071 s32 igb_disable_pcie_master(struct e1000_hw *hw);
00072 void igb_config_collision_dist(struct e1000_hw *hw);
00073 void igb_rar_set(struct e1000_hw *hw, u8 *addr, u32 index);
00074 void igb_mta_set(struct e1000_hw *hw, u32 hash_value);
00075 u32 igb_hash_mc_addr(struct e1000_hw *hw, u8 *mc_addr);
00076 void igb_update_mc_addr_list(struct e1000_hw *hw,
00077 u8 *mc_addr_list, u32 mc_addr_count);
00078 s32 igb_setup_led(struct e1000_hw *hw);
00079 s32 igb_cleanup_led(struct e1000_hw *hw);
00080 s32 igb_check_reset_block(struct e1000_hw *hw);
00081 s32 igb_blink_led(struct e1000_hw *hw);
00082 s32 igb_led_on(struct e1000_hw *hw);
00083 s32 igb_led_off(struct e1000_hw *hw);
00084 s32 igb_id_led_init(struct e1000_hw *hw);
00085 void igb_reset_adaptive(struct e1000_hw *hw);
00086 void igb_update_adaptive(struct e1000_hw *hw);
00087 #if 0
00088 s32 igb_get_cable_length(struct e1000_hw *hw);
00089 #endif
00090 s32 igb_validate_mdi_setting(struct e1000_hw *hw);
00091 s32 igb_read_phy_reg(struct e1000_hw *hw, u32 offset, u16 *data);
00092 s32 igb_write_phy_reg(struct e1000_hw *hw, u32 offset, u16 data);
00093 s32 igb_write_8bit_ctrl_reg(struct e1000_hw *hw, u32 reg,
00094 u32 offset, u8 data);
00095 s32 igb_get_phy_info(struct e1000_hw *hw);
00096 void igb_release_phy(struct e1000_hw *hw);
00097 s32 igb_acquire_phy(struct e1000_hw *hw);
00098 s32 igb_phy_hw_reset(struct e1000_hw *hw);
00099 s32 igb_phy_commit(struct e1000_hw *hw);
00100 void igb_power_up_phy(struct e1000_hw *hw);
00101 void igb_power_down_phy(struct e1000_hw *hw);
00102 s32 igb_read_mac_addr(struct e1000_hw *hw);
00103 s32 igb_read_pba_num(struct e1000_hw *hw, u32 *part_num);
00104 void igb_reload_nvm(struct e1000_hw *hw);
00105 s32 igb_update_nvm_checksum(struct e1000_hw *hw);
00106 s32 igb_validate_nvm_checksum(struct e1000_hw *hw);
00107 s32 igb_read_nvm(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);
00108 s32 igb_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data);
00109 s32 igb_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data);
00110 s32 igb_write_nvm(struct e1000_hw *hw, u16 offset, u16 words,
00111 u16 *data);
00112 s32 igb_wait_autoneg(struct e1000_hw *hw);
00113 s32 igb_set_d3_lplu_state(struct e1000_hw *hw, bool active);
00114 s32 igb_set_d0_lplu_state(struct e1000_hw *hw, bool active);
00115 bool igb_check_mng_mode(struct e1000_hw *hw);
00116 bool igb_enable_tx_pkt_filtering(struct e1000_hw *hw);
00117 s32 igb_mng_enable_host_if(struct e1000_hw *hw);
00118 s32 igb_mng_host_if_write(struct e1000_hw *hw,
00119 u8 *buffer, u16 length, u16 offset, u8 *sum);
00120 s32 igb_mng_write_cmd_header(struct e1000_hw *hw,
00121 struct e1000_host_mng_command_header *hdr);
00122 s32 igb_mng_write_dhcp_info(struct e1000_hw * hw,
00123 u8 *buffer, u16 length);
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154 #define CARRIER_EXTENSION 0x0F
00155
00156 #define TBI_ACCEPT(a, status, errors, length, last_byte, min_frame_size, max_frame_size) \
00157 (e1000_tbi_sbp_enabled_82543(a) && \
00158 (((errors) & E1000_RXD_ERR_FRAME_ERR_MASK) == E1000_RXD_ERR_CE) && \
00159 ((last_byte) == CARRIER_EXTENSION) && \
00160 (((status) & E1000_RXD_STAT_VP) ? \
00161 (((length) > (min_frame_size - VLAN_TAG_SIZE)) && \
00162 ((length) <= (max_frame_size + 1))) : \
00163 (((length) > min_frame_size) && \
00164 ((length) <= (max_frame_size + VLAN_TAG_SIZE + 1)))))
00165
00166 #endif