diff options
author | David Lin <dlin@marvell.com> | 2015-10-16 12:52:21 +0800 |
---|---|---|
committer | David Lin <dlin@marvell.com> | 2015-10-16 12:52:21 +0800 |
commit | 7a6aff718d2de7dee6f9d82eae8af91667e8ee86 (patch) | |
tree | f814ad67ecaccb2f005ba5f739632f8a398f629a /rx.c | |
parent | 59e0d3d167a5bc2c03010df4ed54cc0653b5ae58 (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 'rx.c')
-rw-r--r-- | rx.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -15,6 +15,7 @@ /* Description: This file implements receive related functions. */ +#include <linux/etherdevice.h> #include <linux/skbuff.h> #include "sysadpt.h" @@ -288,7 +289,7 @@ static inline struct mwl_vif *mwl_rx_find_vif_bss(struct mwl_priv *priv, spin_lock_bh(&priv->vif_lock); list_for_each_entry(mwl_vif, &priv->vif_list, list) { - if (memcmp(bssid, mwl_vif->bssid, ETH_ALEN) == 0) { + if (ether_addr_equal(bssid, mwl_vif->bssid)) { spin_unlock_bh(&priv->vif_lock); return mwl_vif; } @@ -399,6 +400,7 @@ void mwl_rx_recv(unsigned long data) struct ieee80211_hdr *wh; u32 status_mask; + spin_lock(&priv->rx_desc_lock); desc = &priv->desc_data[0]; curr_hndl = desc->pnext_rx_hndl; @@ -409,8 +411,8 @@ void mwl_rx_recv(unsigned long data) priv->iobase1 + MACREG_REG_A2H_INTERRUPT_STATUS_MASK); priv->is_rx_schedule = false; - wiphy_warn(hw->wiphy, "busy or no receiving packets\n"); + spin_unlock(&priv->rx_desc_lock); return; } @@ -501,4 +503,6 @@ out: priv->iobase1 + MACREG_REG_A2H_INTERRUPT_STATUS_MASK); priv->is_rx_schedule = false; + + spin_unlock(&priv->rx_desc_lock); } |