Home
last modified time | relevance | path

Searched refs:ieee80211_hw (Results 1 – 25 of 549) sorted by relevance

12345678910>>...22

/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/
Dphy.h55 bool rtl92c_phy_bb_config(struct ieee80211_hw *hw);
56 u32 rtl92c_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask);
57 void rtl92c_phy_set_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask,
59 u32 rtl92c_phy_query_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
61 void rtl92ce_phy_set_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
63 bool rtl92c_phy_mac_config(struct ieee80211_hw *hw);
64 bool rtl92ce_phy_bb_config(struct ieee80211_hw *hw);
65 bool rtl92c_phy_rf_config(struct ieee80211_hw *hw);
66 bool rtl92c_phy_config_rf_with_feaderfile(struct ieee80211_hw *hw,
68 void rtl92c_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw);
[all …]
Dhw.h20 void rtl92ce_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
21 void rtl92ce_read_eeprom_info(struct ieee80211_hw *hw);
22 void rtl92ce_interrupt_recognized(struct ieee80211_hw *hw,
24 int rtl92ce_hw_init(struct ieee80211_hw *hw);
25 void rtl92ce_card_disable(struct ieee80211_hw *hw);
26 void rtl92ce_enable_interrupt(struct ieee80211_hw *hw);
27 void rtl92ce_disable_interrupt(struct ieee80211_hw *hw);
28 int rtl92ce_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type);
29 void rtl92ce_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid);
30 void rtl92ce_set_qos(struct ieee80211_hw *hw, int aci);
[all …]
/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/
Dhw.h7 void rtl8821ae_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
8 void rtl8821ae_read_eeprom_info(struct ieee80211_hw *hw);
10 void rtl8821ae_interrupt_recognized(struct ieee80211_hw *hw,
12 int rtl8821ae_hw_init(struct ieee80211_hw *hw);
13 void rtl8821ae_card_disable(struct ieee80211_hw *hw);
14 void rtl8821ae_enable_interrupt(struct ieee80211_hw *hw);
15 void rtl8821ae_disable_interrupt(struct ieee80211_hw *hw);
16 int rtl8821ae_set_network_type(struct ieee80211_hw *hw,
18 void rtl8821ae_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid);
19 void rtl8821ae_set_qos(struct ieee80211_hw *hw, int aci);
[all …]
Dphy.h186 u32 rtl8821ae_phy_query_bb_reg(struct ieee80211_hw *hw,
188 void rtl8821ae_phy_set_bb_reg(struct ieee80211_hw *hw,
190 u32 rtl8821ae_phy_query_rf_reg(struct ieee80211_hw *hw,
193 void rtl8821ae_phy_set_rf_reg(struct ieee80211_hw *hw,
196 bool rtl8821ae_phy_mac_config(struct ieee80211_hw *hw);
197 bool rtl8821ae_phy_bb_config(struct ieee80211_hw *hw);
198 bool rtl8821ae_phy_rf_config(struct ieee80211_hw *hw);
199 void rtl8821ae_phy_switch_wirelessband(struct ieee80211_hw *hw,
201 void rtl8821ae_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw);
202 void rtl8821ae_phy_get_txpower_level(struct ieee80211_hw *hw,
[all …]
/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/
Dhw.h7 void rtl92ee_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
8 void rtl92ee_read_eeprom_info(struct ieee80211_hw *hw);
9 void rtl92ee_interrupt_recognized(struct ieee80211_hw *hw,
11 int rtl92ee_hw_init(struct ieee80211_hw *hw);
12 void rtl92ee_card_disable(struct ieee80211_hw *hw);
13 void rtl92ee_enable_interrupt(struct ieee80211_hw *hw);
14 void rtl92ee_disable_interrupt(struct ieee80211_hw *hw);
15 int rtl92ee_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type);
16 void rtl92ee_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid);
17 void rtl92ee_set_qos(struct ieee80211_hw *hw, int aci);
[all …]
Dphy.h97 u32 rtl92ee_phy_query_bb_reg(struct ieee80211_hw *hw,
99 void rtl92ee_phy_set_bb_reg(struct ieee80211_hw *hw,
101 u32 rtl92ee_phy_query_rf_reg(struct ieee80211_hw *hw,
104 void rtl92ee_phy_set_rf_reg(struct ieee80211_hw *hw,
107 bool rtl92ee_phy_mac_config(struct ieee80211_hw *hw);
108 bool rtl92ee_phy_bb_config(struct ieee80211_hw *hw);
109 bool rtl92ee_phy_rf_config(struct ieee80211_hw *hw);
110 void rtl92ee_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw);
111 void rtl92ee_phy_get_txpower_level(struct ieee80211_hw *hw,
113 void rtl92ee_phy_set_txpower_level(struct ieee80211_hw *hw, u8 channel);
[all …]
/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/rtl8723be/
Dhw.h7 void rtl8723be_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
8 void rtl8723be_read_eeprom_info(struct ieee80211_hw *hw);
10 void rtl8723be_interrupt_recognized(struct ieee80211_hw *hw,
12 int rtl8723be_hw_init(struct ieee80211_hw *hw);
13 void rtl8723be_card_disable(struct ieee80211_hw *hw);
14 void rtl8723be_enable_interrupt(struct ieee80211_hw *hw);
15 void rtl8723be_disable_interrupt(struct ieee80211_hw *hw);
16 int rtl8723be_set_network_type(struct ieee80211_hw *hw,
18 void rtl8723be_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid);
19 void rtl8723be_set_qos(struct ieee80211_hw *hw, int aci);
[all …]
Dphy.h85 u32 rtl8723be_phy_query_rf_reg(struct ieee80211_hw *hw,
88 void rtl8723be_phy_set_rf_reg(struct ieee80211_hw *hw,
91 bool rtl8723be_phy_mac_config(struct ieee80211_hw *hw);
92 bool rtl8723be_phy_bb_config(struct ieee80211_hw *hw);
93 bool rtl8723be_phy_rf_config(struct ieee80211_hw *hw);
94 void rtl8723be_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw);
95 void rtl8723be_phy_set_txpower_level(struct ieee80211_hw *hw,
97 void rtl8723be_phy_scan_operation_backup(struct ieee80211_hw *hw,
99 void rtl8723be_phy_set_bw_mode_callback(struct ieee80211_hw *hw);
100 void rtl8723be_phy_set_bw_mode(struct ieee80211_hw *hw,
[all …]
/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/
Dhw.h7 void rtl88ee_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
8 void rtl88ee_read_eeprom_info(struct ieee80211_hw *hw);
9 void rtl88ee_interrupt_recognized(struct ieee80211_hw *hw,
11 int rtl88ee_hw_init(struct ieee80211_hw *hw);
12 void rtl88ee_card_disable(struct ieee80211_hw *hw);
13 void rtl88ee_enable_interrupt(struct ieee80211_hw *hw);
14 void rtl88ee_disable_interrupt(struct ieee80211_hw *hw);
15 int rtl88ee_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type);
16 void rtl88ee_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid);
17 void rtl88ee_set_qos(struct ieee80211_hw *hw, int aci);
[all …]
/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/
Dhw.h11 void rtl8723e_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
12 void rtl8723e_read_eeprom_info(struct ieee80211_hw *hw);
14 void rtl8723e_interrupt_recognized(struct ieee80211_hw *hw,
16 int rtl8723e_hw_init(struct ieee80211_hw *hw);
17 void rtl8723e_card_disable(struct ieee80211_hw *hw);
18 void rtl8723e_enable_interrupt(struct ieee80211_hw *hw);
19 void rtl8723e_disable_interrupt(struct ieee80211_hw *hw);
20 int rtl8723e_set_network_type(struct ieee80211_hw *hw,
22 void rtl8723e_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid);
23 void rtl8723e_set_qos(struct ieee80211_hw *hw, int aci);
[all …]
Dphy.h147 u32 rtl8723e_phy_query_rf_reg(struct ieee80211_hw *hw,
150 void rtl8723e_phy_set_rf_reg(struct ieee80211_hw *hw,
153 bool rtl8723e_phy_mac_config(struct ieee80211_hw *hw);
154 bool rtl8723e_phy_bb_config(struct ieee80211_hw *hw);
155 bool rtl8723e_phy_rf_config(struct ieee80211_hw *hw);
156 bool rtl92c_phy_config_rf_with_feaderfile(struct ieee80211_hw *hw,
158 void rtl8723e_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw);
159 void rtl8723e_phy_get_txpower_level(struct ieee80211_hw *hw,
161 void rtl8723e_phy_set_txpower_level(struct ieee80211_hw *hw, u8 channel);
162 bool rtl8723e_phy_update_txpower_dbm(struct ieee80211_hw *hw,
[all …]
/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/rtl8192se/
Dhw.h20 void rtl92se_get_hw_reg(struct ieee80211_hw *hw,
22 void rtl92se_read_eeprom_info(struct ieee80211_hw *hw);
23 void rtl92se_interrupt_recognized(struct ieee80211_hw *hw,
25 int rtl92se_hw_init(struct ieee80211_hw *hw);
26 void rtl92se_card_disable(struct ieee80211_hw *hw);
27 void rtl92se_enable_interrupt(struct ieee80211_hw *hw);
28 void rtl92se_disable_interrupt(struct ieee80211_hw *hw);
29 int rtl92se_set_network_type(struct ieee80211_hw *hw,
31 void rtl92se_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid);
33 void rtl92se_set_qos(struct ieee80211_hw *hw, int aci);
[all …]
Dphy.h52 u32 rtl92s_phy_query_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask);
53 void rtl92s_phy_set_bb_reg(struct ieee80211_hw *hw, u32 regaddr, u32 bitmask,
55 void rtl92s_phy_scan_operation_backup(struct ieee80211_hw *hw, u8 operation);
56 u32 rtl92s_phy_query_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
58 void rtl92s_phy_set_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
60 void rtl92s_phy_set_bw_mode(struct ieee80211_hw *hw,
62 u8 rtl92s_phy_sw_chnl(struct ieee80211_hw *hw);
63 bool rtl92s_phy_set_rf_power_state(struct ieee80211_hw *hw,
65 bool rtl92s_phy_mac_config(struct ieee80211_hw *hw);
66 void rtl92s_phy_switch_ephy_parameter(struct ieee80211_hw *hw);
[all …]
/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/rtl8192c/
Dphy_common.h162 u32 rtl92c_phy_query_bb_reg(struct ieee80211_hw *hw,
164 void rtl92c_phy_set_bb_reg(struct ieee80211_hw *hw,
166 u32 rtl92c_phy_query_rf_reg(struct ieee80211_hw *hw,
169 bool rtl92c_phy_mac_config(struct ieee80211_hw *hw);
170 bool rtl92c_phy_bb_config(struct ieee80211_hw *hw);
171 bool rtl92c_phy_rf_config(struct ieee80211_hw *hw);
172 bool rtl92c_phy_config_rf_with_feaderfile(struct ieee80211_hw *hw,
174 void rtl92c_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw);
175 void rtl92c_phy_get_txpower_level(struct ieee80211_hw *hw,
177 void rtl92c_phy_set_txpower_level(struct ieee80211_hw *hw, u8 channel);
[all …]
/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/
Dbase.h68 int rtl_init_core(struct ieee80211_hw *hw);
69 void rtl_deinit_core(struct ieee80211_hw *hw);
70 void rtl_init_rx_config(struct ieee80211_hw *hw);
71 void rtl_init_rfkill(struct ieee80211_hw *hw);
72 void rtl_deinit_rfkill(struct ieee80211_hw *hw);
75 void rtl_deinit_deferred_work(struct ieee80211_hw *hw, bool ips_wq);
77 bool rtl_action_proc(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx);
78 int rtlwifi_rate_mapping(struct ieee80211_hw *hw, bool isht,
80 bool rtl_tx_mgmt_proc(struct ieee80211_hw *hw, struct sk_buff *skb);
81 u8 rtl_is_special_data(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx,
[all …]
/linux-6.12.1/drivers/net/wireless/silabs/wfx/
Dsta.h22 int wfx_start(struct ieee80211_hw *hw);
23 void wfx_stop(struct ieee80211_hw *hw, bool suspend);
24 int wfx_config(struct ieee80211_hw *hw, u32 changed);
25 int wfx_set_rts_threshold(struct ieee80211_hw *hw, u32 value);
26 void wfx_set_default_unicast_key(struct ieee80211_hw *hw, struct ieee80211_vif *vif, int idx);
27 void wfx_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags,
30 int wfx_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
31 void wfx_remove_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
32 int wfx_start_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
34 void wfx_stop_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
[all …]
/linux-6.12.1/include/net/
Dmac80211.h3019 struct ieee80211_hw { struct
3058 static inline bool _ieee80211_hw_check(struct ieee80211_hw *hw, in _ieee80211_hw_check() argument
3065 static inline void _ieee80211_hw_set(struct ieee80211_hw *hw, in _ieee80211_hw_set()
3123 struct ieee80211_hw *wiphy_to_ieee80211_hw(struct wiphy *wiphy);
3131 static inline void SET_IEEE80211_DEV(struct ieee80211_hw *hw, struct device *dev) in SET_IEEE80211_DEV()
3142 static inline void SET_IEEE80211_PERM_ADDR(struct ieee80211_hw *hw, const u8 *addr) in SET_IEEE80211_PERM_ADDR()
3148 ieee80211_get_tx_rate(const struct ieee80211_hw *hw, in ieee80211_get_tx_rate()
3157 ieee80211_get_rts_cts_rate(const struct ieee80211_hw *hw, in ieee80211_get_rts_cts_rate()
3166 ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw, in ieee80211_get_alt_retry_rate()
3182 void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb);
[all …]
/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/rtl8192du/
Dphy.h7 u32 rtl92du_phy_query_bb_reg(struct ieee80211_hw *hw,
9 void rtl92du_phy_set_bb_reg(struct ieee80211_hw *hw,
11 bool rtl92du_phy_mac_config(struct ieee80211_hw *hw);
12 bool rtl92du_phy_bb_config(struct ieee80211_hw *hw);
13 bool rtl92du_phy_rf_config(struct ieee80211_hw *hw);
14 void rtl92du_phy_set_bw_mode(struct ieee80211_hw *hw,
16 u8 rtl92du_phy_sw_chnl(struct ieee80211_hw *hw);
17 bool rtl92du_phy_config_rf_with_headerfile(struct ieee80211_hw *hw,
20 bool rtl92du_phy_set_rf_power_state(struct ieee80211_hw *hw,
23 void rtl92du_phy_set_poweron(struct ieee80211_hw *hw);
[all …]
Dhw.h7 void rtl92du_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
8 void rtl92du_set_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
9 void rtl92du_read_chip_version(struct ieee80211_hw *hw);
10 int rtl92du_hw_init(struct ieee80211_hw *hw);
11 void rtl92du_card_disable(struct ieee80211_hw *hw);
12 void rtl92du_enable_interrupt(struct ieee80211_hw *hw);
13 void rtl92du_disable_interrupt(struct ieee80211_hw *hw);
14 int rtl92du_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type);
15 void rtl92du_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid);
16 void rtl92du_set_beacon_related_registers(struct ieee80211_hw *hw);
[all …]
/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/rtl8192de/
Dhw.h7 void rtl92de_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
8 void rtl92de_interrupt_recognized(struct ieee80211_hw *hw,
10 int rtl92de_hw_init(struct ieee80211_hw *hw);
11 void rtl92de_card_disable(struct ieee80211_hw *hw);
12 void rtl92de_enable_interrupt(struct ieee80211_hw *hw);
13 void rtl92de_disable_interrupt(struct ieee80211_hw *hw);
14 int rtl92de_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type);
15 void rtl92de_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid);
16 void rtl92de_set_beacon_related_registers(struct ieee80211_hw *hw);
17 void rtl92de_set_beacon_interval(struct ieee80211_hw *hw);
[all …]
Dphy.h64 u32 rtl92d_phy_query_bb_reg(struct ieee80211_hw *hw,
66 void rtl92d_phy_set_bb_reg(struct ieee80211_hw *hw,
68 bool rtl92d_phy_mac_config(struct ieee80211_hw *hw);
69 bool rtl92d_phy_bb_config(struct ieee80211_hw *hw);
70 bool rtl92d_phy_rf_config(struct ieee80211_hw *hw);
71 bool rtl92c_phy_config_rf_with_feaderfile(struct ieee80211_hw *hw,
73 void rtl92d_phy_set_bw_mode(struct ieee80211_hw *hw,
75 u8 rtl92d_phy_sw_chnl(struct ieee80211_hw *hw);
76 bool rtl92d_phy_config_rf_with_headerfile(struct ieee80211_hw *hw,
79 bool rtl92d_phy_set_rf_power_state(struct ieee80211_hw *hw,
[all …]
/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/
Dhw.h58 void rtl92cu_read_eeprom_info(struct ieee80211_hw *hw);
59 void rtl92cu_enable_hw_security_config(struct ieee80211_hw *hw);
60 int rtl92cu_hw_init(struct ieee80211_hw *hw);
61 void rtl92cu_card_disable(struct ieee80211_hw *hw);
62 int rtl92cu_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type);
63 void rtl92cu_set_beacon_related_registers(struct ieee80211_hw *hw);
64 void rtl92cu_set_beacon_interval(struct ieee80211_hw *hw);
65 void rtl92cu_update_interrupt_mask(struct ieee80211_hw *hw,
67 void rtl92cu_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
68 void rtl92cu_set_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
[all …]
Dmac.h11 void rtl92c_read_chip_version(struct ieee80211_hw *hw);
12 bool rtl92c_llt_write(struct ieee80211_hw *hw, u32 address, u32 data);
13 bool rtl92c_init_llt_table(struct ieee80211_hw *hw, u32 boundary);
14 void rtl92c_set_key(struct ieee80211_hw *hw, u32 key_index,
17 void rtl92c_enable_interrupt(struct ieee80211_hw *hw);
18 void rtl92c_disable_interrupt(struct ieee80211_hw *hw);
19 void rtl92c_set_qos(struct ieee80211_hw *hw, int aci);
24 void rtl92c_init_interrupt(struct ieee80211_hw *hw);
25 void rtl92c_init_driver_info_size(struct ieee80211_hw *hw, u8 size);
27 int rtl92c_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type);
[all …]
Dphy.h6 void rtl92cu_bb_block_on(struct ieee80211_hw *hw);
7 bool rtl8192_phy_check_is_legal_rfpath(struct ieee80211_hw *hw, u32 rfpath);
8 void rtl92c_phy_set_io(struct ieee80211_hw *hw);
9 bool _rtl92cu_phy_config_mac_with_headerfile(struct ieee80211_hw *hw);
10 bool rtl92cu_phy_bb_config(struct ieee80211_hw *hw);
11 u32 rtl92cu_phy_query_rf_reg(struct ieee80211_hw *hw,
13 void rtl92cu_phy_set_rf_reg(struct ieee80211_hw *hw,
16 bool rtl92cu_phy_mac_config(struct ieee80211_hw *hw);
17 bool _rtl92cu_phy_config_bb_with_pgheaderfile(struct ieee80211_hw *hw,
19 void _rtl92cu_phy_lc_calibrate(struct ieee80211_hw *hw, bool is2t);
[all …]
/linux-6.12.1/drivers/net/wireless/realtek/rtlwifi/rtl8192d/
Dphy_common.h30 static inline void rtl92d_acquire_cckandrw_pagea_ctl(struct ieee80211_hw *hw, in rtl92d_acquire_cckandrw_pagea_ctl()
42 static inline void rtl92d_release_cckandrw_pagea_ctl(struct ieee80211_hw *hw, in rtl92d_release_cckandrw_pagea_ctl()
55 u32 rtl92d_phy_query_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
57 void rtl92d_phy_set_rf_reg(struct ieee80211_hw *hw, enum radio_path rfpath,
59 void rtl92d_phy_init_bb_rf_register_definition(struct ieee80211_hw *hw);
60 void rtl92d_store_pwrindex_diffrate_offset(struct ieee80211_hw *hw,
62 void rtl92d_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw);
63 void rtl92d_phy_set_txpower_level(struct ieee80211_hw *hw, u8 channel);
64 void rtl92d_phy_enable_rf_env(struct ieee80211_hw *hw, u8 rfpath,
66 void rtl92d_phy_restore_rf_env(struct ieee80211_hw *hw, u8 rfpath,
[all …]

12345678910>>...22