summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl3945-base.c
diff options
context:
space:
mode:
authorGregory Greenman2008-01-23 19:15:21 +0100
committerDavid S. Miller2008-02-01 04:26:44 +0100
commit76f3915b4cbadf5f7dc80d3df6d3a7492914675a (patch)
treeee2d85eb6ef92543cc18e518f04311daf1a8f883 /drivers/net/wireless/iwlwifi/iwl3945-base.c
parentiwlwifi: do not schedule tasklet when rcv unused irq (diff)
downloadkernel-qcow2-linux-76f3915b4cbadf5f7dc80d3df6d3a7492914675a.tar.gz
kernel-qcow2-linux-76f3915b4cbadf5f7dc80d3df6d3a7492914675a.tar.xz
kernel-qcow2-linux-76f3915b4cbadf5f7dc80d3df6d3a7492914675a.zip
iwlwifi: Fix uCode error on association
The problem is that priv->assoc_id is set when assoc. resp frame is received. But, when it is set, LQ cmd is still not sent to the uCode, it is done from bg_post_assoc, which is called through a workqueue. On the other hand, when a tx arrives at the moment when this flag is set, but LQ is still not sent, the if condition in tx_skb will not hold and the frame will not be dropped. Thus, it will be sent through which is still not in the sta table in the uCoded. Signed-off-by: Gregory Greenman <gregory.greenman@intel.com> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl3945-base.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index f644c6bba85f..5d8965e0b900 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -2806,7 +2806,7 @@ static int iwl3945_tx_skb(struct iwl3945_priv *priv,
#endif
/* drop all data frame if we are not associated */
- if (!iwl3945_is_associated(priv) && !priv->assoc_id &&
+ if ((!iwl3945_is_associated(priv) || !priv->assoc_id) &&
((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA)) {
IWL_DEBUG_DROP("Dropping - !iwl3945_is_associated\n");
goto drop_unlock;