iwlwifi: do not set the sequence control bit is not needed
ath9k: fix max phy rate at rate control init mwifiex: avoid double list_del in command cancel path iwlwifi: update SCD BC table for all SCD queues
This commit is contained in:
parent
e1481910fd
commit
2e7bab3822
|
@ -0,0 +1,37 @@
|
|||
From 10636bc2d60942254bda149827b922c41f4cb4af Mon Sep 17 00:00:00 2001
|
||||
From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
|
||||
Date: Sat, 10 Dec 2011 18:59:43 +0530
|
||||
Subject: [PATCH 03/10] ath9k: fix max phy rate at rate control init
|
||||
|
||||
The stations always chooses 1Mbps for all trasmitting frames,
|
||||
whenever the AP is configured to lock the supported rates.
|
||||
As the max phy rate is always set with the 4th from highest phy rate,
|
||||
this assumption might be wrong if we have less than that. Fix that.
|
||||
|
||||
Cc: stable@kernel.org
|
||||
Cc: Paul Stewart <pstew@google.com>
|
||||
Reported-by: Ajay Gummalla <agummalla@google.com>
|
||||
Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
---
|
||||
drivers/net/wireless/ath/ath9k/rc.c | 4 +++-
|
||||
1 files changed, 3 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ath/ath9k/rc.c b/drivers/net/wireless/ath/ath9k/rc.c
|
||||
index 8448281..cc5703b 100644
|
||||
--- a/drivers/net/wireless/ath/ath9k/rc.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/rc.c
|
||||
@@ -1270,7 +1270,9 @@ static void ath_rc_init(struct ath_softc *sc,
|
||||
|
||||
ath_rc_priv->max_valid_rate = k;
|
||||
ath_rc_sort_validrates(rate_table, ath_rc_priv);
|
||||
- ath_rc_priv->rate_max_phy = ath_rc_priv->valid_rate_index[k-4];
|
||||
+ ath_rc_priv->rate_max_phy = (k > 4) ?
|
||||
+ ath_rc_priv->valid_rate_index[k-4] :
|
||||
+ ath_rc_priv->valid_rate_index[k-1];
|
||||
ath_rc_priv->rate_table = rate_table;
|
||||
|
||||
ath_dbg(common, ATH_DBG_CONFIG,
|
||||
--
|
||||
1.7.4.4
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
From 123877b80ed62c3b897c53357b622574c023b642 Mon Sep 17 00:00:00 2001
|
||||
From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Date: Thu, 8 Dec 2011 15:52:00 -0800
|
||||
Subject: [PATCH 01/10] iwlwifi: do not set the sequence control bit is not
|
||||
needed
|
||||
|
||||
Check the IEEE80211_TX_CTL_ASSIGN_SEQ flag from mac80211, then decide how to
|
||||
set the TX_CMD_FLG_SEQ_CTL_MSK bit. Setting the wrong bit in BAR frame whill
|
||||
make the firmware to increment the sequence number which is incorrect and
|
||||
cause unknown behavior.
|
||||
|
||||
CC: stable@vger.kernel.org #3.0+
|
||||
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 5 ++++-
|
||||
1 files changed, 4 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
|
||||
index 35a6b71..df1540c 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
|
||||
@@ -91,7 +91,10 @@ static void iwlagn_tx_cmd_build_basic(struct iwl_priv *priv,
|
||||
tx_cmd->tid_tspec = qc[0] & 0xf;
|
||||
tx_flags &= ~TX_CMD_FLG_SEQ_CTL_MSK;
|
||||
} else {
|
||||
- tx_flags |= TX_CMD_FLG_SEQ_CTL_MSK;
|
||||
+ if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ)
|
||||
+ tx_flags |= TX_CMD_FLG_SEQ_CTL_MSK;
|
||||
+ else
|
||||
+ tx_flags &= ~TX_CMD_FLG_SEQ_CTL_MSK;
|
||||
}
|
||||
|
||||
iwlagn_tx_cmd_protection(priv, info, fc, &tx_flags);
|
||||
--
|
||||
1.7.4.4
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
From 96f1f05af76b601ab21a7dc603ae0a1cea4efc3d Mon Sep 17 00:00:00 2001
|
||||
From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Date: Fri, 16 Dec 2011 07:53:18 -0800
|
||||
Subject: [PATCH 10/10] iwlwifi: update SCD BC table for all SCD queues
|
||||
|
||||
Since we configure all the queues as CHAINABLE, we need to update the
|
||||
byte count for all the queues, not only the AGGREGATABLE ones.
|
||||
|
||||
Not doing so can confuse the SCD and make the fw assert.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 4 +---
|
||||
1 files changed, 1 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
|
||||
index ce91898..5f17ab8 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
|
||||
@@ -1197,9 +1197,7 @@ static int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
|
||||
iwl_print_hex_dump(trans, IWL_DL_TX, (u8 *)tx_cmd->hdr, hdr_len);
|
||||
|
||||
/* Set up entry for this TFD in Tx byte-count array */
|
||||
- if (is_agg)
|
||||
- iwl_trans_txq_update_byte_cnt_tbl(trans, txq,
|
||||
- le16_to_cpu(tx_cmd->len));
|
||||
+ iwl_trans_txq_update_byte_cnt_tbl(trans, txq, le16_to_cpu(tx_cmd->len));
|
||||
|
||||
dma_sync_single_for_device(bus(trans)->dev, txcmd_phys, firstlen,
|
||||
DMA_BIDIRECTIONAL);
|
||||
--
|
||||
1.7.4.4
|
||||
|
14
kernel.spec
14
kernel.spec
|
@ -832,6 +832,10 @@ Patch21049: tpm_tis-delay-after-aborting-cmd.patch
|
|||
Patch50000: compat-wireless-config-fixups.patch
|
||||
Patch50001: compat-wireless-change-CONFIG_IWLAGN-CONFIG_IWLWIFI.patch
|
||||
Patch50100: iwlwifi-tx_sync-only-on-PAN-context.patch
|
||||
Patch50101: ath9k-fix-max-phy-rate-at-rate-control-init.patch
|
||||
Patch50102: iwlwifi-do-not-set-the-sequence-control-bit-is-not-n.patch
|
||||
Patch50103: iwlwifi-update-SCD-BC-table-for-all-SCD-queues.patch
|
||||
Patch50104: mwifiex-avoid-double-list_del-in-command-cancel-path.patch
|
||||
|
||||
Patch22000: route-cache-garbage-collector.patch
|
||||
|
||||
|
@ -1608,8 +1612,12 @@ ApplyPatch compat-wireless-change-CONFIG_IWLAGN-CONFIG_IWLWIFI.patch
|
|||
ApplyPatch bcma-brcmsmac-compat.patch
|
||||
|
||||
# Apply some iwlwifi regression fixes not in the 3.2-rc6 wireless snapshot
|
||||
ApplyPatch iwlwifi-do-not-set-the-sequence-control-bit-is-not-n.patch
|
||||
ApplyPatch ath9k-fix-max-phy-rate-at-rate-control-init.patch
|
||||
ApplyPatch mwifiex-avoid-double-list_del-in-command-cancel-path.patch
|
||||
ApplyPatch iwlwifi-tx_sync-only-on-PAN-context.patch
|
||||
ApplyPatch iwlwifi-allow-to-switch-to-HT40-if-not-associated.patch
|
||||
ApplyPatch iwlwifi-update-SCD-BC-table-for-all-SCD-queues.patch
|
||||
|
||||
cd ..
|
||||
|
||||
|
@ -2283,6 +2291,12 @@ fi
|
|||
# and build.
|
||||
|
||||
%changelog
|
||||
* Thu Dec 22 2011 John W. Linville <linville@redhat.com>
|
||||
- iwlwifi: do not set the sequence control bit is not needed
|
||||
- ath9k: fix max phy rate at rate control init
|
||||
- mwifiex: avoid double list_del in command cancel path
|
||||
- iwlwifi: update SCD BC table for all SCD queues
|
||||
|
||||
* Wed Dec 21 2011 Dave Jones <davej@redhat.com> 3.1.6-1
|
||||
- Linux 3.1.6
|
||||
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
From 51e708c1049e721b9c5c48d026bc97ca8497d39a Mon Sep 17 00:00:00 2001
|
||||
From: Yogesh Ashok Powar <yogeshp@marvell.com>
|
||||
Date: Tue, 13 Dec 2011 20:43:16 -0800
|
||||
Subject: [PATCH 04/10] mwifiex: avoid double list_del in command cancel path
|
||||
|
||||
Command cancel path cancels the current command and moves
|
||||
it to free command queue. While doing that it deletes the
|
||||
command entry from the pending list. This is not correct
|
||||
as the entry has been already deleted from the pending
|
||||
list at 'mwifiex_exec_next_cmd'. Fixing it.
|
||||
|
||||
Also making sure the stale command pointer is cleaned and
|
||||
unaccessible for later use.
|
||||
|
||||
Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com>
|
||||
Signed-off-by: Bing Zhao <bzhao@marvell.com>
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
---
|
||||
drivers/net/wireless/mwifiex/cmdevt.c | 9 ++-------
|
||||
1 files changed, 2 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/mwifiex/cmdevt.c b/drivers/net/wireless/mwifiex/cmdevt.c
|
||||
index ac27815..6e0a3ea 100644
|
||||
--- a/drivers/net/wireless/mwifiex/cmdevt.c
|
||||
+++ b/drivers/net/wireless/mwifiex/cmdevt.c
|
||||
@@ -939,7 +939,6 @@ mwifiex_cancel_pending_ioctl(struct mwifiex_adapter *adapter)
|
||||
{
|
||||
struct cmd_ctrl_node *cmd_node = NULL, *tmp_node = NULL;
|
||||
unsigned long cmd_flags;
|
||||
- unsigned long cmd_pending_q_flags;
|
||||
unsigned long scan_pending_q_flags;
|
||||
uint16_t cancel_scan_cmd = false;
|
||||
|
||||
@@ -949,12 +948,9 @@ mwifiex_cancel_pending_ioctl(struct mwifiex_adapter *adapter)
|
||||
cmd_node = adapter->curr_cmd;
|
||||
cmd_node->wait_q_enabled = false;
|
||||
cmd_node->cmd_flag |= CMD_F_CANCELED;
|
||||
- spin_lock_irqsave(&adapter->cmd_pending_q_lock,
|
||||
- cmd_pending_q_flags);
|
||||
- list_del(&cmd_node->list);
|
||||
- spin_unlock_irqrestore(&adapter->cmd_pending_q_lock,
|
||||
- cmd_pending_q_flags);
|
||||
mwifiex_insert_cmd_to_free_q(adapter, cmd_node);
|
||||
+ mwifiex_complete_cmd(adapter, adapter->curr_cmd);
|
||||
+ adapter->curr_cmd = NULL;
|
||||
spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, cmd_flags);
|
||||
}
|
||||
|
||||
@@ -981,7 +977,6 @@ mwifiex_cancel_pending_ioctl(struct mwifiex_adapter *adapter)
|
||||
spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, cmd_flags);
|
||||
}
|
||||
adapter->cmd_wait_q.status = -1;
|
||||
- mwifiex_complete_cmd(adapter, adapter->curr_cmd);
|
||||
}
|
||||
|
||||
/*
|
||||
--
|
||||
1.7.4.4
|
||||
|
Loading…
Reference in New Issue