1*a1085114SJohannes Berg // SPDX-License-Identifier: GPL-2.0-only 2*a1085114SJohannes Berg /* 3*a1085114SJohannes Berg * UHR handling 4*a1085114SJohannes Berg * 5*a1085114SJohannes Berg * Copyright(c) 2025-2026 Intel Corporation 6*a1085114SJohannes Berg */ 7*a1085114SJohannes Berg 8*a1085114SJohannes Berg #include "ieee80211_i.h" 9*a1085114SJohannes Berg 10*a1085114SJohannes Berg void 11*a1085114SJohannes Berg ieee80211_uhr_cap_ie_to_sta_uhr_cap(struct ieee80211_sub_if_data *sdata, 12*a1085114SJohannes Berg struct ieee80211_supported_band *sband, 13*a1085114SJohannes Berg const struct ieee80211_uhr_cap *uhr_cap, 14*a1085114SJohannes Berg u8 uhr_cap_len, 15*a1085114SJohannes Berg struct link_sta_info *link_sta) 16*a1085114SJohannes Berg { 17*a1085114SJohannes Berg struct ieee80211_sta_uhr_cap *sta_uhr_cap = &link_sta->pub->uhr_cap; 18*a1085114SJohannes Berg bool from_ap; 19*a1085114SJohannes Berg 20*a1085114SJohannes Berg memset(sta_uhr_cap, 0, sizeof(*sta_uhr_cap)); 21*a1085114SJohannes Berg 22*a1085114SJohannes Berg if (!ieee80211_get_uhr_iftype_cap_vif(sband, &sdata->vif)) 23*a1085114SJohannes Berg return; 24*a1085114SJohannes Berg 25*a1085114SJohannes Berg sta_uhr_cap->has_uhr = true; 26*a1085114SJohannes Berg 27*a1085114SJohannes Berg sta_uhr_cap->mac = uhr_cap->mac; 28*a1085114SJohannes Berg from_ap = sdata->vif.type == NL80211_IFTYPE_STATION; 29*a1085114SJohannes Berg sta_uhr_cap->phy = *ieee80211_uhr_phy_cap(uhr_cap, from_ap); 30*a1085114SJohannes Berg } 31