summaryrefslogtreecommitdiff
path: root/rx.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 /rx.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 'rx.c')
-rw-r--r--rx.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/rx.c b/rx.c
index 3390c5d..210269b 100644
--- a/rx.c
+++ b/rx.c
@@ -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);
}