@@ -1053,7 +1053,6 @@ static inline bool
1053
1053
mt7996_is_ebf_supported (struct mt7996_phy * phy , struct ieee80211_vif * vif ,
1054
1054
struct ieee80211_sta * sta , bool bfee )
1055
1055
{
1056
- struct mt7996_vif * mvif = (struct mt7996_vif * )vif -> drv_priv ;
1057
1056
int sts = hweight16 (phy -> mt76 -> chainmask );
1058
1057
1059
1058
if (vif -> type != NL80211_IFTYPE_STATION &&
@@ -1068,32 +1067,32 @@ mt7996_is_ebf_supported(struct mt7996_phy *phy, struct ieee80211_vif *vif,
1068
1067
struct ieee80211_eht_cap_elem_fixed * pe = & pc -> eht_cap_elem ;
1069
1068
1070
1069
if (bfee )
1071
- return mvif -> cap . eht_su_ebfee &&
1070
+ return vif -> bss_conf . eht_su_beamformee &&
1072
1071
EHT_PHY (CAP0_SU_BEAMFORMEE , pe -> phy_cap_info [0 ]);
1073
1072
else
1074
- return mvif -> cap . eht_su_ebfer &&
1073
+ return vif -> bss_conf . eht_su_beamformer &&
1075
1074
EHT_PHY (CAP0_SU_BEAMFORMER , pe -> phy_cap_info [0 ]);
1076
1075
}
1077
1076
1078
1077
if (sta -> deflink .he_cap .has_he ) {
1079
1078
struct ieee80211_he_cap_elem * pe = & sta -> deflink .he_cap .he_cap_elem ;
1080
1079
1081
1080
if (bfee )
1082
- return mvif -> cap . he_su_ebfee &&
1081
+ return vif -> bss_conf . he_su_beamformee &&
1083
1082
HE_PHY (CAP3_SU_BEAMFORMER , pe -> phy_cap_info [3 ]);
1084
1083
else
1085
- return mvif -> cap . he_su_ebfer &&
1084
+ return vif -> bss_conf . he_su_beamformer &&
1086
1085
HE_PHY (CAP4_SU_BEAMFORMEE , pe -> phy_cap_info [4 ]);
1087
1086
}
1088
1087
1089
1088
if (sta -> deflink .vht_cap .vht_supported ) {
1090
1089
u32 cap = sta -> deflink .vht_cap .cap ;
1091
1090
1092
1091
if (bfee )
1093
- return mvif -> cap . vht_su_ebfee &&
1092
+ return vif -> bss_conf . vht_su_beamformee &&
1094
1093
(cap & IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE );
1095
1094
else
1096
- return mvif -> cap . vht_su_ebfer &&
1095
+ return vif -> bss_conf . vht_su_beamformer &&
1097
1096
(cap & IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE );
1098
1097
}
1099
1098
@@ -1572,7 +1571,7 @@ mt7996_mcu_sta_rate_ctrl_tlv(struct sk_buff *skb, struct mt7996_dev *dev,
1572
1571
cap |= STA_CAP_TX_STBC ;
1573
1572
if (sta -> deflink .ht_cap .cap & IEEE80211_HT_CAP_RX_STBC )
1574
1573
cap |= STA_CAP_RX_STBC ;
1575
- if (mvif -> cap .ht_ldpc &&
1574
+ if (vif -> bss_conf .ht_ldpc &&
1576
1575
(sta -> deflink .ht_cap .cap & IEEE80211_HT_CAP_LDPC_CODING ))
1577
1576
cap |= STA_CAP_LDPC ;
1578
1577
@@ -1598,7 +1597,7 @@ mt7996_mcu_sta_rate_ctrl_tlv(struct sk_buff *skb, struct mt7996_dev *dev,
1598
1597
cap |= STA_CAP_VHT_TX_STBC ;
1599
1598
if (sta -> deflink .vht_cap .cap & IEEE80211_VHT_CAP_RXSTBC_1 )
1600
1599
cap |= STA_CAP_VHT_RX_STBC ;
1601
- if (mvif -> cap .vht_ldpc &&
1600
+ if (vif -> bss_conf .vht_ldpc &&
1602
1601
(sta -> deflink .vht_cap .cap & IEEE80211_VHT_CAP_RXLDPC ))
1603
1602
cap |= STA_CAP_VHT_LDPC ;
1604
1603
@@ -1911,102 +1910,6 @@ mt7996_mcu_beacon_cont(struct mt7996_dev *dev, struct ieee80211_vif *vif,
1911
1910
memcpy (buf + MT_TXD_SIZE , skb -> data , skb -> len );
1912
1911
}
1913
1912
1914
- static void
1915
- mt7996_mcu_beacon_check_caps (struct mt7996_phy * phy , struct ieee80211_vif * vif ,
1916
- struct sk_buff * skb )
1917
- {
1918
- struct mt7996_vif * mvif = (struct mt7996_vif * )vif -> drv_priv ;
1919
- struct mt7996_vif_cap * vc = & mvif -> cap ;
1920
- const struct ieee80211_eht_cap_elem_fixed * eht ;
1921
- const struct ieee80211_he_cap_elem * he ;
1922
- const struct ieee80211_vht_cap * vht ;
1923
- const struct ieee80211_ht_cap * ht ;
1924
- struct ieee80211_mgmt * mgmt = (struct ieee80211_mgmt * )skb -> data ;
1925
- const u8 * ie ;
1926
- u32 len , bc ;
1927
-
1928
- /* Check missing configuration options to allow AP mode in mac80211
1929
- * to remain in sync with hostapd settings, and get a subset of
1930
- * beacon and hardware capabilities.
1931
- */
1932
- if (WARN_ON_ONCE (skb -> len <= (mgmt -> u .beacon .variable - skb -> data )))
1933
- return ;
1934
-
1935
- memset (vc , 0 , sizeof (* vc ));
1936
-
1937
- len = skb -> len - (mgmt -> u .beacon .variable - skb -> data );
1938
-
1939
- ie = cfg80211_find_ie (WLAN_EID_HT_CAPABILITY , mgmt -> u .beacon .variable ,
1940
- len );
1941
- if (ie && ie [1 ] >= sizeof (* ht )) {
1942
- ht = (void * )(ie + 2 );
1943
- vc -> ht_ldpc |= !!(le16_to_cpu (ht -> cap_info ) &
1944
- IEEE80211_HT_CAP_LDPC_CODING );
1945
- }
1946
-
1947
- ie = cfg80211_find_ie (WLAN_EID_VHT_CAPABILITY , mgmt -> u .beacon .variable ,
1948
- len );
1949
- if (ie && ie [1 ] >= sizeof (* vht )) {
1950
- u32 pc = phy -> mt76 -> sband_5g .sband .vht_cap .cap ;
1951
-
1952
- vht = (void * )(ie + 2 );
1953
- bc = le32_to_cpu (vht -> vht_cap_info );
1954
-
1955
- vc -> vht_ldpc |= !!(bc & IEEE80211_VHT_CAP_RXLDPC );
1956
- vc -> vht_su_ebfer =
1957
- (bc & IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE ) &&
1958
- (pc & IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE );
1959
- vc -> vht_su_ebfee =
1960
- (bc & IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE ) &&
1961
- (pc & IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE );
1962
- vc -> vht_mu_ebfer =
1963
- (bc & IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE ) &&
1964
- (pc & IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE );
1965
- vc -> vht_mu_ebfee =
1966
- (bc & IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE ) &&
1967
- (pc & IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE );
1968
- }
1969
-
1970
- ie = cfg80211_find_ext_ie (WLAN_EID_EXT_HE_CAPABILITY ,
1971
- mgmt -> u .beacon .variable , len );
1972
- if (ie && ie [1 ] >= sizeof (* he ) + 1 ) {
1973
- const struct ieee80211_sta_he_cap * pc =
1974
- mt76_connac_get_he_phy_cap (phy -> mt76 , vif );
1975
- const struct ieee80211_he_cap_elem * pe = & pc -> he_cap_elem ;
1976
-
1977
- he = (void * )(ie + 3 );
1978
-
1979
- vc -> he_ldpc =
1980
- HE_PHY (CAP1_LDPC_CODING_IN_PAYLOAD , pe -> phy_cap_info [1 ]);
1981
- vc -> he_su_ebfer =
1982
- HE_PHY (CAP3_SU_BEAMFORMER , he -> phy_cap_info [3 ]) &&
1983
- HE_PHY (CAP3_SU_BEAMFORMER , pe -> phy_cap_info [3 ]);
1984
- vc -> he_su_ebfee =
1985
- HE_PHY (CAP4_SU_BEAMFORMEE , he -> phy_cap_info [4 ]) &&
1986
- HE_PHY (CAP4_SU_BEAMFORMEE , pe -> phy_cap_info [4 ]);
1987
- vc -> he_mu_ebfer =
1988
- HE_PHY (CAP4_MU_BEAMFORMER , he -> phy_cap_info [4 ]) &&
1989
- HE_PHY (CAP4_MU_BEAMFORMER , pe -> phy_cap_info [4 ]);
1990
- }
1991
-
1992
- ie = cfg80211_find_ext_ie (WLAN_EID_EXT_EHT_CAPABILITY ,
1993
- mgmt -> u .beacon .variable , len );
1994
- if (ie && ie [1 ] >= sizeof (* eht ) + 1 ) {
1995
- const struct ieee80211_sta_eht_cap * pc =
1996
- mt76_connac_get_eht_phy_cap (phy -> mt76 , vif );
1997
- const struct ieee80211_eht_cap_elem_fixed * pe = & pc -> eht_cap_elem ;
1998
-
1999
- eht = (void * )(ie + 3 );
2000
-
2001
- vc -> eht_su_ebfer =
2002
- EHT_PHY (CAP0_SU_BEAMFORMER , eht -> phy_cap_info [0 ]) &&
2003
- EHT_PHY (CAP0_SU_BEAMFORMER , pe -> phy_cap_info [0 ]);
2004
- vc -> eht_su_ebfee =
2005
- EHT_PHY (CAP0_SU_BEAMFORMEE , eht -> phy_cap_info [0 ]) &&
2006
- EHT_PHY (CAP0_SU_BEAMFORMEE , pe -> phy_cap_info [0 ]);
2007
- }
2008
- }
2009
-
2010
1913
int mt7996_mcu_add_beacon (struct ieee80211_hw * hw ,
2011
1914
struct ieee80211_vif * vif , int en )
2012
1915
{
@@ -2045,8 +1948,6 @@ int mt7996_mcu_add_beacon(struct ieee80211_hw *hw,
2045
1948
info = IEEE80211_SKB_CB (skb );
2046
1949
info -> hw_queue |= FIELD_PREP (MT_TX_HW_QUEUE_PHY , phy -> mt76 -> band_idx );
2047
1950
2048
- mt7996_mcu_beacon_check_caps (phy , vif , skb );
2049
-
2050
1951
mt7996_mcu_beacon_cont (dev , vif , rskb , skb , bcn , & offs );
2051
1952
/* TODO: subtag - 11v MBSSID */
2052
1953
mt7996_mcu_beacon_cntdwn (vif , rskb , skb , & offs );
0 commit comments