Home
last modified time | relevance | path

Searched refs:ht_cap (Results 1 – 25 of 158) sorted by relevance

1234567

/linux-6.3-rc2/net/mac80211/
A Dht.c29 ht_cap->cap &= ~flag; in __check_htcap_disable()
42 ht_cap->cap |= flag; in __check_htcap_enable()
52 if (!ht_cap->ht_supported) in ieee80211_apply_htcap_overrides()
152 memset(&ht_cap, 0, sizeof(ht_cap)); in ieee80211_ht_cap_ie_to_sta_ht_cap()
159 own_cap = sband->ht_cap; in ieee80211_ht_cap_ie_to_sta_ht_cap()
195 ht_cap.ampdu_factor = in ieee80211_ht_cap_ie_to_sta_ht_cap()
197 ht_cap.ampdu_density = in ieee80211_ht_cap_ie_to_sta_ht_cap()
226 ht_cap.mcs.rx_mask[i] = in ieee80211_ht_cap_ie_to_sta_ht_cap()
232 ht_cap.mcs.rx_mask[i] = in ieee80211_ht_cap_ie_to_sta_ht_cap()
251 changed = memcmp(&link_sta->pub->ht_cap, &ht_cap, sizeof(ht_cap)); in ieee80211_ht_cap_ie_to_sta_ht_cap()
[all …]
A Dtdls.c369 struct ieee80211_sta_ht_cap ht_cap; in ieee80211_tdls_add_setup_start_ies() local
449 memcpy(&ht_cap, &sband->ht_cap, sizeof(ht_cap)); in ieee80211_tdls_add_setup_start_ies()
453 ht_cap.ht_supported) { in ieee80211_tdls_add_setup_start_ies()
457 ht_cap.cap |= WLAN_HT_CAP_SM_PS_DISABLED in ieee80211_tdls_add_setup_start_ies()
461 ieee80211_ie_build_ht_cap(pos, &ht_cap, ht_cap.cap); in ieee80211_tdls_add_setup_start_ies()
463 ht_cap.ht_supported && sta->sta.deflink.ht_cap.ht_supported) { in ieee80211_tdls_add_setup_start_ies()
465 memcpy(&ht_cap, &sta->sta.deflink.ht_cap, sizeof(ht_cap)); in ieee80211_tdls_add_setup_start_ies()
468 ieee80211_ie_build_ht_cap(pos, &ht_cap, ht_cap.cap); in ieee80211_tdls_add_setup_start_ies()
471 if (ht_cap.ht_supported && in ieee80211_tdls_add_setup_start_ies()
606 if (!ap_sta->sta.deflink.ht_cap.ht_supported && sta->sta.deflink.ht_cap.ht_supported) { in ieee80211_tdls_add_setup_cfm_ies()
[all …]
A Dvht.c128 if (!link_sta->pub->ht_cap.ht_supported) in ieee80211_vht_cap_ie_to_sta_vht_cap()
393 return link_sta->pub->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 ? in ieee80211_sta_cap_rx_bw()
421 if (!link_sta->pub->ht_cap.ht_supported) in ieee80211_sta_cap_chan_bw()
424 return link_sta->pub->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 ? in ieee80211_sta_cap_chan_bw()
449 if (!link_sta->pub->ht_cap.ht_supported) in ieee80211_sta_rx_bw_to_chan_width()
586 if (link_sta->pub->ht_cap.ht_supported) { in ieee80211_sta_set_rx_nss()
587 if (link_sta->pub->ht_cap.mcs.rx_mask[0]) in ieee80211_sta_set_rx_nss()
589 if (link_sta->pub->ht_cap.mcs.rx_mask[1]) in ieee80211_sta_set_rx_nss()
591 if (link_sta->pub->ht_cap.mcs.rx_mask[2]) in ieee80211_sta_set_rx_nss()
593 if (link_sta->pub->ht_cap.mcs.rx_mask[3]) in ieee80211_sta_set_rx_nss()
/linux-6.3-rc2/drivers/net/wireless/marvell/mwifiex/
A D11n.c37 ht_cap->ampdu_params_info = in mwifiex_fill_cap_info()
38 (sband->ht_cap.ampdu_factor & in mwifiex_fill_cap_info()
44 memcpy((u8 *)&ht_cap->mcs, &sband->ht_cap.mcs, in mwifiex_fill_cap_info()
57 ht_cap->cap_info = cpu_to_le16(sband->ht_cap.cap); in mwifiex_fill_cap_info()
323 ht_cap->header.len = in mwifiex_cmd_append_11n_tlv()
329 mwifiex_fill_cap_info(priv, radio_type, &ht_cap->ht_cap); in mwifiex_cmd_append_11n_tlv()
344 ht_cap->ht_cap.cap_info &= in mwifiex_cmd_append_11n_tlv()
347 ht_cap->ht_cap.cap_info &= in mwifiex_cmd_append_11n_tlv()
353 ht_cap->ht_cap.cap_info &= in mwifiex_cmd_append_11n_tlv()
356 ht_cap->ht_cap.cap_info &= in mwifiex_cmd_append_11n_tlv()
[all …]
A Duap_cmd.c159 memcpy(&bss_cfg->ht_cap, ht_ie + 2, in mwifiex_set_ht_params()
623 if (bss_cfg->ht_cap.cap_info) { in mwifiex_uap_bss_param_prepare()
628 htcap->ht_cap.cap_info = bss_cfg->ht_cap.cap_info; in mwifiex_uap_bss_param_prepare()
629 htcap->ht_cap.ampdu_params_info = in mwifiex_uap_bss_param_prepare()
630 bss_cfg->ht_cap.ampdu_params_info; in mwifiex_uap_bss_param_prepare()
631 memcpy(&htcap->ht_cap.mcs, &bss_cfg->ht_cap.mcs, in mwifiex_uap_bss_param_prepare()
633 htcap->ht_cap.extended_ht_cap_info = in mwifiex_uap_bss_param_prepare()
634 bss_cfg->ht_cap.extended_ht_cap_info; in mwifiex_uap_bss_param_prepare()
635 htcap->ht_cap.tx_BF_cap_info = bss_cfg->ht_cap.tx_BF_cap_info; in mwifiex_uap_bss_param_prepare()
636 htcap->ht_cap.antenna_selection_info = in mwifiex_uap_bss_param_prepare()
[all …]
A Djoin.c843 struct mwifiex_ie_types_htcap *ht_cap; in mwifiex_cmd_802_11_ad_hoc_start() local
1033 ht_cap = (struct mwifiex_ie_types_htcap *) pos; in mwifiex_cmd_802_11_ad_hoc_start()
1034 memset(ht_cap, 0, sizeof(struct mwifiex_ie_types_htcap)); in mwifiex_cmd_802_11_ad_hoc_start()
1035 ht_cap->header.type = cpu_to_le16(WLAN_EID_HT_CAPABILITY); in mwifiex_cmd_802_11_ad_hoc_start()
1036 ht_cap->header.len = in mwifiex_cmd_802_11_ad_hoc_start()
1040 mwifiex_fill_cap_info(priv, radio_type, &ht_cap->ht_cap); in mwifiex_cmd_802_11_ad_hoc_start()
1046 tmp_ht_cap = le16_to_cpu(ht_cap->ht_cap.cap_info); in mwifiex_cmd_802_11_ad_hoc_start()
1049 ht_cap->ht_cap.cap_info = cpu_to_le16(tmp_ht_cap); in mwifiex_cmd_802_11_ad_hoc_start()
/linux-6.3-rc2/drivers/net/wireless/intel/iwlwifi/mvm/
A Drs-fw.c43 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in rs_fw_sgi_cw_support() local
51 if (ht_cap->cap & IEEE80211_HT_CAP_SGI_20) in rs_fw_sgi_cw_support()
53 if (ht_cap->cap & IEEE80211_HT_CAP_SGI_40) in rs_fw_sgi_cw_support()
67 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in rs_fw_get_config_flags() local
81 else if (ht_cap->cap & IEEE80211_HT_CAP_RX_STBC) in rs_fw_get_config_flags()
366 const struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in rs_fw_set_supp_rates() local
388 } else if (ht_cap->ht_supported) { in rs_fw_set_supp_rates()
391 cpu_to_le16(ht_cap->mcs.rx_mask[0]); in rs_fw_set_supp_rates()
399 cpu_to_le16(ht_cap->mcs.rx_mask[1]); in rs_fw_set_supp_rates()
503 const struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in rs_fw_get_max_amsdu_len() local
[all …]
/linux-6.3-rc2/drivers/net/wireless/ti/wl18xx/
A Dacx.c137 struct ieee80211_sta_ht_cap *ht_cap, in wl18xx_acx_set_peer_cap() argument
147 ht_cap->ht_supported, ht_cap->cap, rate_set); in wl18xx_acx_set_peer_cap()
155 if (allow_ht_operation && ht_cap->ht_supported) { in wl18xx_acx_set_peer_cap()
157 ht_capabilites = ht_cap->cap; in wl18xx_acx_set_peer_cap()
166 acx->ampdu_max_length = ht_cap->ampdu_factor; in wl18xx_acx_set_peer_cap()
167 acx->ampdu_min_spacing = ht_cap->ampdu_density; in wl18xx_acx_set_peer_cap()
/linux-6.3-rc2/drivers/net/wireless/mediatek/mt7601u/
A Dinit.c522 struct ieee80211_sta_ht_cap *ht_cap; in mt76_init_sband() local
536 ht_cap = &sband->ht_cap; in mt76_init_sband()
537 ht_cap->ht_supported = true; in mt76_init_sband()
538 ht_cap->cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 | in mt76_init_sband()
544 ht_cap->mcs.rx_mask[0] = 0xff; in mt76_init_sband()
545 ht_cap->mcs.rx_mask[4] = 0x1; in mt76_init_sband()
546 ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED; in mt76_init_sband()
547 ht_cap->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K; in mt76_init_sband()
548 ht_cap->ampdu_density = IEEE80211_HT_MPDU_DENSITY_2; in mt76_init_sband()
/linux-6.3-rc2/drivers/net/wireless/realtek/rtw88/
A Dmain.c126 .ht_cap = {0},
140 .ht_cap = {0},
1506 ht_cap->ht_supported = true; in rtw_init_ht_cap()
1507 ht_cap->cap = 0; in rtw_init_ht_cap()
1508 ht_cap->cap |= IEEE80211_HT_CAP_SGI_20 | in rtw_init_ht_cap()
1525 ht_cap->mcs.rx_mask[0] = 0xFF; in rtw_init_ht_cap()
1526 ht_cap->mcs.rx_mask[1] = 0xFF; in rtw_init_ht_cap()
1527 ht_cap->mcs.rx_mask[4] = 0x01; in rtw_init_ht_cap()
1530 ht_cap->mcs.rx_mask[0] = 0xFF; in rtw_init_ht_cap()
1531 ht_cap->mcs.rx_mask[1] = 0x00; in rtw_init_ht_cap()
[all …]
/linux-6.3-rc2/drivers/net/wireless/realtek/rtlwifi/
A Dbase.c120 .ht_cap = {0},
132 .ht_cap = {0},
158 ht_cap->ht_supported = true; in _rtl_init_hw_ht_capab()
190 ht_cap->mcs.rx_mask[0] = 0xFF; in _rtl_init_hw_ht_capab()
191 ht_cap->mcs.rx_mask[1] = 0xFF; in _rtl_init_hw_ht_capab()
192 ht_cap->mcs.rx_mask[4] = 0x01; in _rtl_init_hw_ht_capab()
200 ht_cap->mcs.rx_mask[0] = 0xFF; in _rtl_init_hw_ht_capab()
201 ht_cap->mcs.rx_mask[1] = 0xFF; in _rtl_init_hw_ht_capab()
202 ht_cap->mcs.rx_mask[4] = 0x01; in _rtl_init_hw_ht_capab()
204 ht_cap->mcs.rx_highest = in _rtl_init_hw_ht_capab()
[all …]
A Drc.c124 sgi_20 = sta->deflink.ht_cap.cap & IEEE80211_HT_CAP_SGI_20; in _rtl_rc_rate_set_series()
125 sgi_40 = sta->deflink.ht_cap.cap & IEEE80211_HT_CAP_SGI_40; in _rtl_rc_rate_set_series()
138 if (sta && (sta->deflink.ht_cap.cap & in _rtl_rc_rate_set_series()
152 if (sta && sta->deflink.ht_cap.ht_supported && in _rtl_rc_rate_set_series()
232 if (sta->deflink.ht_cap.ht_supported && in rtl_tx_status()
A Drc.h20 u8 ht_cap; member
/linux-6.3-rc2/drivers/net/wireless/ti/wlcore/
A Dwlcore.h100 struct ieee80211_sta_ht_cap *ht_cap,
452 struct ieee80211_sta_ht_cap ht_cap[WLCORE_NUM_BANDS]; member
514 struct ieee80211_sta_ht_cap *ht_cap) in wlcore_set_ht_cap() argument
516 memcpy(&wl->ht_cap[band], ht_cap, sizeof(*ht_cap)); in wlcore_set_ht_cap()
/linux-6.3-rc2/drivers/net/wireless/st/cw1200/
A Dcw1200.h54 struct ieee80211_sta_ht_cap ht_cap; member
308 (ht_info->ht_cap.cap & IEEE80211_HT_CAP_GRN_FLD) && in cw1200_ht_greenfield()
317 return ht_info->ht_cap.ampdu_density; in cw1200_ht_ampdu_density()
/linux-6.3-rc2/drivers/net/wireless/ath/ath12k/
A Dmac.c1334 const struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in ath12k_peer_assoc_h_ht() local
1395 if (ht_cap->mcs.rx_mask[1] && ht_cap->mcs.rx_mask[2]) in ath12k_peer_assoc_h_ht()
1742 const struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in ath12k_peer_assoc_h_smps() local
3788 return ht_cap; in ath12k_create_ht_cap()
3809 ht_cap.cap |= smps; in ath12k_create_ht_cap()
3824 ht_cap.cap |= stbc; in ath12k_create_ht_cap()
3843 return ht_cap; in ath12k_create_ht_cap()
3983 u32 ht_cap; in ath12k_mac_setup_ht_vht_cap() local
3993 band->ht_cap = ath12k_create_ht_cap(ar, ht_cap, in ath12k_mac_setup_ht_vht_cap()
4004 band->ht_cap = ath12k_create_ht_cap(ar, ht_cap, in ath12k_mac_setup_ht_vht_cap()
[all …]
/linux-6.3-rc2/drivers/staging/rtl8723bs/core/
A Drtw_ap.c487 phtpriv_sta->ht_cap.ampdu_params_info & IEEE80211_HT_CAP_AMPDU_DENSITY in update_sta_info_apmode()
492 phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info in update_sta_info_apmode()
505 phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info in update_sta_info_apmode()
511 phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info in update_sta_info_apmode()
523 GET_HT_CAPABILITY_ELE_LDPC_CAP((u8 *)(&phtpriv_sta->ht_cap))) in update_sta_info_apmode()
528 GET_HT_CAPABILITY_ELE_RX_STBC((u8 *)(&phtpriv_sta->ht_cap))) in update_sta_info_apmode()
818 u16 cap, ht_cap = false; in rtw_check_beacon_data() local
1043 ht_cap = true; in rtw_check_beacon_data()
1088 memcpy(&pmlmepriv->htpriv.ht_cap, p + 2, ie_len); in rtw_check_beacon_data()
1127 if (pregistrypriv->ht_enable && ht_cap) { in rtw_check_beacon_data()
[all …]
/linux-6.3-rc2/drivers/net/wireless/mediatek/mt76/
A Dmt76_connac_mcu.c785 struct ieee80211_sta_ht_cap *ht_cap; in mt76_connac_get_phy_mode_v2() local
791 ht_cap = &sta->deflink.ht_cap; in mt76_connac_get_phy_mode_v2()
798 ht_cap = &sband->ht_cap; in mt76_connac_get_phy_mode_v2()
806 if (ht_cap->ht_supported) in mt76_connac_get_phy_mode_v2()
814 if (ht_cap->ht_supported) in mt76_connac_get_phy_mode_v2()
847 ht->ht_cap = cpu_to_le16(sta->deflink.ht_cap.cap); in mt76_connac_mcu_sta_tlv()
1285 struct ieee80211_sta_ht_cap *ht_cap; in mt76_connac_get_phy_mode() local
1292 ht_cap = &sta->deflink.ht_cap; in mt76_connac_get_phy_mode()
1299 ht_cap = &sband->ht_cap; in mt76_connac_get_phy_mode()
1307 if (ht_cap->ht_supported) in mt76_connac_get_phy_mode()
[all …]
/linux-6.3-rc2/drivers/staging/rtl8192e/
A Drtllib_wx.c130 struct ht_capab_ele *ht_cap = NULL; in rtl819x_translate_scan() local
135 ht_cap = (struct ht_capab_ele *) in rtl819x_translate_scan()
138 ht_cap = (struct ht_capab_ele *) in rtl819x_translate_scan()
140 is40M = (ht_cap->ChlWidth) ? 1 : 0; in rtl819x_translate_scan()
141 isShortGI = (ht_cap->ChlWidth) ? in rtl819x_translate_scan()
142 ((ht_cap->ShortGI40Mhz) ? 1 : 0) : in rtl819x_translate_scan()
143 ((ht_cap->ShortGI20Mhz) ? 1 : 0); in rtl819x_translate_scan()
145 max_mcs = HTGetHighestMCSRate(ieee, ht_cap->MCS, in rtl819x_translate_scan()
/linux-6.3-rc2/drivers/staging/rtl8192u/ieee80211/
A Dieee80211_wx.c134 struct ht_capability_ele *ht_cap = NULL; in rtl819x_translate_scan() local
138 ht_cap = (struct ht_capability_ele *)&network->bssht.bdHTCapBuf[4]; in rtl819x_translate_scan()
140 ht_cap = (struct ht_capability_ele *)&network->bssht.bdHTCapBuf[0]; in rtl819x_translate_scan()
141 is40M = (ht_cap->ChlWidth) ? 1 : 0; in rtl819x_translate_scan()
142 isShortGI = (ht_cap->ChlWidth) ? in rtl819x_translate_scan()
143 ((ht_cap->ShortGI40Mhz) ? 1 : 0) : in rtl819x_translate_scan()
144 ((ht_cap->ShortGI20Mhz) ? 1 : 0); in rtl819x_translate_scan()
146 max_mcs = HTGetHighestMCSRate(ieee, ht_cap->MCS, MCS_FILTER_ALL); in rtl819x_translate_scan()
/linux-6.3-rc2/drivers/net/wireless/intel/iwlegacy/
A D4965-rs.c1185 if (il_is_ht40_tx_allowed(il, &sta->deflink.ht_cap)) in il4965_rs_switch_to_mimo2()
1231 if (il_is_ht40_tx_allowed(il, &sta->deflink.ht_cap)) in il4965_rs_switch_to_siso()
1387 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in il4965_rs_move_siso_to_other() local
1448 !(ht_cap->cap & IEEE80211_HT_CAP_SGI_20)) in il4965_rs_move_siso_to_other()
1451 !(ht_cap->cap & IEEE80211_HT_CAP_SGI_40)) in il4965_rs_move_siso_to_other()
1510 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in il4965_rs_move_mimo2_to_other() local
1571 !(ht_cap->cap & IEEE80211_HT_CAP_SGI_20)) in il4965_rs_move_mimo2_to_other()
1574 !(ht_cap->cap & IEEE80211_HT_CAP_SGI_40)) in il4965_rs_move_mimo2_to_other()
2274 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in il4965_rs_rate_init() local
2314 lq_sta->active_siso_rate = ht_cap->mcs.rx_mask[0] << 1; in il4965_rs_rate_init()
[all …]
/linux-6.3-rc2/drivers/net/wireless/intel/iwlwifi/dvm/
A Drs.c1573 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in rs_move_siso_to_other() local
1667 if (!tbl->is_ht40 && !(ht_cap->cap & in rs_move_siso_to_other()
1670 if (tbl->is_ht40 && !(ht_cap->cap & in rs_move_siso_to_other()
1743 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in rs_move_mimo2_to_other() local
1833 if (!tbl->is_ht40 && !(ht_cap->cap & in rs_move_mimo2_to_other()
1836 if (tbl->is_ht40 && !(ht_cap->cap & in rs_move_mimo2_to_other()
1911 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in rs_move_mimo3_to_other() local
2023 if (!tbl->is_ht40 && !(ht_cap->cap & in rs_move_mimo3_to_other()
2026 if (tbl->is_ht40 && !(ht_cap->cap & in rs_move_mimo3_to_other()
2766 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in iwl_rs_rate_init() local
[all …]
/linux-6.3-rc2/drivers/staging/rtl8712/
A Drtl871x_ht.h29 struct ieee80211_ht_cap ht_cap; member
/linux-6.3-rc2/drivers/net/wireless/ath/ath11k/
A Dmac.c1689 const struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in ath11k_peer_assoc_h_ht() local
1758 if (ht_cap->mcs.rx_mask[1] && ht_cap->mcs.rx_mask[2]) in ath11k_peer_assoc_h_ht()
2373 const struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in ath11k_peer_assoc_h_smps() local
4986 return ht_cap; in ath11k_create_ht_cap()
5007 ht_cap.cap |= smps; in ath11k_create_ht_cap()
5022 ht_cap.cap |= stbc; in ath11k_create_ht_cap()
5041 return ht_cap; in ath11k_create_ht_cap()
5197 u32 ht_cap; in ath11k_mac_setup_ht_vht_cap() local
5207 band->ht_cap = ath11k_create_ht_cap(ar, ht_cap, in ath11k_mac_setup_ht_vht_cap()
5218 band->ht_cap = ath11k_create_ht_cap(ar, ht_cap, in ath11k_mac_setup_ht_vht_cap()
[all …]
/linux-6.3-rc2/drivers/net/wireless/marvell/
A Dmwl8k.c2394 band->ht_cap.ht_supported = 1; in mwl8k_set_ht_caps()
2399 band->ht_cap.cap |= IEEE80211_HT_CAP_GRN_FLD; in mwl8k_set_ht_caps()
2410 band->ht_cap.cap |= IEEE80211_HT_CAP_SGI_40; in mwl8k_set_ht_caps()
2412 band->ht_cap.cap |= IEEE80211_HT_CAP_SGI_20; in mwl8k_set_ht_caps()
2421 band->ht_cap.mcs.rx_mask[0] = 0xff; in mwl8k_set_ht_caps()
2423 band->ht_cap.mcs.rx_mask[1] = 0xff; in mwl8k_set_ht_caps()
2425 band->ht_cap.mcs.rx_mask[2] = 0xff; in mwl8k_set_ht_caps()
2426 band->ht_cap.mcs.rx_mask[4] = 0x01; in mwl8k_set_ht_caps()
4030 (stream->sta->deflink.ht_cap.ampdu_factor & in mwl8k_create_ba()
4120 if (sta->deflink.ht_cap.ht_supported) { in mwl8k_cmd_set_new_stn_add()
[all …]

Completed in 114 milliseconds

1234567