]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /******************************************************************************* |
2 | ||
3 | Intel(R) Gigabit Ethernet Linux driver | |
4 | Copyright(c) 2007-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 "LICENSE.GPL". | |
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 _E1000_API_H_ | |
29 | #define _E1000_API_H_ | |
30 | ||
31 | #include "e1000_hw.h" | |
32 | ||
33 | extern void e1000_init_function_pointers_82575(struct e1000_hw *hw); | |
34 | extern void e1000_rx_fifo_flush_82575(struct e1000_hw *hw); | |
35 | extern void e1000_init_function_pointers_vf(struct e1000_hw *hw); | |
36 | extern void e1000_power_up_fiber_serdes_link(struct e1000_hw *hw); | |
37 | extern void e1000_shutdown_fiber_serdes_link(struct e1000_hw *hw); | |
38 | extern void e1000_init_function_pointers_i210(struct e1000_hw *hw); | |
39 | ||
40 | s32 e1000_set_obff_timer(struct e1000_hw *hw, u32 itr); | |
41 | s32 e1000_set_mac_type(struct e1000_hw *hw); | |
42 | s32 e1000_setup_init_funcs(struct e1000_hw *hw, bool init_device); | |
43 | s32 e1000_init_mac_params(struct e1000_hw *hw); | |
44 | s32 e1000_init_nvm_params(struct e1000_hw *hw); | |
45 | s32 e1000_init_phy_params(struct e1000_hw *hw); | |
46 | s32 e1000_init_mbx_params(struct e1000_hw *hw); | |
47 | s32 e1000_get_bus_info(struct e1000_hw *hw); | |
48 | void e1000_clear_vfta(struct e1000_hw *hw); | |
49 | void e1000_write_vfta(struct e1000_hw *hw, u32 offset, u32 value); | |
50 | s32 e1000_force_mac_fc(struct e1000_hw *hw); | |
51 | s32 e1000_check_for_link(struct e1000_hw *hw); | |
52 | s32 e1000_reset_hw(struct e1000_hw *hw); | |
53 | s32 e1000_init_hw(struct e1000_hw *hw); | |
54 | s32 e1000_setup_link(struct e1000_hw *hw); | |
55 | s32 e1000_get_speed_and_duplex(struct e1000_hw *hw, u16 *speed, u16 *duplex); | |
56 | s32 e1000_disable_pcie_master(struct e1000_hw *hw); | |
57 | void e1000_config_collision_dist(struct e1000_hw *hw); | |
58 | void e1000_rar_set(struct e1000_hw *hw, u8 *addr, u32 index); | |
59 | u32 e1000_hash_mc_addr(struct e1000_hw *hw, u8 *mc_addr); | |
60 | void e1000_update_mc_addr_list(struct e1000_hw *hw, u8 *mc_addr_list, | |
61 | u32 mc_addr_count); | |
62 | s32 e1000_setup_led(struct e1000_hw *hw); | |
63 | s32 e1000_cleanup_led(struct e1000_hw *hw); | |
64 | s32 e1000_check_reset_block(struct e1000_hw *hw); | |
65 | s32 e1000_blink_led(struct e1000_hw *hw); | |
66 | s32 e1000_led_on(struct e1000_hw *hw); | |
67 | s32 e1000_led_off(struct e1000_hw *hw); | |
68 | s32 e1000_id_led_init(struct e1000_hw *hw); | |
69 | void e1000_reset_adaptive(struct e1000_hw *hw); | |
70 | void e1000_update_adaptive(struct e1000_hw *hw); | |
71 | s32 e1000_get_cable_length(struct e1000_hw *hw); | |
72 | s32 e1000_validate_mdi_setting(struct e1000_hw *hw); | |
73 | s32 e1000_read_phy_reg(struct e1000_hw *hw, u32 offset, u16 *data); | |
74 | s32 e1000_write_phy_reg(struct e1000_hw *hw, u32 offset, u16 data); | |
75 | s32 e1000_write_8bit_ctrl_reg(struct e1000_hw *hw, u32 reg, u32 offset, | |
76 | u8 data); | |
77 | s32 e1000_get_phy_info(struct e1000_hw *hw); | |
78 | void e1000_release_phy(struct e1000_hw *hw); | |
79 | s32 e1000_acquire_phy(struct e1000_hw *hw); | |
80 | s32 e1000_phy_hw_reset(struct e1000_hw *hw); | |
81 | s32 e1000_phy_commit(struct e1000_hw *hw); | |
82 | void e1000_power_up_phy(struct e1000_hw *hw); | |
83 | void e1000_power_down_phy(struct e1000_hw *hw); | |
84 | s32 e1000_read_mac_addr(struct e1000_hw *hw); | |
85 | s32 e1000_read_pba_string(struct e1000_hw *hw, u8 *pba_num, u32 pba_num_size); | |
86 | s32 e1000_read_pba_length(struct e1000_hw *hw, u32 *pba_num_size); | |
87 | void e1000_reload_nvm(struct e1000_hw *hw); | |
88 | s32 e1000_update_nvm_checksum(struct e1000_hw *hw); | |
89 | s32 e1000_validate_nvm_checksum(struct e1000_hw *hw); | |
90 | s32 e1000_read_nvm(struct e1000_hw *hw, u16 offset, u16 words, u16 *data); | |
91 | s32 e1000_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data); | |
92 | s32 e1000_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data); | |
93 | s32 e1000_write_nvm(struct e1000_hw *hw, u16 offset, u16 words, u16 *data); | |
94 | s32 e1000_set_d3_lplu_state(struct e1000_hw *hw, bool active); | |
95 | s32 e1000_set_d0_lplu_state(struct e1000_hw *hw, bool active); | |
96 | bool e1000_check_mng_mode(struct e1000_hw *hw); | |
97 | bool e1000_enable_tx_pkt_filtering(struct e1000_hw *hw); | |
98 | s32 e1000_mng_enable_host_if(struct e1000_hw *hw); | |
99 | s32 e1000_mng_host_if_write(struct e1000_hw *hw, u8 *buffer, u16 length, | |
100 | u16 offset, u8 *sum); | |
101 | s32 e1000_mng_write_cmd_header(struct e1000_hw *hw, | |
102 | struct e1000_host_mng_command_header *hdr); | |
103 | s32 e1000_mng_write_dhcp_info(struct e1000_hw *hw, u8 *buffer, u16 length); | |
104 | s32 e1000_get_thermal_sensor_data(struct e1000_hw *hw); | |
105 | s32 e1000_init_thermal_sensor_thresh(struct e1000_hw *hw); | |
106 | ||
107 | ||
108 | ||
109 | /* | |
110 | * TBI_ACCEPT macro definition: | |
111 | * | |
112 | * This macro requires: | |
113 | * adapter = a pointer to struct e1000_hw | |
114 | * status = the 8 bit status field of the Rx descriptor with EOP set | |
115 | * error = the 8 bit error field of the Rx descriptor with EOP set | |
116 | * length = the sum of all the length fields of the Rx descriptors that | |
117 | * make up the current frame | |
118 | * last_byte = the last byte of the frame DMAed by the hardware | |
119 | * max_frame_length = the maximum frame length we want to accept. | |
120 | * min_frame_length = the minimum frame length we want to accept. | |
121 | * | |
122 | * This macro is a conditional that should be used in the interrupt | |
123 | * handler's Rx processing routine when RxErrors have been detected. | |
124 | * | |
125 | * Typical use: | |
126 | * ... | |
127 | * if (TBI_ACCEPT) { | |
128 | * accept_frame = true; | |
129 | * e1000_tbi_adjust_stats(adapter, MacAddress); | |
130 | * frame_length--; | |
131 | * } else { | |
132 | * accept_frame = false; | |
133 | * } | |
134 | * ... | |
135 | */ | |
136 | ||
137 | /* The carrier extension symbol, as received by the NIC. */ | |
138 | #define CARRIER_EXTENSION 0x0F | |
139 | ||
140 | #define TBI_ACCEPT(a, status, errors, length, last_byte, \ | |
141 | min_frame_size, max_frame_size) \ | |
142 | (e1000_tbi_sbp_enabled_82543(a) && \ | |
143 | (((errors) & E1000_RXD_ERR_FRAME_ERR_MASK) == E1000_RXD_ERR_CE) && \ | |
144 | ((last_byte) == CARRIER_EXTENSION) && \ | |
145 | (((status) & E1000_RXD_STAT_VP) ? \ | |
146 | (((length) > (min_frame_size - VLAN_TAG_SIZE)) && \ | |
147 | ((length) <= (max_frame_size + 1))) : \ | |
148 | (((length) > min_frame_size) && \ | |
149 | ((length) <= (max_frame_size + VLAN_TAG_SIZE + 1))))) | |
150 | ||
151 | #ifndef E1000_MAX | |
152 | #define E1000_MAX(a, b) ((a) > (b) ? (a) : (b)) | |
153 | #endif | |
154 | #ifndef E1000_DIVIDE_ROUND_UP | |
155 | #define E1000_DIVIDE_ROUND_UP(a, b) (((a) + (b) - 1) / (b)) /* ceil(a/b) */ | |
156 | #endif | |
157 | #endif /* _E1000_API_H_ */ |