net/ice/base: add helper function to redirect flags
[dpdk.git] / drivers / net / txgbe / base / txgbe_hw.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2015-2020 Beijing WangXun Technology Co., Ltd.
3  * Copyright(c) 2010-2017 Intel Corporation
4  */
5
6 #ifndef _TXGBE_HW_H_
7 #define _TXGBE_HW_H_
8
9 #include "txgbe_type.h"
10
11 s32 txgbe_init_hw(struct txgbe_hw *hw);
12 s32 txgbe_start_hw(struct txgbe_hw *hw);
13 s32 txgbe_stop_hw(struct txgbe_hw *hw);
14 s32 txgbe_start_hw_gen2(struct txgbe_hw *hw);
15 s32 txgbe_clear_hw_cntrs(struct txgbe_hw *hw);
16 s32 txgbe_get_mac_addr(struct txgbe_hw *hw, u8 *mac_addr);
17
18 void txgbe_set_lan_id_multi_port(struct txgbe_hw *hw);
19
20 s32 txgbe_led_on(struct txgbe_hw *hw, u32 index);
21 s32 txgbe_led_off(struct txgbe_hw *hw, u32 index);
22
23 s32 txgbe_set_rar(struct txgbe_hw *hw, u32 index, u8 *addr, u32 vmdq,
24                           u32 enable_addr);
25 s32 txgbe_clear_rar(struct txgbe_hw *hw, u32 index);
26 s32 txgbe_init_rx_addrs(struct txgbe_hw *hw);
27 s32 txgbe_update_mc_addr_list(struct txgbe_hw *hw, u8 *mc_addr_list,
28                                       u32 mc_addr_count,
29                                       txgbe_mc_addr_itr func, bool clear);
30 s32 txgbe_disable_sec_rx_path(struct txgbe_hw *hw);
31 s32 txgbe_enable_sec_rx_path(struct txgbe_hw *hw);
32 s32 txgbe_disable_sec_tx_path(struct txgbe_hw *hw);
33 s32 txgbe_enable_sec_tx_path(struct txgbe_hw *hw);
34
35 s32 txgbe_fc_enable(struct txgbe_hw *hw);
36 bool txgbe_device_supports_autoneg_fc(struct txgbe_hw *hw);
37 void txgbe_fc_autoneg(struct txgbe_hw *hw);
38 s32 txgbe_setup_fc(struct txgbe_hw *hw);
39
40 s32 txgbe_validate_mac_addr(u8 *mac_addr);
41 s32 txgbe_acquire_swfw_sync(struct txgbe_hw *hw, u32 mask);
42 void txgbe_release_swfw_sync(struct txgbe_hw *hw, u32 mask);
43
44 s32 txgbe_get_san_mac_addr(struct txgbe_hw *hw, u8 *san_mac_addr);
45 s32 txgbe_set_san_mac_addr(struct txgbe_hw *hw, u8 *san_mac_addr);
46
47 s32 txgbe_set_vmdq(struct txgbe_hw *hw, u32 rar, u32 vmdq);
48 s32 txgbe_clear_vmdq(struct txgbe_hw *hw, u32 rar, u32 vmdq);
49 s32 txgbe_init_uta_tables(struct txgbe_hw *hw);
50 s32 txgbe_set_vfta(struct txgbe_hw *hw, u32 vlan,
51                          u32 vind, bool vlan_on, bool vlvf_bypass);
52 s32 txgbe_set_vlvf(struct txgbe_hw *hw, u32 vlan, u32 vind,
53                            bool vlan_on, u32 *vfta_delta, u32 vfta,
54                            bool vlvf_bypass);
55 s32 txgbe_clear_vfta(struct txgbe_hw *hw);
56 s32 txgbe_find_vlvf_slot(struct txgbe_hw *hw, u32 vlan, bool vlvf_bypass);
57
58 s32 txgbe_check_mac_link(struct txgbe_hw *hw,
59                                u32 *speed,
60                                bool *link_up, bool link_up_wait_to_complete);
61
62 s32 txgbe_get_wwn_prefix(struct txgbe_hw *hw, u16 *wwnn_prefix,
63                                  u16 *wwpn_prefix);
64
65 void txgbe_set_mac_anti_spoofing(struct txgbe_hw *hw, bool enable, int vf);
66 void txgbe_set_ethertype_anti_spoofing(struct txgbe_hw *hw,
67                 bool enable, int vf);
68 s32 txgbe_get_device_caps(struct txgbe_hw *hw, u16 *device_caps);
69 void txgbe_set_pba(struct txgbe_hw *hw, int num_pb, u32 headroom,
70                              int strategy);
71 void txgbe_clear_tx_pending(struct txgbe_hw *hw);
72
73 s32 txgbe_reset_pipeline_raptor(struct txgbe_hw *hw);
74
75 s32 txgbe_get_thermal_sensor_data(struct txgbe_hw *hw);
76 s32 txgbe_init_thermal_sensor_thresh(struct txgbe_hw *hw);
77
78 void txgbe_disable_rx(struct txgbe_hw *hw);
79 void txgbe_enable_rx(struct txgbe_hw *hw);
80 s32 txgbe_setup_mac_link_multispeed_fiber(struct txgbe_hw *hw,
81                                           u32 speed,
82                                           bool autoneg_wait_to_complete);
83 void txgbe_set_mta(struct txgbe_hw *hw, u8 *mc_addr);
84 s32 txgbe_negotiate_fc(struct txgbe_hw *hw, u32 adv_reg, u32 lp_reg,
85                         u32 adv_sym, u32 adv_asm, u32 lp_sym, u32 lp_asm);
86 s32 txgbe_init_shared_code(struct txgbe_hw *hw);
87 s32 txgbe_set_mac_type(struct txgbe_hw *hw);
88 s32 txgbe_init_ops_pf(struct txgbe_hw *hw);
89 s32 txgbe_get_link_capabilities_raptor(struct txgbe_hw *hw,
90                                       u32 *speed, bool *autoneg);
91 u32 txgbe_get_media_type_raptor(struct txgbe_hw *hw);
92 void txgbe_disable_tx_laser_multispeed_fiber(struct txgbe_hw *hw);
93 void txgbe_enable_tx_laser_multispeed_fiber(struct txgbe_hw *hw);
94 void txgbe_flap_tx_laser_multispeed_fiber(struct txgbe_hw *hw);
95 void txgbe_set_hard_rate_select_speed(struct txgbe_hw *hw,
96                                         u32 speed);
97 s32 txgbe_setup_mac_link_smartspeed(struct txgbe_hw *hw,
98                                     u32 speed,
99                                     bool autoneg_wait_to_complete);
100 s32 txgbe_start_mac_link_raptor(struct txgbe_hw *hw,
101                                bool autoneg_wait_to_complete);
102 s32 txgbe_setup_mac_link(struct txgbe_hw *hw, u32 speed,
103                                bool autoneg_wait_to_complete);
104 s32 txgbe_setup_sfp_modules(struct txgbe_hw *hw);
105 void txgbe_init_mac_link_ops(struct txgbe_hw *hw);
106 s32 txgbe_reset_hw(struct txgbe_hw *hw);
107 s32 txgbe_start_hw_raptor(struct txgbe_hw *hw);
108 s32 txgbe_init_phy_raptor(struct txgbe_hw *hw);
109 s32 txgbe_enable_rx_dma_raptor(struct txgbe_hw *hw, u32 regval);
110 s32 txgbe_prot_autoc_read_raptor(struct txgbe_hw *hw, bool *locked, u64 *value);
111 s32 txgbe_prot_autoc_write_raptor(struct txgbe_hw *hw, bool locked, u64 value);
112 s32 txgbe_reinit_fdir_tables(struct txgbe_hw *hw);
113 bool txgbe_verify_lesm_fw_enabled_raptor(struct txgbe_hw *hw);
114 #endif /* _TXGBE_HW_H_ */