On 16 January 2015 at 13:18, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: > On Fri, 2015-01-16 at 13:08 +0100, Janusz Dziedzic wrote: >> On 16 January 2015 at 11:55, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: >> > On Fri, 2015-01-16 at 11:38 +0100, Janusz Dziedzic wrote: >> > >> >> + /* we both use VHT */ >> >> + struct ieee80211_vht_cap vhtcap_ie; >> >> + struct ieee80211_sta_vht_cap vht_cap = sta->sta.vht_cap; >> >> + >> >> + ieee80211_vht_oper_to_chandef(channel, >> >> + elems->vht_operation, >> >> + &chandef); >> > >> > Ok maybe I'm missing something - but can't this erroneously configure >> > the local HW to 160 MHz when it doesn't even support it, or so? >> > >> I will check this more. But seems chandef (sta chandef) is a local >> variable here, not used by the way. >> So, our chandef is form cfg80211 (sdata->u.ibss.chandef) and we don't >> change this. >> Orginaly this sta chandef was used to compare with ibss->chandef. >> >> - if (chandef.center_freq1 != >> - sdata->u.ibss.chandef.center_freq1) >> - htcap_ie.cap_info &= >> - >> cpu_to_le16(~IEEE80211_HT_CAP_SUP_WIDTH_20_40); >> >> But for me this check seems as not needed, eg. >> We support VHT80 and other ibss have only HT40 support - so we will >> have different center_freq1 - but still could operate, while sta_add >> and correct rates for sta configured. >> One I think we could check here is, if our chandef and sta chandef overlap. >> >> Anyway, I am not sure I understand your question correctly, you mean eg. >> we work in VHT80 mode and other ibss join in VHT160 mode? Does it >> really matter while we will use sta_add for this new V160 "station" >> and configure supported rates for this station? > > Well like I said - I might not understand this correctly. But the > ieee80211_vht_oper_to_chandef() function doesn't - iirc - take into > account local capabilities. As a consequence, if a VHT160 station joins > the chandef might be 160 while we're only supporting 80? > > But anyway - I see that at least what I originally thought was wrong - > this code isn't concerned with picking up the channel from the peer to > join the networks together, I guess. That's what I was worried about. > That code I haven't seen and checked though - so perhaps you can look > there if it correctly handles trying to form a network when the peer has > higher capabilities than the local hw. > I am testing different combinations and TP HT20 <-> HT40 HT20 <-> VHT80 HT40 <-> VHT80 HT40 <-> VHT80 VHT80 <-> HT20 VHT80 <-> HT40 using ath9k and ath10k. What I see using iw wlan0 info, we always using chandef we pass from cfg80211. We also update nss/rates/bw correctly in sta_rc_update(). But anyway will do more tests. BR Janusz -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html