On Fri, 2023-09-15 at 16:43 +0800, Wen Gong wrote: > On 9/13/2023 5:04 PM, Johannes Berg wrote: > > On Wed, 2023-09-06 at 06:34 -0400, Wen Gong wrote: > > > Currently for MLO connection, only deflink's rx_nss is set to correct > > > value. The others links' rx_nss of struct ieee80211_link_sta is > > > value 0 in ieee80211_set_associated(), because they are not pass into > > > ieee80211_sta_set_rx_nss() in mac80211 except the deflink in > > > rate_control_rate_init(). This leads driver get NSS = 0 for other links. > > > Add the ieee80211_sta_set_rx_nss() in ieee80211_assoc_config_link(), > > > then the other links' rx_nss will be set to the correct value. > > This is pretty much true, but I also think it's problematic the way you > > phrase it. Software rate control is pretty much, at least currently, > > _not_ supported for MLO (and I don't really see how to support it, if > > firmware picks the link to transmit on, as it probably should). > I searched all the folder wireless, I only found 5 places have the > handler of rate_init below, > and the functions are all empty. Is it means no driver support rate_init > currently? > drivers/net/wireless/realtek/rtlwifi/rc.c:304: .rate_init = > rtl_rate_init, > drivers/net/wireless/intel/iwlwifi/mvm/rs.c:4098: .rate_init = > rs_rate_init_ops, > drivers/net/wireless/intel/iwlwifi/dvm/rs.c:3276: .rate_init = > rs_rate_init_stub, > drivers/net/wireless/intel/iwlegacy/4965-rs.c:2779: .rate_init = > il4965_rs_rate_init_stub, > drivers/net/wireless/intel/iwlegacy/3945-rs.c:867: .rate_init = > il3945_rs_rate_init_stub, > [...] > Well, many other drivers use minstrel, and the _stub ones in intel are atually not doing anything. So most drivers would use net/mac80211/rc80211_minstrel_ht.c: .rate_init = minstrel_ht_rate_init, here. johannes