zd1211rw: firmware needs duration_id set to zero for non-pspoll frames
authorTomas Vanek <Tomas.Vanek@fbl.cz>
Sun, 5 Feb 2012 13:51:53 +0000 (15:51 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 7 Feb 2012 19:43:15 +0000 (14:43 -0500)
commite81a7bd55531a77d8c16d44766db4089c2983f1b
treee494b01ebfca829bc21493d6598f0622a1c3e717
parent2e6b411971de727a5bcea4323331fdaa70a81b11
zd1211rw: firmware needs duration_id set to zero for non-pspoll frames

Some devices (iwl5100) cannot connect to zd1211rw based AP. It appears that
zd1211 firmware messes up duration_id field if it is not set to zero by driver.

Sniffing traffic shows that zd1211 is transmitting frames with duration_id bits
14 and 15 set and other bits appearing random. Setting duration_id at driver to
zero results zd1211 outputting sane duration_id. This means that firmware is
setting correct values itself and expects duration_id to be zero in first
place.

Looking at vendor driver shows that only PSPoll frames have duration_id set by
driver, for other frames duration_id left zero.

Original bug-report and attached patch at:
  http://sourceforge.net/mailarchive/message.php?msg_id=28759111

Reported-by: Tomas Vanek <Tomas.Vanek@fbl.cz>
[modified original patch from bug-report, added check for pspoll frame]
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/zd1211rw/zd_mac.c