On 11 September 2014 12:49, Luca Coelho <luca@xxxxxxxxx> wrote: > On Thu, 2014-09-11 at 11:28 +0200, Michal Kazior wrote: >> On 11 September 2014 08:49, Luca Coelho <luca@xxxxxxxxx> wrote: [...] >> > It seems that we're not updating the chandef in non-chanctx drivers. Or >> > are we missing something? [...] >> From what I've tested just now it seems iwldvm (3.17-rc2, fw >> 18.168.6.1) calls ieee80211_chswitch_done() almost immediately most of >> the time. This obviously ends up with beacon loss with larger CS >> count. With small CS count it works though. This doesn't seem to be >> related to the missing hw_confg(). > > The hw_config() call is not really missing, right? We're actually now > calling it even for drivers that implement drv_channel_switch() > (previously we wouldn't). I've had a brain fart.. You're right. I meant "This doesn't seem to be related to the fact we call hw_config() now". > I don't know why iwldvm is finalizing the channel switch almost > immediately... It doesn't make much sense, because all the traffic until > the switch will be lost. Unless the CSA is marked as "quiet", because > then nobody should be transmitting and it doesn't really matter when you > switched. It wasn't quiet. Just a simple "hostapd_cli chan_switch 50 5200". Maybe it doesn't like ath10k being the AP? Or maybe there's something wrong with tsf/timestamp on either side? > Anyway, I don't think the problem is that we call hw_config() now, > because that is done *after* chswitch_done() is called. Yep. If the CS is small or the chswitch_done() is called in a timely fashion iwldvm doesn't seem to be bothered by the extra hw_config() call. >> Now that I think it's probably a good idea to make multi-vif CSA >> mutually exlusive with drv_channel_switch() based STA CSA.. > > In the iwlmvm driver, we have to do the actual context switch when we > decide to, not exactly at TBTT count=0 as mac80211 does with "software > channel switch". The way I solved this (will be upstreamed soon, I > believe) is that I implement a dummy drv_channel_switch(). I only do > this to prevent mac80211 from starting its own timer, allowing me to > call ieee80211_chswitch_done() when I need to. Oh.. ok. Michał -- 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