Johannes Berg wrote: > The problem is that queue disabling isn't refcounted so that a scan that > collides with bcm43xx having disabled the queue for calibration might > re-enable the queue while bcm43xx is still calibrating.
I agree with that part. However the other reason for the patch (transmit queue needed for active scanning) is bogus, and the patch introduces a problem where session frames may be transmitted during scanning (using TX queue control avoids that problem). > Clearly, this doesn't fully fix the problem because softmac will try to > transmit frames during the calibration. Hence, a proper fix would be to > not remove the calls to netif_tx_disable but make them go through > softmac (ieee80211_tx_disable) to make sure that softmac doesn't try to > scan while the queues are disabled, which would fix the aforementioned > problem of softmac enabling the queue while the driver needs it disabled > for free. Stack-level refcounted TX control like this would also be beneficial for zd1211rw, currently we have a semi-ugly implementation inside the driver. > Also, for bcm43xx this isn't a problem since the firmware (optionally > but we use that afaik) takes care of not transmitting frames that are > tagged for a different channel than currently tuned to. zd1211 has no such functionality :( Michael Buesch wrote: > Softmac ignoring > this queue-disabled flag is just yet another bug. Agreed, but this one isn't going to be fixed any time soon. This was the first point I raised against softmac during early zd1211rw development a long while back. I agree with the objectives of this patch but the way I see it is that it trades one bug for another. A proper solution, as suggested by Johannes (refcounted stack-level TX control) would not be hard to implement and would solve the bug without introducing another. Daniel _______________________________________________ Bcm43xx-dev mailing list [email protected] https://lists.berlios.de/mailman/listinfo/bcm43xx-dev
