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
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to