summaryrefslogtreecommitdiff
path: root/isr.c
diff options
context:
space:
mode:
authorDavid Lin <dlin@marvell.com>2015-10-16 12:52:21 +0800
committerDavid Lin <dlin@marvell.com>2015-10-16 12:52:21 +0800
commit7a6aff718d2de7dee6f9d82eae8af91667e8ee86 (patch)
treef814ad67ecaccb2f005ba5f739632f8a398f629a /isr.c
parent59e0d3d167a5bc2c03010df4ed54cc0653b5ae58 (diff)
Commit mwlwifi driver 10.3.0.10.
1. Enhance Tx throughput. 2. Add the mechanism to stop and wake up sub Tx queue via ieee80211_stop_queue() and ieee80211_wake_queue(). 3. Refine code related to BA. 4. Replace BUG_ON() with WARN_ON() as suggested by LWN. 5. Acknowledge all packets in AMSDU to mac80211 after transmission is done. 6. Merge patch from community: fix a problem where the resources are left claimed if the firmware fails to load. 7. Replace dma_alloc_coherent() with dmam_alloc_coherent(). 8. Add debugfs. 9. Add linux version check to apply new API ieee80211_hw_set() existed after kernel 4.2. 10. Rearrange spin lock sequences in flushing AMSDU function to avoid dead lock on OpenWrt platform. Signed-off-by: David Lin <dlin@marvell.com>
Diffstat (limited to 'isr.c')
-rw-r--r--isr.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/isr.c b/isr.c
index 9e7d473..20b6088 100644
--- a/isr.c
+++ b/isr.c
@@ -66,12 +66,12 @@ irqreturn_t mwl_isr(int irq, void *dev_id)
}
}
- if (int_status & MACREG_A2HRIC_BIT_QUEUE_EMPTY) {
- int_status &= ~MACREG_A2HRIC_BIT_QUEUE_EMPTY;
+ if (int_status & MACREG_A2HRIC_BIT_QUE_EMPTY) {
+ int_status &= ~MACREG_A2HRIC_BIT_QUE_EMPTY;
if (!priv->is_qe_schedule) {
status = readl(int_status_mask);
- writel((status & ~MACREG_A2HRIC_BIT_QUEUE_EMPTY),
+ writel((status & ~MACREG_A2HRIC_BIT_QUE_EMPTY),
int_status_mask);
tasklet_schedule(&priv->qe_task);
priv->is_qe_schedule = true;
@@ -100,7 +100,6 @@ void mwl_watchdog_ba_events(struct work_struct *work)
struct mwl_ampdu_stream *streams;
struct mwl_priv *priv =
container_of(work, struct mwl_priv, watchdog_ba_handle);
- struct ieee80211_hw *hw = priv->hw;
u32 status;
rc = mwl_fwcmd_get_watchdog_bitmap(priv->hw, &bitmap);
@@ -123,13 +122,9 @@ void mwl_watchdog_ba_events(struct work_struct *work)
/* Check if the stream is in use before disabling it */
streams = &priv->ampdu[stream_index];
- if (streams->state == AMPDU_STREAM_ACTIVE) {
+ if (streams->state == AMPDU_STREAM_ACTIVE)
ieee80211_stop_tx_ba_session(streams->sta,
streams->tid);
- spin_unlock_bh(&priv->stream_lock);
- mwl_fwcmd_destroy_ba(hw, stream_index);
- spin_lock_bh(&priv->stream_lock);
- }
} else {
for (stream_index = 0;
stream_index < SYSADPT_TX_AMPDU_QUEUES;
@@ -141,9 +136,6 @@ void mwl_watchdog_ba_events(struct work_struct *work)
ieee80211_stop_tx_ba_session(streams->sta,
streams->tid);
- spin_unlock_bh(&priv->stream_lock);
- mwl_fwcmd_destroy_ba(hw, stream_index);
- spin_lock_bh(&priv->stream_lock);
}
}
}