Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause
2 : : * Copyright(c) 2001-2024 Intel Corporation
3 : : */
4 : :
5 : : #include "ixgbe_api.h"
6 : : #include "ixgbe_common.h"
7 : :
8 : : #define IXGBE_EMPTY_PARAM
9 : :
10 : : static const u32 ixgbe_mvals_base[IXGBE_MVALS_IDX_LIMIT] = {
11 : : IXGBE_MVALS_INIT(IXGBE_EMPTY_PARAM)
12 : : };
13 : :
14 : : static const u32 ixgbe_mvals_X540[IXGBE_MVALS_IDX_LIMIT] = {
15 : : IXGBE_MVALS_INIT(_X540)
16 : : };
17 : :
18 : : static const u32 ixgbe_mvals_X550[IXGBE_MVALS_IDX_LIMIT] = {
19 : : IXGBE_MVALS_INIT(_X550)
20 : : };
21 : :
22 : : static const u32 ixgbe_mvals_X550EM_x[IXGBE_MVALS_IDX_LIMIT] = {
23 : : IXGBE_MVALS_INIT(_X550EM_x)
24 : : };
25 : :
26 : : static const u32 ixgbe_mvals_X550EM_a[IXGBE_MVALS_IDX_LIMIT] = {
27 : : IXGBE_MVALS_INIT(_X550EM_a)
28 : : };
29 : :
30 : : /**
31 : : * ixgbe_dcb_get_rtrup2tc - read rtrup2tc reg
32 : : * @hw: pointer to hardware structure
33 : : * @map: pointer to u8 arr for returning map
34 : : *
35 : : * Read the rtrup2tc HW register and resolve its content into map
36 : : **/
37 : 0 : void ixgbe_dcb_get_rtrup2tc(struct ixgbe_hw *hw, u8 *map)
38 : : {
39 [ # # ]: 0 : if (hw->mac.ops.get_rtrup2tc)
40 : 0 : hw->mac.ops.get_rtrup2tc(hw, map);
41 : 0 : }
42 : :
43 : : /**
44 : : * ixgbe_init_shared_code - Initialize the shared code
45 : : * @hw: pointer to hardware structure
46 : : *
47 : : * This will assign function pointers and assign the MAC type and PHY code.
48 : : * Does not touch the hardware. This function must be called prior to any
49 : : * other function in the shared code. The ixgbe_hw structure should be
50 : : * memset to 0 prior to calling this function. The following fields in
51 : : * hw structure should be filled in prior to calling this function:
52 : : * hw_addr, back, device_id, vendor_id, subsystem_device_id,
53 : : * subsystem_vendor_id, and revision_id
54 : : **/
55 : 0 : s32 ixgbe_init_shared_code(struct ixgbe_hw *hw)
56 : : {
57 : : s32 status;
58 : :
59 : 0 : DEBUGFUNC("ixgbe_init_shared_code");
60 : :
61 : : /*
62 : : * Set the mac type
63 : : */
64 : 0 : ixgbe_set_mac_type(hw);
65 : :
66 [ # # # # : 0 : switch (hw->mac.type) {
# # # #
# ]
67 : 0 : case ixgbe_mac_82598EB:
68 : 0 : status = ixgbe_init_ops_82598(hw);
69 : 0 : break;
70 : 0 : case ixgbe_mac_82599EB:
71 : 0 : status = ixgbe_init_ops_82599(hw);
72 : 0 : break;
73 : 0 : case ixgbe_mac_X540:
74 : 0 : status = ixgbe_init_ops_X540(hw);
75 : 0 : break;
76 : 0 : case ixgbe_mac_X550:
77 : 0 : status = ixgbe_init_ops_X550(hw);
78 : 0 : break;
79 : 0 : case ixgbe_mac_X550EM_x:
80 : 0 : status = ixgbe_init_ops_X550EM_x(hw);
81 : 0 : break;
82 : 0 : case ixgbe_mac_X550EM_a:
83 : 0 : status = ixgbe_init_ops_X550EM_a(hw);
84 : 0 : break;
85 : 0 : case ixgbe_mac_82599_vf:
86 : : case ixgbe_mac_X540_vf:
87 : : case ixgbe_mac_X550_vf:
88 : : case ixgbe_mac_X550EM_x_vf:
89 : : case ixgbe_mac_X550EM_a_vf:
90 : : case ixgbe_mac_E610_vf:
91 : 0 : status = ixgbe_init_ops_vf(hw);
92 : 0 : break;
93 : 0 : case ixgbe_mac_E610:
94 : 0 : status = ixgbe_init_ops_E610(hw);
95 : 0 : break;
96 : : default:
97 : : status = IXGBE_ERR_DEVICE_NOT_SUPPORTED;
98 : : break;
99 : : }
100 : 0 : hw->mac.max_link_up_time = IXGBE_LINK_UP_TIME;
101 : :
102 : 0 : return status;
103 : : }
104 : :
105 : : /**
106 : : * ixgbe_set_mac_type - Sets MAC type
107 : : * @hw: pointer to the HW structure
108 : : *
109 : : * This function sets the mac type of the adapter based on the
110 : : * vendor ID and device ID stored in the hw structure.
111 : : **/
112 : 0 : s32 ixgbe_set_mac_type(struct ixgbe_hw *hw)
113 : : {
114 : : s32 ret_val = IXGBE_SUCCESS;
115 : :
116 : 0 : DEBUGFUNC("ixgbe_set_mac_type\n");
117 : :
118 [ # # ]: 0 : if (hw->vendor_id != IXGBE_INTEL_VENDOR_ID) {
119 : 0 : ERROR_REPORT2(IXGBE_ERROR_UNSUPPORTED,
120 : : "Unsupported vendor id: %x", hw->vendor_id);
121 : 0 : return IXGBE_ERR_DEVICE_NOT_SUPPORTED;
122 : : }
123 : :
124 : 0 : hw->mvals = ixgbe_mvals_base;
125 : :
126 [ # # # # : 0 : switch (hw->device_id) {
# # # # #
# # # #
# ]
127 : 0 : case IXGBE_DEV_ID_82598:
128 : : case IXGBE_DEV_ID_82598_BX:
129 : : case IXGBE_DEV_ID_82598AF_SINGLE_PORT:
130 : : case IXGBE_DEV_ID_82598AF_DUAL_PORT:
131 : : case IXGBE_DEV_ID_82598AT:
132 : : case IXGBE_DEV_ID_82598AT2:
133 : : case IXGBE_DEV_ID_82598EB_CX4:
134 : : case IXGBE_DEV_ID_82598_CX4_DUAL_PORT:
135 : : case IXGBE_DEV_ID_82598_DA_DUAL_PORT:
136 : : case IXGBE_DEV_ID_82598_SR_DUAL_PORT_EM:
137 : : case IXGBE_DEV_ID_82598EB_XF_LR:
138 : : case IXGBE_DEV_ID_82598EB_SFP_LOM:
139 : 0 : hw->mac.type = ixgbe_mac_82598EB;
140 : 0 : break;
141 : 0 : case IXGBE_DEV_ID_82599_KX4:
142 : : case IXGBE_DEV_ID_82599_KX4_MEZZ:
143 : : case IXGBE_DEV_ID_82599_XAUI_LOM:
144 : : case IXGBE_DEV_ID_82599_COMBO_BACKPLANE:
145 : : case IXGBE_DEV_ID_82599_KR:
146 : : case IXGBE_DEV_ID_82599_SFP:
147 : : case IXGBE_DEV_ID_82599_BACKPLANE_FCOE:
148 : : case IXGBE_DEV_ID_82599_SFP_FCOE:
149 : : case IXGBE_DEV_ID_82599_SFP_EM:
150 : : case IXGBE_DEV_ID_82599_SFP_SF2:
151 : : case IXGBE_DEV_ID_82599_SFP_SF_QP:
152 : : case IXGBE_DEV_ID_82599_QSFP_SF_QP:
153 : : case IXGBE_DEV_ID_82599EN_SFP:
154 : : case IXGBE_DEV_ID_82599_CX4:
155 : : case IXGBE_DEV_ID_82599_T3_LOM:
156 : 0 : hw->mac.type = ixgbe_mac_82599EB;
157 : 0 : break;
158 : 0 : case IXGBE_DEV_ID_82599_VF:
159 : : case IXGBE_DEV_ID_82599_VF_HV:
160 : 0 : hw->mac.type = ixgbe_mac_82599_vf;
161 : 0 : break;
162 : 0 : case IXGBE_DEV_ID_X540_VF:
163 : : case IXGBE_DEV_ID_X540_VF_HV:
164 : 0 : hw->mac.type = ixgbe_mac_X540_vf;
165 : 0 : hw->mvals = ixgbe_mvals_X540;
166 : 0 : break;
167 : 0 : case IXGBE_DEV_ID_X540T:
168 : : case IXGBE_DEV_ID_X540T1:
169 : 0 : hw->mac.type = ixgbe_mac_X540;
170 : 0 : hw->mvals = ixgbe_mvals_X540;
171 : 0 : break;
172 : 0 : case IXGBE_DEV_ID_X550T:
173 : : case IXGBE_DEV_ID_X550T1:
174 : 0 : hw->mac.type = ixgbe_mac_X550;
175 : 0 : hw->mvals = ixgbe_mvals_X550;
176 : 0 : break;
177 : 0 : case IXGBE_DEV_ID_X550EM_X_KX4:
178 : : case IXGBE_DEV_ID_X550EM_X_KR:
179 : : case IXGBE_DEV_ID_X550EM_X_10G_T:
180 : : case IXGBE_DEV_ID_X550EM_X_1G_T:
181 : : case IXGBE_DEV_ID_X550EM_X_SFP:
182 : : case IXGBE_DEV_ID_X550EM_X_XFI:
183 : 0 : hw->mac.type = ixgbe_mac_X550EM_x;
184 : 0 : hw->mvals = ixgbe_mvals_X550EM_x;
185 : 0 : break;
186 : 0 : case IXGBE_DEV_ID_X550EM_A_KR:
187 : : case IXGBE_DEV_ID_X550EM_A_KR_L:
188 : : case IXGBE_DEV_ID_X550EM_A_SFP_N:
189 : : case IXGBE_DEV_ID_X550EM_A_SGMII:
190 : : case IXGBE_DEV_ID_X550EM_A_SGMII_L:
191 : : case IXGBE_DEV_ID_X550EM_A_1G_T:
192 : : case IXGBE_DEV_ID_X550EM_A_1G_T_L:
193 : : case IXGBE_DEV_ID_X550EM_A_10G_T:
194 : : case IXGBE_DEV_ID_X550EM_A_QSFP:
195 : : case IXGBE_DEV_ID_X550EM_A_QSFP_N:
196 : : case IXGBE_DEV_ID_X550EM_A_SFP:
197 : 0 : hw->mac.type = ixgbe_mac_X550EM_a;
198 : 0 : hw->mvals = ixgbe_mvals_X550EM_a;
199 : 0 : break;
200 : 0 : case IXGBE_DEV_ID_X550_VF:
201 : : case IXGBE_DEV_ID_X550_VF_HV:
202 : 0 : hw->mac.type = ixgbe_mac_X550_vf;
203 : 0 : hw->mvals = ixgbe_mvals_X550;
204 : 0 : break;
205 : 0 : case IXGBE_DEV_ID_X550EM_X_VF:
206 : : case IXGBE_DEV_ID_X550EM_X_VF_HV:
207 : 0 : hw->mac.type = ixgbe_mac_X550EM_x_vf;
208 : 0 : hw->mvals = ixgbe_mvals_X550EM_x;
209 : 0 : break;
210 : 0 : case IXGBE_DEV_ID_X550EM_A_VF:
211 : : case IXGBE_DEV_ID_X550EM_A_VF_HV:
212 : 0 : hw->mac.type = ixgbe_mac_X550EM_a_vf;
213 : 0 : hw->mvals = ixgbe_mvals_X550EM_a;
214 : 0 : break;
215 : 0 : case IXGBE_DEV_ID_E610_BACKPLANE:
216 : : case IXGBE_DEV_ID_E610_SFP:
217 : : case IXGBE_DEV_ID_E610_10G_T:
218 : : case IXGBE_DEV_ID_E610_2_5G_T:
219 : : case IXGBE_DEV_ID_E610_SGMII:
220 : 0 : hw->mac.type = ixgbe_mac_E610;
221 : 0 : hw->mvals = ixgbe_mvals_X550EM_a;
222 : 0 : break;
223 : 0 : case IXGBE_DEV_ID_E610_VF:
224 : 0 : hw->mac.type = ixgbe_mac_E610_vf;
225 : 0 : hw->mvals = ixgbe_mvals_X550EM_a;
226 : 0 : break;
227 : 0 : default:
228 : : ret_val = IXGBE_ERR_DEVICE_NOT_SUPPORTED;
229 : 0 : ERROR_REPORT2(IXGBE_ERROR_UNSUPPORTED,
230 : : "Unsupported device id: %x",
231 : : hw->device_id);
232 : 0 : break;
233 : : }
234 : :
235 : : return ret_val;
236 : : }
237 : :
238 : : /**
239 : : * ixgbe_init_hw - Initialize the hardware
240 : : * @hw: pointer to hardware structure
241 : : *
242 : : * Initialize the hardware by resetting and then starting the hardware
243 : : **/
244 : 0 : s32 ixgbe_init_hw(struct ixgbe_hw *hw)
245 : : {
246 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.init_hw, (hw),
247 : : IXGBE_NOT_IMPLEMENTED);
248 : : }
249 : :
250 : : /**
251 : : * ixgbe_reset_hw - Performs a hardware reset
252 : : * @hw: pointer to hardware structure
253 : : *
254 : : * Resets the hardware by resetting the transmit and receive units, masks and
255 : : * clears all interrupts, performs a PHY reset, and performs a MAC reset
256 : : **/
257 : 0 : s32 ixgbe_reset_hw(struct ixgbe_hw *hw)
258 : : {
259 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.reset_hw, (hw),
260 : : IXGBE_NOT_IMPLEMENTED);
261 : : }
262 : :
263 : : /**
264 : : * ixgbe_start_hw - Prepares hardware for Rx/Tx
265 : : * @hw: pointer to hardware structure
266 : : *
267 : : * Starts the hardware by filling the bus info structure and media type,
268 : : * clears all on chip counters, initializes receive address registers,
269 : : * multicast table, VLAN filter table, calls routine to setup link and
270 : : * flow control settings, and leaves transmit and receive units disabled
271 : : * and uninitialized.
272 : : **/
273 : 0 : s32 ixgbe_start_hw(struct ixgbe_hw *hw)
274 : : {
275 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.start_hw, (hw),
276 : : IXGBE_NOT_IMPLEMENTED);
277 : : }
278 : :
279 : : /**
280 : : * ixgbe_enable_relaxed_ordering - Enables tx relaxed ordering,
281 : : * which is disabled by default in ixgbe_start_hw();
282 : : *
283 : : * @hw: pointer to hardware structure
284 : : *
285 : : * Enable relaxed ordering;
286 : : **/
287 : 0 : void ixgbe_enable_relaxed_ordering(struct ixgbe_hw *hw)
288 : : {
289 [ # # ]: 0 : if (hw->mac.ops.enable_relaxed_ordering)
290 : 0 : hw->mac.ops.enable_relaxed_ordering(hw);
291 : 0 : }
292 : :
293 : : /**
294 : : * ixgbe_clear_hw_cntrs - Clear hardware counters
295 : : * @hw: pointer to hardware structure
296 : : *
297 : : * Clears all hardware statistics counters by reading them from the hardware
298 : : * Statistics counters are clear on read.
299 : : **/
300 : 0 : s32 ixgbe_clear_hw_cntrs(struct ixgbe_hw *hw)
301 : : {
302 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.clear_hw_cntrs, (hw),
303 : : IXGBE_NOT_IMPLEMENTED);
304 : : }
305 : :
306 : : /**
307 : : * ixgbe_get_media_type - Get media type
308 : : * @hw: pointer to hardware structure
309 : : *
310 : : * Returns the media type (fiber, copper, backplane)
311 : : **/
312 : 0 : enum ixgbe_media_type ixgbe_get_media_type(struct ixgbe_hw *hw)
313 : : {
314 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_media_type, (hw),
315 : : ixgbe_media_type_unknown);
316 : : }
317 : :
318 : : /**
319 : : * ixgbe_get_mac_addr - Get MAC address
320 : : * @hw: pointer to hardware structure
321 : : * @mac_addr: Adapter MAC address
322 : : *
323 : : * Reads the adapter's MAC address from the first Receive Address Register
324 : : * (RAR0) A reset of the adapter must have been performed prior to calling
325 : : * this function in order for the MAC address to have been loaded from the
326 : : * EEPROM into RAR0
327 : : **/
328 : 0 : s32 ixgbe_get_mac_addr(struct ixgbe_hw *hw, u8 *mac_addr)
329 : : {
330 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_mac_addr,
331 : : (hw, mac_addr), IXGBE_NOT_IMPLEMENTED);
332 : : }
333 : :
334 : : /**
335 : : * ixgbe_get_san_mac_addr - Get SAN MAC address
336 : : * @hw: pointer to hardware structure
337 : : * @san_mac_addr: SAN MAC address
338 : : *
339 : : * Reads the SAN MAC address from the EEPROM, if it's available. This is
340 : : * per-port, so set_lan_id() must be called before reading the addresses.
341 : : **/
342 : 0 : s32 ixgbe_get_san_mac_addr(struct ixgbe_hw *hw, u8 *san_mac_addr)
343 : : {
344 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_san_mac_addr,
345 : : (hw, san_mac_addr), IXGBE_NOT_IMPLEMENTED);
346 : : }
347 : :
348 : : /**
349 : : * ixgbe_set_san_mac_addr - Write a SAN MAC address
350 : : * @hw: pointer to hardware structure
351 : : * @san_mac_addr: SAN MAC address
352 : : *
353 : : * Writes A SAN MAC address to the EEPROM.
354 : : **/
355 : 0 : s32 ixgbe_set_san_mac_addr(struct ixgbe_hw *hw, u8 *san_mac_addr)
356 : : {
357 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.set_san_mac_addr,
358 : : (hw, san_mac_addr), IXGBE_NOT_IMPLEMENTED);
359 : : }
360 : :
361 : : /**
362 : : * ixgbe_get_device_caps - Get additional device capabilities
363 : : * @hw: pointer to hardware structure
364 : : * @device_caps: the EEPROM word for device capabilities
365 : : *
366 : : * Reads the extra device capabilities from the EEPROM
367 : : **/
368 : 0 : s32 ixgbe_get_device_caps(struct ixgbe_hw *hw, u16 *device_caps)
369 : : {
370 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_device_caps,
371 : : (hw, device_caps), IXGBE_NOT_IMPLEMENTED);
372 : : }
373 : :
374 : : /**
375 : : * ixgbe_get_wwn_prefix - Get alternative WWNN/WWPN prefix from the EEPROM
376 : : * @hw: pointer to hardware structure
377 : : * @wwnn_prefix: the alternative WWNN prefix
378 : : * @wwpn_prefix: the alternative WWPN prefix
379 : : *
380 : : * This function will read the EEPROM from the alternative SAN MAC address
381 : : * block to check the support for the alternative WWNN/WWPN prefix support.
382 : : **/
383 : 0 : s32 ixgbe_get_wwn_prefix(struct ixgbe_hw *hw, u16 *wwnn_prefix,
384 : : u16 *wwpn_prefix)
385 : : {
386 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_wwn_prefix,
387 : : (hw, wwnn_prefix, wwpn_prefix),
388 : : IXGBE_NOT_IMPLEMENTED);
389 : : }
390 : :
391 : : /**
392 : : * ixgbe_get_fcoe_boot_status - Get FCOE boot status from EEPROM
393 : : * @hw: pointer to hardware structure
394 : : * @bs: the fcoe boot status
395 : : *
396 : : * This function will read the FCOE boot status from the iSCSI FCOE block
397 : : **/
398 : 0 : s32 ixgbe_get_fcoe_boot_status(struct ixgbe_hw *hw, u16 *bs)
399 : : {
400 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_fcoe_boot_status,
401 : : (hw, bs),
402 : : IXGBE_NOT_IMPLEMENTED);
403 : : }
404 : :
405 : : /**
406 : : * ixgbe_get_bus_info - Set PCI bus info
407 : : * @hw: pointer to hardware structure
408 : : *
409 : : * Sets the PCI bus info (speed, width, type) within the ixgbe_hw structure
410 : : **/
411 : 0 : s32 ixgbe_get_bus_info(struct ixgbe_hw *hw)
412 : : {
413 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_bus_info, (hw),
414 : : IXGBE_NOT_IMPLEMENTED);
415 : : }
416 : :
417 : : /**
418 : : * ixgbe_get_num_of_tx_queues - Get Tx queues
419 : : * @hw: pointer to hardware structure
420 : : *
421 : : * Returns the number of transmit queues for the given adapter.
422 : : **/
423 : 0 : u32 ixgbe_get_num_of_tx_queues(struct ixgbe_hw *hw)
424 : : {
425 : 0 : return hw->mac.max_tx_queues;
426 : : }
427 : :
428 : : /**
429 : : * ixgbe_get_num_of_rx_queues - Get Rx queues
430 : : * @hw: pointer to hardware structure
431 : : *
432 : : * Returns the number of receive queues for the given adapter.
433 : : **/
434 : 0 : u32 ixgbe_get_num_of_rx_queues(struct ixgbe_hw *hw)
435 : : {
436 : 0 : return hw->mac.max_rx_queues;
437 : : }
438 : :
439 : : /**
440 : : * ixgbe_stop_adapter - Disable Rx/Tx units
441 : : * @hw: pointer to hardware structure
442 : : *
443 : : * Sets the adapter_stopped flag within ixgbe_hw struct. Clears interrupts,
444 : : * disables transmit and receive units. The adapter_stopped flag is used by
445 : : * the shared code and drivers to determine if the adapter is in a stopped
446 : : * state and should not touch the hardware.
447 : : **/
448 : 0 : s32 ixgbe_stop_adapter(struct ixgbe_hw *hw)
449 : : {
450 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.stop_adapter, (hw),
451 : : IXGBE_NOT_IMPLEMENTED);
452 : : }
453 : :
454 : : /**
455 : : * ixgbe_read_pba_string - Reads part number string from EEPROM
456 : : * @hw: pointer to hardware structure
457 : : * @pba_num: stores the part number string from the EEPROM
458 : : * @pba_num_size: part number string buffer length
459 : : *
460 : : * Reads the part number string from the EEPROM.
461 : : **/
462 : 0 : s32 ixgbe_read_pba_string(struct ixgbe_hw *hw, u8 *pba_num, u32 pba_num_size)
463 : : {
464 [ # # ]: 0 : return ixgbe_call_func(hw, hw->eeprom.ops.read_pba_string, (hw, pba_num,
465 : : pba_num_size), IXGBE_NOT_IMPLEMENTED);
466 : : }
467 : :
468 : : /**
469 : : * ixgbe_read_pba_num - Reads part number from EEPROM
470 : : * @hw: pointer to hardware structure
471 : : * @pba_num: stores the part number from the EEPROM
472 : : *
473 : : * Reads the part number from the EEPROM.
474 : : **/
475 : 0 : s32 ixgbe_read_pba_num(struct ixgbe_hw *hw, u32 *pba_num)
476 : : {
477 : 0 : return ixgbe_read_pba_num_generic(hw, pba_num);
478 : : }
479 : :
480 : : /**
481 : : * ixgbe_identify_phy - Get PHY type
482 : : * @hw: pointer to hardware structure
483 : : *
484 : : * Determines the physical layer module found on the current adapter.
485 : : **/
486 : 0 : s32 ixgbe_identify_phy(struct ixgbe_hw *hw)
487 : : {
488 : : s32 status = IXGBE_SUCCESS;
489 : :
490 [ # # ]: 0 : if (hw->phy.type == ixgbe_phy_unknown) {
491 [ # # ]: 0 : status = ixgbe_call_func(hw, hw->phy.ops.identify, (hw),
492 : : IXGBE_NOT_IMPLEMENTED);
493 : : }
494 : :
495 : 0 : return status;
496 : : }
497 : :
498 : : /**
499 : : * ixgbe_reset_phy - Perform a PHY reset
500 : : * @hw: pointer to hardware structure
501 : : **/
502 : 0 : s32 ixgbe_reset_phy(struct ixgbe_hw *hw)
503 : : {
504 : : s32 status = IXGBE_SUCCESS;
505 : :
506 [ # # ]: 0 : if (hw->phy.type == ixgbe_phy_unknown) {
507 [ # # ]: 0 : if (ixgbe_identify_phy(hw) != IXGBE_SUCCESS)
508 : : status = IXGBE_ERR_PHY;
509 : : }
510 : :
511 : : if (status == IXGBE_SUCCESS) {
512 [ # # ]: 0 : status = ixgbe_call_func(hw, hw->phy.ops.reset, (hw),
513 : : IXGBE_NOT_IMPLEMENTED);
514 : : }
515 : 0 : return status;
516 : : }
517 : :
518 : : /**
519 : : * ixgbe_get_phy_firmware_version -
520 : : * @hw: pointer to hardware structure
521 : : * @firmware_version: pointer to firmware version
522 : : **/
523 : 0 : s32 ixgbe_get_phy_firmware_version(struct ixgbe_hw *hw, u16 *firmware_version)
524 : : {
525 : : s32 status = IXGBE_SUCCESS;
526 : :
527 [ # # ]: 0 : status = ixgbe_call_func(hw, hw->phy.ops.get_firmware_version,
528 : : (hw, firmware_version),
529 : : IXGBE_NOT_IMPLEMENTED);
530 : 0 : return status;
531 : : }
532 : :
533 : : /**
534 : : * ixgbe_read_phy_reg - Read PHY register
535 : : * @hw: pointer to hardware structure
536 : : * @reg_addr: 32 bit address of PHY register to read
537 : : * @device_type: type of device you want to communicate with
538 : : * @phy_data: Pointer to read data from PHY register
539 : : *
540 : : * Reads a value from a specified PHY register
541 : : **/
542 : 0 : s32 ixgbe_read_phy_reg(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type,
543 : : u16 *phy_data)
544 : : {
545 [ # # ]: 0 : if (hw->phy.id == 0)
546 : 0 : ixgbe_identify_phy(hw);
547 : :
548 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.read_reg, (hw, reg_addr,
549 : : device_type, phy_data), IXGBE_NOT_IMPLEMENTED);
550 : : }
551 : :
552 : : /**
553 : : * ixgbe_write_phy_reg - Write PHY register
554 : : * @hw: pointer to hardware structure
555 : : * @reg_addr: 32 bit PHY register to write
556 : : * @device_type: type of device you want to communicate with
557 : : * @phy_data: Data to write to the PHY register
558 : : *
559 : : * Writes a value to specified PHY register
560 : : **/
561 : 0 : s32 ixgbe_write_phy_reg(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type,
562 : : u16 phy_data)
563 : : {
564 [ # # ]: 0 : if (hw->phy.id == 0)
565 : 0 : ixgbe_identify_phy(hw);
566 : :
567 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.write_reg, (hw, reg_addr,
568 : : device_type, phy_data), IXGBE_NOT_IMPLEMENTED);
569 : : }
570 : :
571 : : /**
572 : : * ixgbe_setup_phy_link - Restart PHY autoneg
573 : : * @hw: pointer to hardware structure
574 : : *
575 : : * Restart autonegotiation and PHY and waits for completion.
576 : : **/
577 : 0 : s32 ixgbe_setup_phy_link(struct ixgbe_hw *hw)
578 : : {
579 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.setup_link, (hw),
580 : : IXGBE_NOT_IMPLEMENTED);
581 : : }
582 : :
583 : : /**
584 : : * ixgbe_setup_internal_phy - Configure integrated PHY
585 : : * @hw: pointer to hardware structure
586 : : *
587 : : * Reconfigure the integrated PHY in order to enable talk to the external PHY.
588 : : * Returns success if not implemented, since nothing needs to be done in this
589 : : * case.
590 : : */
591 : 0 : s32 ixgbe_setup_internal_phy(struct ixgbe_hw *hw)
592 : : {
593 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.setup_internal_link, (hw),
594 : : IXGBE_SUCCESS);
595 : : }
596 : :
597 : : /**
598 : : * ixgbe_check_phy_link - Determine link and speed status
599 : : * @hw: pointer to hardware structure
600 : : * @speed: link speed
601 : : * @link_up: true when link is up
602 : : *
603 : : * Reads a PHY register to determine if link is up and the current speed for
604 : : * the PHY.
605 : : **/
606 : 0 : s32 ixgbe_check_phy_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
607 : : bool *link_up)
608 : : {
609 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.check_link, (hw, speed,
610 : : link_up), IXGBE_NOT_IMPLEMENTED);
611 : : }
612 : :
613 : : /**
614 : : * ixgbe_setup_phy_link_speed - Set auto advertise
615 : : * @hw: pointer to hardware structure
616 : : * @speed: new link speed
617 : : * @autoneg_wait_to_complete: true when waiting for completion is needed
618 : : *
619 : : * Sets the auto advertised capabilities
620 : : **/
621 : 0 : s32 ixgbe_setup_phy_link_speed(struct ixgbe_hw *hw, ixgbe_link_speed speed,
622 : : bool autoneg_wait_to_complete)
623 : : {
624 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.setup_link_speed, (hw, speed,
625 : : autoneg_wait_to_complete),
626 : : IXGBE_NOT_IMPLEMENTED);
627 : : }
628 : :
629 : : /**
630 : : * ixgbe_set_phy_power - Control the phy power state
631 : : * @hw: pointer to hardware structure
632 : : * @on: true for on, false for off
633 : : */
634 : 0 : s32 ixgbe_set_phy_power(struct ixgbe_hw *hw, bool on)
635 : : {
636 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.set_phy_power, (hw, on),
637 : : IXGBE_NOT_IMPLEMENTED);
638 : : }
639 : :
640 : : /**
641 : : * ixgbe_check_link - Get link and speed status
642 : : * @hw: pointer to hardware structure
643 : : * @speed: pointer to link speed
644 : : * @link_up: true when link is up
645 : : * @link_up_wait_to_complete: bool used to wait for link up or not
646 : : *
647 : : * Reads the links register to determine if link is up and the current speed
648 : : **/
649 : 0 : s32 ixgbe_check_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
650 : : bool *link_up, bool link_up_wait_to_complete)
651 : : {
652 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.check_link, (hw, speed,
653 : : link_up, link_up_wait_to_complete),
654 : : IXGBE_NOT_IMPLEMENTED);
655 : : }
656 : :
657 : : /**
658 : : * ixgbe_disable_tx_laser - Disable Tx laser
659 : : * @hw: pointer to hardware structure
660 : : *
661 : : * If the driver needs to disable the laser on SFI optics.
662 : : **/
663 : 0 : void ixgbe_disable_tx_laser(struct ixgbe_hw *hw)
664 : : {
665 [ # # ]: 0 : if (hw->mac.ops.disable_tx_laser)
666 : 0 : hw->mac.ops.disable_tx_laser(hw);
667 : 0 : }
668 : :
669 : : /**
670 : : * ixgbe_enable_tx_laser - Enable Tx laser
671 : : * @hw: pointer to hardware structure
672 : : *
673 : : * If the driver needs to enable the laser on SFI optics.
674 : : **/
675 : 0 : void ixgbe_enable_tx_laser(struct ixgbe_hw *hw)
676 : : {
677 [ # # ]: 0 : if (hw->mac.ops.enable_tx_laser)
678 : 0 : hw->mac.ops.enable_tx_laser(hw);
679 : 0 : }
680 : :
681 : : /**
682 : : * ixgbe_flap_tx_laser - flap Tx laser to start autotry process
683 : : * @hw: pointer to hardware structure
684 : : *
685 : : * When the driver changes the link speeds that it can support then
686 : : * flap the tx laser to alert the link partner to start autotry
687 : : * process on its end.
688 : : **/
689 : 0 : void ixgbe_flap_tx_laser(struct ixgbe_hw *hw)
690 : : {
691 [ # # ]: 0 : if (hw->mac.ops.flap_tx_laser)
692 : 0 : hw->mac.ops.flap_tx_laser(hw);
693 : 0 : }
694 : :
695 : : /**
696 : : * ixgbe_setup_link - Set link speed
697 : : * @hw: pointer to hardware structure
698 : : * @speed: new link speed
699 : : * @autoneg_wait_to_complete: true when waiting for completion is needed
700 : : *
701 : : * Configures link settings. Restarts the link.
702 : : * Performs autonegotiation if needed.
703 : : **/
704 : 0 : s32 ixgbe_setup_link(struct ixgbe_hw *hw, ixgbe_link_speed speed,
705 : : bool autoneg_wait_to_complete)
706 : : {
707 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.setup_link, (hw, speed,
708 : : autoneg_wait_to_complete),
709 : : IXGBE_NOT_IMPLEMENTED);
710 : : }
711 : :
712 : : /**
713 : : * ixgbe_setup_mac_link - Set link speed
714 : : * @hw: pointer to hardware structure
715 : : * @speed: new link speed
716 : : * @autoneg_wait_to_complete: true when waiting for completion is needed
717 : : *
718 : : * Configures link settings. Restarts the link.
719 : : * Performs autonegotiation if needed.
720 : : **/
721 : 0 : s32 ixgbe_setup_mac_link(struct ixgbe_hw *hw, ixgbe_link_speed speed,
722 : : bool autoneg_wait_to_complete)
723 : : {
724 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.setup_mac_link, (hw, speed,
725 : : autoneg_wait_to_complete),
726 : : IXGBE_NOT_IMPLEMENTED);
727 : : }
728 : :
729 : : /**
730 : : * ixgbe_get_link_capabilities - Returns link capabilities
731 : : * @hw: pointer to hardware structure
732 : : * @speed: link speed capabilities
733 : : * @autoneg: true when autoneg or autotry is enabled
734 : : *
735 : : * Determines the link capabilities of the current configuration.
736 : : **/
737 : 0 : s32 ixgbe_get_link_capabilities(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
738 : : bool *autoneg)
739 : : {
740 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_link_capabilities, (hw,
741 : : speed, autoneg), IXGBE_NOT_IMPLEMENTED);
742 : : }
743 : :
744 : : /**
745 : : * ixgbe_led_on - Turn on LEDs
746 : : * @hw: pointer to hardware structure
747 : : * @index: led number to turn on
748 : : *
749 : : * Turns on the software controllable LEDs.
750 : : **/
751 : 0 : s32 ixgbe_led_on(struct ixgbe_hw *hw, u32 index)
752 : : {
753 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.led_on, (hw, index),
754 : : IXGBE_NOT_IMPLEMENTED);
755 : : }
756 : :
757 : : /**
758 : : * ixgbe_led_off - Turn off LEDs
759 : : * @hw: pointer to hardware structure
760 : : * @index: led number to turn off
761 : : *
762 : : * Turns off the software controllable LEDs.
763 : : **/
764 : 0 : s32 ixgbe_led_off(struct ixgbe_hw *hw, u32 index)
765 : : {
766 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.led_off, (hw, index),
767 : : IXGBE_NOT_IMPLEMENTED);
768 : : }
769 : :
770 : : /**
771 : : * ixgbe_blink_led_start - Blink LEDs
772 : : * @hw: pointer to hardware structure
773 : : * @index: led number to blink
774 : : *
775 : : * Blink LED based on index.
776 : : **/
777 : 0 : s32 ixgbe_blink_led_start(struct ixgbe_hw *hw, u32 index)
778 : : {
779 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.blink_led_start, (hw, index),
780 : : IXGBE_NOT_IMPLEMENTED);
781 : : }
782 : :
783 : : /**
784 : : * ixgbe_blink_led_stop - Stop blinking LEDs
785 : : * @hw: pointer to hardware structure
786 : : * @index: led number to stop
787 : : *
788 : : * Stop blinking LED based on index.
789 : : **/
790 : 0 : s32 ixgbe_blink_led_stop(struct ixgbe_hw *hw, u32 index)
791 : : {
792 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.blink_led_stop, (hw, index),
793 : : IXGBE_NOT_IMPLEMENTED);
794 : : }
795 : :
796 : : /**
797 : : * ixgbe_init_eeprom_params - Initialize EEPROM parameters
798 : : * @hw: pointer to hardware structure
799 : : *
800 : : * Initializes the EEPROM parameters ixgbe_eeprom_info within the
801 : : * ixgbe_hw struct in order to set up EEPROM access.
802 : : **/
803 : 0 : s32 ixgbe_init_eeprom_params(struct ixgbe_hw *hw)
804 : : {
805 [ # # ]: 0 : return ixgbe_call_func(hw, hw->eeprom.ops.init_params, (hw),
806 : : IXGBE_NOT_IMPLEMENTED);
807 : : }
808 : :
809 : :
810 : : /**
811 : : * ixgbe_write_eeprom - Write word to EEPROM
812 : : * @hw: pointer to hardware structure
813 : : * @offset: offset within the EEPROM to be written to
814 : : * @data: 16 bit word to be written to the EEPROM
815 : : *
816 : : * Writes 16 bit value to EEPROM. If ixgbe_eeprom_update_checksum is not
817 : : * called after this function, the EEPROM will most likely contain an
818 : : * invalid checksum.
819 : : **/
820 : 0 : s32 ixgbe_write_eeprom(struct ixgbe_hw *hw, u16 offset, u16 data)
821 : : {
822 [ # # ]: 0 : return ixgbe_call_func(hw, hw->eeprom.ops.write, (hw, offset, data),
823 : : IXGBE_NOT_IMPLEMENTED);
824 : : }
825 : :
826 : : /**
827 : : * ixgbe_write_eeprom_buffer - Write word(s) to EEPROM
828 : : * @hw: pointer to hardware structure
829 : : * @offset: offset within the EEPROM to be written to
830 : : * @data: 16 bit word(s) to be written to the EEPROM
831 : : * @words: number of words
832 : : *
833 : : * Writes 16 bit word(s) to EEPROM. If ixgbe_eeprom_update_checksum is not
834 : : * called after this function, the EEPROM will most likely contain an
835 : : * invalid checksum.
836 : : **/
837 : 0 : s32 ixgbe_write_eeprom_buffer(struct ixgbe_hw *hw, u16 offset, u16 words,
838 : : u16 *data)
839 : : {
840 [ # # ]: 0 : return ixgbe_call_func(hw, hw->eeprom.ops.write_buffer,
841 : : (hw, offset, words, data),
842 : : IXGBE_NOT_IMPLEMENTED);
843 : : }
844 : :
845 : : /**
846 : : * ixgbe_read_eeprom - Read word from EEPROM
847 : : * @hw: pointer to hardware structure
848 : : * @offset: offset within the EEPROM to be read
849 : : * @data: read 16 bit value from EEPROM
850 : : *
851 : : * Reads 16 bit value from EEPROM
852 : : **/
853 : 0 : s32 ixgbe_read_eeprom(struct ixgbe_hw *hw, u16 offset, u16 *data)
854 : : {
855 [ # # ]: 0 : return ixgbe_call_func(hw, hw->eeprom.ops.read, (hw, offset, data),
856 : : IXGBE_NOT_IMPLEMENTED);
857 : : }
858 : :
859 : : /**
860 : : * ixgbe_read_eeprom_buffer - Read word(s) from EEPROM
861 : : * @hw: pointer to hardware structure
862 : : * @offset: offset within the EEPROM to be read
863 : : * @data: read 16 bit word(s) from EEPROM
864 : : * @words: number of words
865 : : *
866 : : * Reads 16 bit word(s) from EEPROM
867 : : **/
868 : 0 : s32 ixgbe_read_eeprom_buffer(struct ixgbe_hw *hw, u16 offset,
869 : : u16 words, u16 *data)
870 : : {
871 [ # # ]: 0 : return ixgbe_call_func(hw, hw->eeprom.ops.read_buffer,
872 : : (hw, offset, words, data),
873 : : IXGBE_NOT_IMPLEMENTED);
874 : : }
875 : :
876 : : /**
877 : : * ixgbe_validate_eeprom_checksum - Validate EEPROM checksum
878 : : * @hw: pointer to hardware structure
879 : : * @checksum_val: calculated checksum
880 : : *
881 : : * Performs checksum calculation and validates the EEPROM checksum
882 : : **/
883 : 0 : s32 ixgbe_validate_eeprom_checksum(struct ixgbe_hw *hw, u16 *checksum_val)
884 : : {
885 [ # # ]: 0 : return ixgbe_call_func(hw, hw->eeprom.ops.validate_checksum,
886 : : (hw, checksum_val), IXGBE_NOT_IMPLEMENTED);
887 : : }
888 : :
889 : : /**
890 : : * ixgbe_update_eeprom_checksum - Updates the EEPROM checksum
891 : : * @hw: pointer to hardware structure
892 : : **/
893 : 0 : s32 ixgbe_update_eeprom_checksum(struct ixgbe_hw *hw)
894 : : {
895 [ # # ]: 0 : return ixgbe_call_func(hw, hw->eeprom.ops.update_checksum, (hw),
896 : : IXGBE_NOT_IMPLEMENTED);
897 : : }
898 : :
899 : : /**
900 : : * ixgbe_insert_mac_addr - Find a RAR for this mac address
901 : : * @hw: pointer to hardware structure
902 : : * @addr: Address to put into receive address register
903 : : * @vmdq: VMDq pool to assign
904 : : *
905 : : * Puts an ethernet address into a receive address register, or
906 : : * finds the rar that it is already in; adds to the pool list
907 : : **/
908 : 0 : s32 ixgbe_insert_mac_addr(struct ixgbe_hw *hw, u8 *addr, u32 vmdq)
909 : : {
910 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.insert_mac_addr,
911 : : (hw, addr, vmdq),
912 : : IXGBE_NOT_IMPLEMENTED);
913 : : }
914 : :
915 : : /**
916 : : * ixgbe_set_rar - Set Rx address register
917 : : * @hw: pointer to hardware structure
918 : : * @index: Receive address register to write
919 : : * @addr: Address to put into receive address register
920 : : * @vmdq: VMDq "set"
921 : : * @enable_addr: set flag that address is active
922 : : *
923 : : * Puts an ethernet address into a receive address register.
924 : : **/
925 : 0 : s32 ixgbe_set_rar(struct ixgbe_hw *hw, u32 index, u8 *addr, u32 vmdq,
926 : : u32 enable_addr)
927 : : {
928 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.set_rar, (hw, index, addr, vmdq,
929 : : enable_addr), IXGBE_NOT_IMPLEMENTED);
930 : : }
931 : :
932 : : /**
933 : : * ixgbe_clear_rar - Clear Rx address register
934 : : * @hw: pointer to hardware structure
935 : : * @index: Receive address register to write
936 : : *
937 : : * Puts an ethernet address into a receive address register.
938 : : **/
939 : 0 : s32 ixgbe_clear_rar(struct ixgbe_hw *hw, u32 index)
940 : : {
941 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.clear_rar, (hw, index),
942 : : IXGBE_NOT_IMPLEMENTED);
943 : : }
944 : :
945 : : /**
946 : : * ixgbe_set_vmdq - Associate a VMDq index with a receive address
947 : : * @hw: pointer to hardware structure
948 : : * @rar: receive address register index to associate with VMDq index
949 : : * @vmdq: VMDq set or pool index
950 : : **/
951 : 0 : s32 ixgbe_set_vmdq(struct ixgbe_hw *hw, u32 rar, u32 vmdq)
952 : : {
953 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.set_vmdq, (hw, rar, vmdq),
954 : : IXGBE_NOT_IMPLEMENTED);
955 : :
956 : : }
957 : :
958 : : /**
959 : : * ixgbe_set_vmdq_san_mac - Associate VMDq index 127 with a receive address
960 : : * @hw: pointer to hardware structure
961 : : * @vmdq: VMDq default pool index
962 : : **/
963 : 0 : s32 ixgbe_set_vmdq_san_mac(struct ixgbe_hw *hw, u32 vmdq)
964 : : {
965 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.set_vmdq_san_mac,
966 : : (hw, vmdq), IXGBE_NOT_IMPLEMENTED);
967 : : }
968 : :
969 : : /**
970 : : * ixgbe_clear_vmdq - Disassociate a VMDq index from a receive address
971 : : * @hw: pointer to hardware structure
972 : : * @rar: receive address register index to disassociate with VMDq index
973 : : * @vmdq: VMDq set or pool index
974 : : **/
975 : 0 : s32 ixgbe_clear_vmdq(struct ixgbe_hw *hw, u32 rar, u32 vmdq)
976 : : {
977 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.clear_vmdq, (hw, rar, vmdq),
978 : : IXGBE_NOT_IMPLEMENTED);
979 : : }
980 : :
981 : : /**
982 : : * ixgbe_init_rx_addrs - Initializes receive address filters.
983 : : * @hw: pointer to hardware structure
984 : : *
985 : : * Places the MAC address in receive address register 0 and clears the rest
986 : : * of the receive address registers. Clears the multicast table. Assumes
987 : : * the receiver is in reset when the routine is called.
988 : : **/
989 : 0 : s32 ixgbe_init_rx_addrs(struct ixgbe_hw *hw)
990 : : {
991 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.init_rx_addrs, (hw),
992 : : IXGBE_NOT_IMPLEMENTED);
993 : : }
994 : :
995 : : /**
996 : : * ixgbe_get_num_rx_addrs - Returns the number of RAR entries.
997 : : * @hw: pointer to hardware structure
998 : : **/
999 : 0 : u32 ixgbe_get_num_rx_addrs(struct ixgbe_hw *hw)
1000 : : {
1001 : 0 : return hw->mac.num_rar_entries;
1002 : : }
1003 : :
1004 : : /**
1005 : : * ixgbe_update_uc_addr_list - Updates the MAC's list of secondary addresses
1006 : : * @hw: pointer to hardware structure
1007 : : * @addr_list: the list of new multicast addresses
1008 : : * @addr_count: number of addresses
1009 : : * @func: iterator function to walk the multicast address list
1010 : : *
1011 : : * The given list replaces any existing list. Clears the secondary addrs from
1012 : : * receive address registers. Uses unused receive address registers for the
1013 : : * first secondary addresses, and falls back to promiscuous mode as needed.
1014 : : **/
1015 : 0 : s32 ixgbe_update_uc_addr_list(struct ixgbe_hw *hw, u8 *addr_list,
1016 : : u32 addr_count, ixgbe_mc_addr_itr func)
1017 : : {
1018 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.update_uc_addr_list, (hw,
1019 : : addr_list, addr_count, func),
1020 : : IXGBE_NOT_IMPLEMENTED);
1021 : : }
1022 : :
1023 : : /**
1024 : : * ixgbe_update_mc_addr_list - Updates the MAC's list of multicast addresses
1025 : : * @hw: pointer to hardware structure
1026 : : * @mc_addr_list: the list of new multicast addresses
1027 : : * @mc_addr_count: number of addresses
1028 : : * @func: iterator function to walk the multicast address list
1029 : : * @clear: flag, when set clears the table beforehand
1030 : : *
1031 : : * The given list replaces any existing list. Clears the MC addrs from receive
1032 : : * address registers and the multicast table. Uses unused receive address
1033 : : * registers for the first multicast addresses, and hashes the rest into the
1034 : : * multicast table.
1035 : : **/
1036 : 0 : s32 ixgbe_update_mc_addr_list(struct ixgbe_hw *hw, u8 *mc_addr_list,
1037 : : u32 mc_addr_count, ixgbe_mc_addr_itr func,
1038 : : bool clear)
1039 : : {
1040 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.update_mc_addr_list, (hw,
1041 : : mc_addr_list, mc_addr_count, func, clear),
1042 : : IXGBE_NOT_IMPLEMENTED);
1043 : : }
1044 : :
1045 : : /**
1046 : : * ixgbe_enable_mc - Enable multicast address in RAR
1047 : : * @hw: pointer to hardware structure
1048 : : *
1049 : : * Enables multicast address in RAR and the use of the multicast hash table.
1050 : : **/
1051 : 0 : s32 ixgbe_enable_mc(struct ixgbe_hw *hw)
1052 : : {
1053 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.enable_mc, (hw),
1054 : : IXGBE_NOT_IMPLEMENTED);
1055 : : }
1056 : :
1057 : : /**
1058 : : * ixgbe_disable_mc - Disable multicast address in RAR
1059 : : * @hw: pointer to hardware structure
1060 : : *
1061 : : * Disables multicast address in RAR and the use of the multicast hash table.
1062 : : **/
1063 : 0 : s32 ixgbe_disable_mc(struct ixgbe_hw *hw)
1064 : : {
1065 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.disable_mc, (hw),
1066 : : IXGBE_NOT_IMPLEMENTED);
1067 : : }
1068 : :
1069 : : /**
1070 : : * ixgbe_clear_vfta - Clear VLAN filter table
1071 : : * @hw: pointer to hardware structure
1072 : : *
1073 : : * Clears the VLAN filer table, and the VMDq index associated with the filter
1074 : : **/
1075 : 0 : s32 ixgbe_clear_vfta(struct ixgbe_hw *hw)
1076 : : {
1077 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.clear_vfta, (hw),
1078 : : IXGBE_NOT_IMPLEMENTED);
1079 : : }
1080 : :
1081 : : /**
1082 : : * ixgbe_set_vfta - Set VLAN filter table
1083 : : * @hw: pointer to hardware structure
1084 : : * @vlan: VLAN id to write to VLAN filter
1085 : : * @vind: VMDq output index that maps queue to VLAN id in VLVFB
1086 : : * @vlan_on: boolean flag to turn on/off VLAN
1087 : : * @vlvf_bypass: boolean flag indicating updating the default pool is okay
1088 : : *
1089 : : * Turn on/off specified VLAN in the VLAN filter table.
1090 : : **/
1091 : 0 : s32 ixgbe_set_vfta(struct ixgbe_hw *hw, u32 vlan, u32 vind, bool vlan_on,
1092 : : bool vlvf_bypass)
1093 : : {
1094 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.set_vfta, (hw, vlan, vind,
1095 : : vlan_on, vlvf_bypass), IXGBE_NOT_IMPLEMENTED);
1096 : : }
1097 : :
1098 : : /**
1099 : : * ixgbe_set_vlvf - Set VLAN Pool Filter
1100 : : * @hw: pointer to hardware structure
1101 : : * @vlan: VLAN id to write to VLAN filter
1102 : : * @vind: VMDq output index that maps queue to VLAN id in VLVFB
1103 : : * @vlan_on: boolean flag to turn on/off VLAN in VLVF
1104 : : * @vfta_delta: pointer to the difference between the current value of VFTA
1105 : : * and the desired value
1106 : : * @vfta: the desired value of the VFTA
1107 : : * @vlvf_bypass: boolean flag indicating updating the default pool is okay
1108 : : *
1109 : : * Turn on/off specified bit in VLVF table.
1110 : : **/
1111 : 0 : s32 ixgbe_set_vlvf(struct ixgbe_hw *hw, u32 vlan, u32 vind, bool vlan_on,
1112 : : u32 *vfta_delta, u32 vfta, bool vlvf_bypass)
1113 : : {
1114 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.set_vlvf, (hw, vlan, vind,
1115 : : vlan_on, vfta_delta, vfta, vlvf_bypass),
1116 : : IXGBE_NOT_IMPLEMENTED);
1117 : : }
1118 : :
1119 : : /**
1120 : : * ixgbe_fc_enable - Enable flow control
1121 : : * @hw: pointer to hardware structure
1122 : : *
1123 : : * Configures the flow control settings based on SW configuration.
1124 : : **/
1125 : 0 : s32 ixgbe_fc_enable(struct ixgbe_hw *hw)
1126 : : {
1127 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.fc_enable, (hw),
1128 : : IXGBE_NOT_IMPLEMENTED);
1129 : : }
1130 : :
1131 : : /**
1132 : : * ixgbe_setup_fc - Set up flow control
1133 : : * @hw: pointer to hardware structure
1134 : : *
1135 : : * Called at init time to set up flow control.
1136 : : **/
1137 : 0 : s32 ixgbe_setup_fc(struct ixgbe_hw *hw)
1138 : : {
1139 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.setup_fc, (hw),
1140 : : IXGBE_NOT_IMPLEMENTED);
1141 : : }
1142 : :
1143 : : /**
1144 : : * ixgbe_set_fw_drv_ver - Try to send the driver version number FW
1145 : : * @hw: pointer to hardware structure
1146 : : * @maj: driver major number to be sent to firmware
1147 : : * @min: driver minor number to be sent to firmware
1148 : : * @build: driver build number to be sent to firmware
1149 : : * @ver: driver version number to be sent to firmware
1150 : : * @len: length of driver_ver string
1151 : : * @driver_ver: driver string
1152 : : **/
1153 : 0 : s32 ixgbe_set_fw_drv_ver(struct ixgbe_hw *hw, u8 maj, u8 min, u8 build,
1154 : : u8 ver, u16 len, char *driver_ver)
1155 : : {
1156 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.set_fw_drv_ver, (hw, maj, min,
1157 : : build, ver, len, driver_ver),
1158 : : IXGBE_NOT_IMPLEMENTED);
1159 : : }
1160 : :
1161 : : /**
1162 : : * ixgbe_get_fw_tsam_mode - Returns information whether TSAM is enabled
1163 : : * @hw: pointer to hardware structure
1164 : : *
1165 : : * Checks Thermal Sensor Autonomous Mode by reading the value of the
1166 : : * dedicated register.
1167 : : * Returns True if TSAM is enabled, False if TSAM is disabled.
1168 : : */
1169 : 0 : bool ixgbe_get_fw_tsam_mode(struct ixgbe_hw *hw)
1170 : : {
1171 [ # # # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_fw_tsam_mode, (hw),
1172 : : IXGBE_NOT_IMPLEMENTED);
1173 : : }
1174 : :
1175 : : /**
1176 : : * ixgbe_get_thermal_sensor_data - Gathers thermal sensor data
1177 : : * @hw: pointer to hardware structure
1178 : : *
1179 : : * Updates the temperatures in mac.thermal_sensor_data
1180 : : **/
1181 : 0 : s32 ixgbe_get_thermal_sensor_data(struct ixgbe_hw *hw)
1182 : : {
1183 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_thermal_sensor_data, (hw),
1184 : : IXGBE_NOT_IMPLEMENTED);
1185 : : }
1186 : :
1187 : : /**
1188 : : * ixgbe_init_thermal_sensor_thresh - Inits thermal sensor thresholds
1189 : : * @hw: pointer to hardware structure
1190 : : *
1191 : : * Inits the thermal sensor thresholds according to the NVM map
1192 : : **/
1193 : 0 : s32 ixgbe_init_thermal_sensor_thresh(struct ixgbe_hw *hw)
1194 : : {
1195 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.init_thermal_sensor_thresh, (hw),
1196 : : IXGBE_NOT_IMPLEMENTED);
1197 : : }
1198 : :
1199 : : /**
1200 : : * ixgbe_dmac_config - Configure DMA Coalescing registers.
1201 : : * @hw: pointer to hardware structure
1202 : : *
1203 : : * Configure DMA coalescing. If enabling dmac, dmac is activated.
1204 : : * When disabling dmac, dmac enable dmac bit is cleared.
1205 : : **/
1206 : 0 : s32 ixgbe_dmac_config(struct ixgbe_hw *hw)
1207 : : {
1208 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.dmac_config, (hw),
1209 : : IXGBE_NOT_IMPLEMENTED);
1210 : : }
1211 : :
1212 : : /**
1213 : : * ixgbe_dmac_update_tcs - Configure DMA Coalescing registers.
1214 : : * @hw: pointer to hardware structure
1215 : : *
1216 : : * Disables dmac, updates per TC settings, and then enable dmac.
1217 : : **/
1218 : 0 : s32 ixgbe_dmac_update_tcs(struct ixgbe_hw *hw)
1219 : : {
1220 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.dmac_update_tcs, (hw),
1221 : : IXGBE_NOT_IMPLEMENTED);
1222 : : }
1223 : :
1224 : : /**
1225 : : * ixgbe_dmac_config_tcs - Configure DMA Coalescing registers.
1226 : : * @hw: pointer to hardware structure
1227 : : *
1228 : : * Configure DMA coalescing threshold per TC and set high priority bit for
1229 : : * FCOE TC. The dmac enable bit must be cleared before configuring.
1230 : : **/
1231 : 0 : s32 ixgbe_dmac_config_tcs(struct ixgbe_hw *hw)
1232 : : {
1233 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.dmac_config_tcs, (hw),
1234 : : IXGBE_NOT_IMPLEMENTED);
1235 : : }
1236 : :
1237 : : /**
1238 : : * ixgbe_setup_eee - Enable/disable EEE support
1239 : : * @hw: pointer to the HW structure
1240 : : * @enable_eee: boolean flag to enable EEE
1241 : : *
1242 : : * Enable/disable EEE based on enable_ee flag.
1243 : : * Auto-negotiation must be started after BASE-T EEE bits in PHY register 7.3C
1244 : : * are modified.
1245 : : *
1246 : : **/
1247 : 0 : s32 ixgbe_setup_eee(struct ixgbe_hw *hw, bool enable_eee)
1248 : : {
1249 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.setup_eee, (hw, enable_eee),
1250 : : IXGBE_NOT_IMPLEMENTED);
1251 : : }
1252 : :
1253 : : /**
1254 : : * ixgbe_set_source_address_pruning - Enable/Disable source address pruning
1255 : : * @hw: pointer to hardware structure
1256 : : * @enable: enable or disable source address pruning
1257 : : * @pool: Rx pool - Rx pool to toggle source address pruning
1258 : : **/
1259 : 0 : void ixgbe_set_source_address_pruning(struct ixgbe_hw *hw, bool enable,
1260 : : unsigned int pool)
1261 : : {
1262 [ # # ]: 0 : if (hw->mac.ops.set_source_address_pruning)
1263 : 0 : hw->mac.ops.set_source_address_pruning(hw, enable, pool);
1264 : 0 : }
1265 : :
1266 : : /**
1267 : : * ixgbe_set_ethertype_anti_spoofing - Enable/Disable Ethertype anti-spoofing
1268 : : * @hw: pointer to hardware structure
1269 : : * @enable: enable or disable switch for Ethertype anti-spoofing
1270 : : * @vf: Virtual Function pool - VF Pool to set for Ethertype anti-spoofing
1271 : : *
1272 : : **/
1273 : 0 : void ixgbe_set_ethertype_anti_spoofing(struct ixgbe_hw *hw, bool enable, int vf)
1274 : : {
1275 [ # # ]: 0 : if (hw->mac.ops.set_ethertype_anti_spoofing)
1276 : 0 : hw->mac.ops.set_ethertype_anti_spoofing(hw, enable, vf);
1277 : 0 : }
1278 : :
1279 : : /**
1280 : : * ixgbe_read_iosf_sb_reg - Read 32 bit PHY register
1281 : : * @hw: pointer to hardware structure
1282 : : * @reg_addr: 32 bit address of PHY register to read
1283 : : * @device_type: type of device you want to communicate with
1284 : : * @phy_data: Pointer to read data from PHY register
1285 : : *
1286 : : * Reads a value from a specified PHY register
1287 : : **/
1288 : 0 : s32 ixgbe_read_iosf_sb_reg(struct ixgbe_hw *hw, u32 reg_addr,
1289 : : u32 device_type, u32 *phy_data)
1290 : : {
1291 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.read_iosf_sb_reg, (hw, reg_addr,
1292 : : device_type, phy_data), IXGBE_NOT_IMPLEMENTED);
1293 : : }
1294 : :
1295 : : /**
1296 : : * ixgbe_write_iosf_sb_reg - Write 32 bit register through IOSF Sideband
1297 : : * @hw: pointer to hardware structure
1298 : : * @reg_addr: 32 bit PHY register to write
1299 : : * @device_type: type of device you want to communicate with
1300 : : * @phy_data: Data to write to the PHY register
1301 : : *
1302 : : * Writes a value to specified PHY register
1303 : : **/
1304 : 0 : s32 ixgbe_write_iosf_sb_reg(struct ixgbe_hw *hw, u32 reg_addr,
1305 : : u32 device_type, u32 phy_data)
1306 : : {
1307 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.write_iosf_sb_reg, (hw, reg_addr,
1308 : : device_type, phy_data), IXGBE_NOT_IMPLEMENTED);
1309 : : }
1310 : :
1311 : : /**
1312 : : * ixgbe_disable_mdd - Disable malicious driver detection
1313 : : * @hw: pointer to hardware structure
1314 : : *
1315 : : **/
1316 : 0 : void ixgbe_disable_mdd(struct ixgbe_hw *hw)
1317 : : {
1318 [ # # ]: 0 : if (hw->mac.ops.disable_mdd)
1319 : 0 : hw->mac.ops.disable_mdd(hw);
1320 : 0 : }
1321 : :
1322 : : /**
1323 : : * ixgbe_enable_mdd - Enable malicious driver detection
1324 : : * @hw: pointer to hardware structure
1325 : : *
1326 : : **/
1327 : 0 : void ixgbe_enable_mdd(struct ixgbe_hw *hw)
1328 : : {
1329 [ # # ]: 0 : if (hw->mac.ops.enable_mdd)
1330 : 0 : hw->mac.ops.enable_mdd(hw);
1331 : 0 : }
1332 : :
1333 : : /**
1334 : : * ixgbe_mdd_event - Handle malicious driver detection event
1335 : : * @hw: pointer to hardware structure
1336 : : * @vf_bitmap: vf bitmap of malicious vfs
1337 : : *
1338 : : **/
1339 : 0 : void ixgbe_mdd_event(struct ixgbe_hw *hw, u32 *vf_bitmap)
1340 : : {
1341 [ # # ]: 0 : if (hw->mac.ops.mdd_event)
1342 : 0 : hw->mac.ops.mdd_event(hw, vf_bitmap);
1343 : 0 : }
1344 : :
1345 : : /**
1346 : : * ixgbe_restore_mdd_vf - Restore VF that was disabled during malicious driver
1347 : : * detection event
1348 : : * @hw: pointer to hardware structure
1349 : : * @vf: vf index
1350 : : *
1351 : : **/
1352 : 0 : void ixgbe_restore_mdd_vf(struct ixgbe_hw *hw, u32 vf)
1353 : : {
1354 [ # # ]: 0 : if (hw->mac.ops.restore_mdd_vf)
1355 : 0 : hw->mac.ops.restore_mdd_vf(hw, vf);
1356 : 0 : }
1357 : :
1358 : : /**
1359 : : * ixgbe_fw_recovery_mode - Check if in FW NVM recovery mode
1360 : : * @hw: pointer to hardware structure
1361 : : *
1362 : : **/
1363 : 0 : bool ixgbe_fw_recovery_mode(struct ixgbe_hw *hw)
1364 : : {
1365 [ # # ]: 0 : if (hw->mac.ops.fw_recovery_mode)
1366 : 0 : return hw->mac.ops.fw_recovery_mode(hw);
1367 : : return false;
1368 : : }
1369 : :
1370 : : /**
1371 : : * ixgbe_enter_lplu - Transition to low power states
1372 : : * @hw: pointer to hardware structure
1373 : : *
1374 : : * Configures Low Power Link Up on transition to low power states
1375 : : * (from D0 to non-D0).
1376 : : **/
1377 : 0 : s32 ixgbe_enter_lplu(struct ixgbe_hw *hw)
1378 : : {
1379 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.enter_lplu, (hw),
1380 : : IXGBE_NOT_IMPLEMENTED);
1381 : : }
1382 : :
1383 : : /**
1384 : : * ixgbe_handle_lasi - Handle external Base T PHY interrupt
1385 : : * @hw: pointer to hardware structure
1386 : : *
1387 : : * Handle external Base T PHY interrupt. If high temperature
1388 : : * failure alarm then return error, else if link status change
1389 : : * then setup internal/external PHY link
1390 : : *
1391 : : * Return IXGBE_ERR_OVERTEMP if interrupt is high temperature
1392 : : * failure alarm, else return PHY access status.
1393 : : */
1394 : 0 : s32 ixgbe_handle_lasi(struct ixgbe_hw *hw)
1395 : : {
1396 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.handle_lasi, (hw),
1397 : : IXGBE_NOT_IMPLEMENTED);
1398 : : }
1399 : :
1400 : : /**
1401 : : * ixgbe_read_analog_reg8 - Reads 8 bit analog register
1402 : : * @hw: pointer to hardware structure
1403 : : * @reg: analog register to read
1404 : : * @val: read value
1405 : : *
1406 : : * Performs write operation to analog register specified.
1407 : : **/
1408 : 0 : s32 ixgbe_read_analog_reg8(struct ixgbe_hw *hw, u32 reg, u8 *val)
1409 : : {
1410 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.read_analog_reg8, (hw, reg,
1411 : : val), IXGBE_NOT_IMPLEMENTED);
1412 : : }
1413 : :
1414 : : /**
1415 : : * ixgbe_write_analog_reg8 - Writes 8 bit analog register
1416 : : * @hw: pointer to hardware structure
1417 : : * @reg: analog register to write
1418 : : * @val: value to write
1419 : : *
1420 : : * Performs write operation to Atlas analog register specified.
1421 : : **/
1422 : 0 : s32 ixgbe_write_analog_reg8(struct ixgbe_hw *hw, u32 reg, u8 val)
1423 : : {
1424 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.write_analog_reg8, (hw, reg,
1425 : : val), IXGBE_NOT_IMPLEMENTED);
1426 : : }
1427 : :
1428 : : /**
1429 : : * ixgbe_init_uta_tables - Initializes Unicast Table Arrays.
1430 : : * @hw: pointer to hardware structure
1431 : : *
1432 : : * Initializes the Unicast Table Arrays to zero on device load. This
1433 : : * is part of the Rx init addr execution path.
1434 : : **/
1435 : 0 : s32 ixgbe_init_uta_tables(struct ixgbe_hw *hw)
1436 : : {
1437 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.init_uta_tables, (hw),
1438 : : IXGBE_NOT_IMPLEMENTED);
1439 : : }
1440 : :
1441 : : /**
1442 : : * ixgbe_read_i2c_byte - Reads 8 bit word over I2C at specified device address
1443 : : * @hw: pointer to hardware structure
1444 : : * @byte_offset: byte offset to read
1445 : : * @dev_addr: I2C bus address to read from
1446 : : * @data: value read
1447 : : *
1448 : : * Performs byte read operation to SFP module's EEPROM over I2C interface.
1449 : : **/
1450 : 0 : s32 ixgbe_read_i2c_byte(struct ixgbe_hw *hw, u8 byte_offset, u8 dev_addr,
1451 : : u8 *data)
1452 : : {
1453 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.read_i2c_byte, (hw, byte_offset,
1454 : : dev_addr, data), IXGBE_NOT_IMPLEMENTED);
1455 : : }
1456 : :
1457 : : /**
1458 : : * ixgbe_read_i2c_byte_unlocked - Reads 8 bit word via I2C from device address
1459 : : * @hw: pointer to hardware structure
1460 : : * @byte_offset: byte offset to read
1461 : : * @dev_addr: I2C bus address to read from
1462 : : * @data: value read
1463 : : *
1464 : : * Performs byte read operation to SFP module's EEPROM over I2C interface.
1465 : : **/
1466 : 0 : s32 ixgbe_read_i2c_byte_unlocked(struct ixgbe_hw *hw, u8 byte_offset,
1467 : : u8 dev_addr, u8 *data)
1468 : : {
1469 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.read_i2c_byte_unlocked,
1470 : : (hw, byte_offset, dev_addr, data),
1471 : : IXGBE_NOT_IMPLEMENTED);
1472 : : }
1473 : :
1474 : : /**
1475 : : * ixgbe_read_link - Perform read operation on link device
1476 : : * @hw: pointer to the hardware structure
1477 : : * @addr: bus address to read from
1478 : : * @reg: device register to read from
1479 : : * @val: pointer to location to receive read value
1480 : : *
1481 : : * Returns an error code on error.
1482 : : */
1483 : 0 : s32 ixgbe_read_link(struct ixgbe_hw *hw, u8 addr, u16 reg, u16 *val)
1484 : : {
1485 [ # # ]: 0 : return ixgbe_call_func(hw, hw->link.ops.read_link, (hw, addr,
1486 : : reg, val), IXGBE_NOT_IMPLEMENTED);
1487 : : }
1488 : :
1489 : : /**
1490 : : * ixgbe_read_link_unlocked - Perform read operation on link device
1491 : : * @hw: pointer to the hardware structure
1492 : : * @addr: bus address to read from
1493 : : * @reg: device register to read from
1494 : : * @val: pointer to location to receive read value
1495 : : *
1496 : : * Returns an error code on error.
1497 : : **/
1498 : 0 : s32 ixgbe_read_link_unlocked(struct ixgbe_hw *hw, u8 addr, u16 reg, u16 *val)
1499 : : {
1500 [ # # ]: 0 : return ixgbe_call_func(hw, hw->link.ops.read_link_unlocked,
1501 : : (hw, addr, reg, val), IXGBE_NOT_IMPLEMENTED);
1502 : : }
1503 : :
1504 : : /**
1505 : : * ixgbe_write_i2c_byte - Writes 8 bit word over I2C
1506 : : * @hw: pointer to hardware structure
1507 : : * @byte_offset: byte offset to write
1508 : : * @dev_addr: I2C bus address to write to
1509 : : * @data: value to write
1510 : : *
1511 : : * Performs byte write operation to SFP module's EEPROM over I2C interface
1512 : : * at a specified device address.
1513 : : **/
1514 : 0 : s32 ixgbe_write_i2c_byte(struct ixgbe_hw *hw, u8 byte_offset, u8 dev_addr,
1515 : : u8 data)
1516 : : {
1517 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.write_i2c_byte, (hw, byte_offset,
1518 : : dev_addr, data), IXGBE_NOT_IMPLEMENTED);
1519 : : }
1520 : :
1521 : : /**
1522 : : * ixgbe_write_i2c_byte_unlocked - Writes 8 bit word over I2C
1523 : : * @hw: pointer to hardware structure
1524 : : * @byte_offset: byte offset to write
1525 : : * @dev_addr: I2C bus address to write to
1526 : : * @data: value to write
1527 : : *
1528 : : * Performs byte write operation to SFP module's EEPROM over I2C interface
1529 : : * at a specified device address.
1530 : : **/
1531 : 0 : s32 ixgbe_write_i2c_byte_unlocked(struct ixgbe_hw *hw, u8 byte_offset,
1532 : : u8 dev_addr, u8 data)
1533 : : {
1534 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.write_i2c_byte_unlocked,
1535 : : (hw, byte_offset, dev_addr, data),
1536 : : IXGBE_NOT_IMPLEMENTED);
1537 : : }
1538 : :
1539 : : /**
1540 : : * ixgbe_write_link - Perform write operation on link device
1541 : : * @hw: pointer to the hardware structure
1542 : : * @addr: bus address to write to
1543 : : * @reg: device register to write to
1544 : : * @val: value to write
1545 : : *
1546 : : * Returns an error code on error.
1547 : : */
1548 : 0 : s32 ixgbe_write_link(struct ixgbe_hw *hw, u8 addr, u16 reg, u16 val)
1549 : : {
1550 [ # # ]: 0 : return ixgbe_call_func(hw, hw->link.ops.write_link,
1551 : : (hw, addr, reg, val), IXGBE_NOT_IMPLEMENTED);
1552 : : }
1553 : :
1554 : : /**
1555 : : * ixgbe_write_link_unlocked - Perform write operation on link device
1556 : : * @hw: pointer to the hardware structure
1557 : : * @addr: bus address to write to
1558 : : * @reg: device register to write to
1559 : : * @val: value to write
1560 : : *
1561 : : * Returns an error code on error.
1562 : : **/
1563 : 0 : s32 ixgbe_write_link_unlocked(struct ixgbe_hw *hw, u8 addr, u16 reg, u16 val)
1564 : : {
1565 [ # # ]: 0 : return ixgbe_call_func(hw, hw->link.ops.write_link_unlocked,
1566 : : (hw, addr, reg, val), IXGBE_NOT_IMPLEMENTED);
1567 : : }
1568 : :
1569 : : /**
1570 : : * ixgbe_write_i2c_eeprom - Writes 8 bit EEPROM word over I2C interface
1571 : : * @hw: pointer to hardware structure
1572 : : * @byte_offset: EEPROM byte offset to write
1573 : : * @eeprom_data: value to write
1574 : : *
1575 : : * Performs byte write operation to SFP module's EEPROM over I2C interface.
1576 : : **/
1577 : 0 : s32 ixgbe_write_i2c_eeprom(struct ixgbe_hw *hw,
1578 : : u8 byte_offset, u8 eeprom_data)
1579 : : {
1580 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.write_i2c_eeprom,
1581 : : (hw, byte_offset, eeprom_data),
1582 : : IXGBE_NOT_IMPLEMENTED);
1583 : : }
1584 : :
1585 : : /**
1586 : : * ixgbe_read_i2c_eeprom - Reads 8 bit EEPROM word over I2C interface
1587 : : * @hw: pointer to hardware structure
1588 : : * @byte_offset: EEPROM byte offset to read
1589 : : * @eeprom_data: value read
1590 : : *
1591 : : * Performs byte read operation to SFP module's EEPROM over I2C interface.
1592 : : **/
1593 : 0 : s32 ixgbe_read_i2c_eeprom(struct ixgbe_hw *hw, u8 byte_offset, u8 *eeprom_data)
1594 : : {
1595 [ # # ]: 0 : return ixgbe_call_func(hw, hw->phy.ops.read_i2c_eeprom,
1596 : : (hw, byte_offset, eeprom_data),
1597 : : IXGBE_NOT_IMPLEMENTED);
1598 : : }
1599 : :
1600 : : /**
1601 : : * ixgbe_get_supported_physical_layer - Returns physical layer type
1602 : : * @hw: pointer to hardware structure
1603 : : *
1604 : : * Determines physical layer capabilities of the current configuration.
1605 : : **/
1606 : 0 : u64 ixgbe_get_supported_physical_layer(struct ixgbe_hw *hw)
1607 : : {
1608 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_supported_physical_layer,
1609 : : (hw), IXGBE_PHYSICAL_LAYER_UNKNOWN);
1610 : : }
1611 : :
1612 : : /**
1613 : : * ixgbe_enable_rx_dma - Enables Rx DMA unit, dependent on device specifics
1614 : : * @hw: pointer to hardware structure
1615 : : * @regval: bitfield to write to the Rx DMA register
1616 : : *
1617 : : * Enables the Rx DMA unit of the device.
1618 : : **/
1619 : 0 : s32 ixgbe_enable_rx_dma(struct ixgbe_hw *hw, u32 regval)
1620 : : {
1621 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.enable_rx_dma,
1622 : : (hw, regval), IXGBE_NOT_IMPLEMENTED);
1623 : : }
1624 : :
1625 : : /**
1626 : : * ixgbe_disable_sec_rx_path - Stops the receive data path
1627 : : * @hw: pointer to hardware structure
1628 : : *
1629 : : * Stops the receive data path.
1630 : : **/
1631 : 0 : s32 ixgbe_disable_sec_rx_path(struct ixgbe_hw *hw)
1632 : : {
1633 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.disable_sec_rx_path,
1634 : : (hw), IXGBE_NOT_IMPLEMENTED);
1635 : : }
1636 : :
1637 : : /**
1638 : : * ixgbe_enable_sec_rx_path - Enables the receive data path
1639 : : * @hw: pointer to hardware structure
1640 : : *
1641 : : * Enables the receive data path.
1642 : : **/
1643 : 0 : s32 ixgbe_enable_sec_rx_path(struct ixgbe_hw *hw)
1644 : : {
1645 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.enable_sec_rx_path,
1646 : : (hw), IXGBE_NOT_IMPLEMENTED);
1647 : : }
1648 : :
1649 : : /**
1650 : : * ixgbe_acquire_swfw_semaphore - Acquire SWFW semaphore
1651 : : * @hw: pointer to hardware structure
1652 : : * @mask: Mask to specify which semaphore to acquire
1653 : : *
1654 : : * Acquires the SWFW semaphore through SW_FW_SYNC register for the specified
1655 : : * function (CSR, PHY0, PHY1, EEPROM, Flash)
1656 : : **/
1657 : 0 : s32 ixgbe_acquire_swfw_semaphore(struct ixgbe_hw *hw, u32 mask)
1658 : : {
1659 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.acquire_swfw_sync,
1660 : : (hw, mask), IXGBE_NOT_IMPLEMENTED);
1661 : : }
1662 : :
1663 : : /**
1664 : : * ixgbe_release_swfw_semaphore - Release SWFW semaphore
1665 : : * @hw: pointer to hardware structure
1666 : : * @mask: Mask to specify which semaphore to release
1667 : : *
1668 : : * Releases the SWFW semaphore through SW_FW_SYNC register for the specified
1669 : : * function (CSR, PHY0, PHY1, EEPROM, Flash)
1670 : : **/
1671 : 0 : void ixgbe_release_swfw_semaphore(struct ixgbe_hw *hw, u32 mask)
1672 : : {
1673 [ # # ]: 0 : if (hw->mac.ops.release_swfw_sync)
1674 : 0 : hw->mac.ops.release_swfw_sync(hw, mask);
1675 : 0 : }
1676 : :
1677 : : /**
1678 : : * ixgbe_init_swfw_semaphore - Clean up SWFW semaphore
1679 : : * @hw: pointer to hardware structure
1680 : : *
1681 : : * Attempts to acquire the SWFW semaphore through SW_FW_SYNC register.
1682 : : * Regardless of whether is succeeds or not it then release the semaphore.
1683 : : * This is function is called to recover from catastrophic failures that
1684 : : * may have left the semaphore locked.
1685 : : **/
1686 : 0 : void ixgbe_init_swfw_semaphore(struct ixgbe_hw *hw)
1687 : : {
1688 [ # # ]: 0 : if (hw->mac.ops.init_swfw_sync)
1689 : 0 : hw->mac.ops.init_swfw_sync(hw);
1690 : 0 : }
1691 : :
1692 : :
1693 : 0 : void ixgbe_disable_rx(struct ixgbe_hw *hw)
1694 : : {
1695 [ # # ]: 0 : if (hw->mac.ops.disable_rx)
1696 : 0 : hw->mac.ops.disable_rx(hw);
1697 : 0 : }
1698 : :
1699 : 0 : void ixgbe_enable_rx(struct ixgbe_hw *hw)
1700 : : {
1701 [ # # ]: 0 : if (hw->mac.ops.enable_rx)
1702 : 0 : hw->mac.ops.enable_rx(hw);
1703 : 0 : }
1704 : :
1705 : : /**
1706 : : * ixgbe_set_rate_select_speed - Set module link speed
1707 : : * @hw: pointer to hardware structure
1708 : : * @speed: link speed to set
1709 : : *
1710 : : * Set module link speed via the rate select.
1711 : : */
1712 : 0 : void ixgbe_set_rate_select_speed(struct ixgbe_hw *hw, ixgbe_link_speed speed)
1713 : : {
1714 [ # # ]: 0 : if (hw->mac.ops.set_rate_select_speed)
1715 : 0 : hw->mac.ops.set_rate_select_speed(hw, speed);
1716 : 0 : }
1717 : :
1718 : : /**
1719 : : * ixgbe_get_fw_version - get FW version
1720 : : * @hw: pointer to hardware structure
1721 : : *
1722 : : * Get the current FW version.
1723 : : *
1724 : : * Return: the exit code of the operation or IXGBE_NOT_IMPLEMENTED
1725 : : * if the function is not implemented.
1726 : : */
1727 : 0 : s32 ixgbe_get_fw_version(struct ixgbe_hw *hw)
1728 : : {
1729 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_fw_version,
1730 : : (hw), IXGBE_NOT_IMPLEMENTED);
1731 : : }
1732 : :
1733 : : /**
1734 : : * ixgbe_get_nvm_ver - get NVM version
1735 : : * @hw: pointer to hardware structure
1736 : : * @nvm: pointer to NVM info structure
1737 : : *
1738 : : * Get the current NVM version.
1739 : : *
1740 : : * Return: the exit code of the operation or IXGBE_NOT_IMPLEMENTED
1741 : : * if the function is not implemented.
1742 : : */
1743 : 0 : s32 ixgbe_get_nvm_ver(struct ixgbe_hw* hw, struct ixgbe_nvm_info *nvm)
1744 : : {
1745 [ # # ]: 0 : return ixgbe_call_func(hw, hw->mac.ops.get_nvm_version,
1746 : : (hw, nvm), IXGBE_NOT_IMPLEMENTED);
1747 : : }
|