iwlwifi: dvm: fix the passive-no-RX workaround
authorJohannes Berg <johannes.berg@intel.com>
Wed, 27 Mar 2013 19:49:58 +0000 (20:49 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 28 Mar 2013 15:31:26 +0000 (16:31 +0100)
commitb8730b403aee94db4631bfefb546a6ce8c287dc2
tree8841054b3290a4054843eeaff9d8c216c42a1f8d
parent2d5d50ee596361566f7f84300117cba7d7672bc5
iwlwifi: dvm: fix the passive-no-RX workaround

Alex Romosan reported that since the mac80211 changes in
"mac80211: start auth/assoc timeout on frame status" and
the subsequent fixes in "mac80211: fix auth/assoc timeout
handling" (commits 1672c0e31917 and 89afe614c0c) there's
sometimes an issue connecting to a 5 GHz network with the
iwlwifi DVM driver.

The reason appears to be that since these commits any bad
TX status makes mac80211 immediately try again, causing
all of the authentication attempts to be quickly rejected
by the firmware as it hasn't heard a beacon yet. Before,
it would wait for the timeout regardless of status.

To fix this, invoke the passive-no-RX workaround when not
associated yet as well. This will cause the first frame
to get lost, but then the driver will stop the queues and
the second attempt will only be transmitted after hearing
a beacon, thus delaying it appropriately to not make the
firmware reject it again.

Reported-by: Alex Romosan <romosan@sycorax.lbl.gov>
Tested-by: Alex Romosan <romosan@sycorax.lbl.gov>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/iwlwifi/dvm/rxon.c
drivers/net/wireless/iwlwifi/dvm/tx.c