4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: chunfan chen <je...@marvell.com>

commit dc386ce76dedaeeaaf006fceb6ed8cf2e20ff026 upstream.

The port_open flag is not applicable for IBSS mode. IBSS data
path was broken when port_open flag was introduced.
This patch fixes the problem by correcting the checks.

Fixes: 5c8946330abfa4c ("mwifiex: enable traffic only when port is open")
Signed-off-by: chunfan chen <je...@marvell.com>
Signed-off-by: Amitkumar Karwar <akar...@marvell.com>
Signed-off-by: Kalle Valo <kv...@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>

---
 drivers/net/wireless/marvell/mwifiex/sta_event.c |   10 ++++++----
 drivers/net/wireless/marvell/mwifiex/wmm.c       |    6 ++++--
 2 files changed, 10 insertions(+), 6 deletions(-)

--- a/drivers/net/wireless/marvell/mwifiex/sta_event.c
+++ b/drivers/net/wireless/marvell/mwifiex/sta_event.c
@@ -607,11 +607,13 @@ int mwifiex_process_sta_event(struct mwi
 
        case EVENT_PS_AWAKE:
                mwifiex_dbg(adapter, EVENT, "info: EVENT: AWAKE\n");
-               if (!adapter->pps_uapsd_mode && priv->port_open &&
+               if (!adapter->pps_uapsd_mode &&
+                   (priv->port_open ||
+                    (priv->bss_mode == NL80211_IFTYPE_ADHOC)) &&
                    priv->media_connected && adapter->sleep_period.period) {
-                               adapter->pps_uapsd_mode = true;
-                               mwifiex_dbg(adapter, EVENT,
-                                           "event: PPS/UAPSD mode 
activated\n");
+                       adapter->pps_uapsd_mode = true;
+                       mwifiex_dbg(adapter, EVENT,
+                                   "event: PPS/UAPSD mode activated\n");
                }
                adapter->tx_lock_flag = false;
                if (adapter->pps_uapsd_mode && adapter->gen_null_pkt) {
--- a/drivers/net/wireless/marvell/mwifiex/wmm.c
+++ b/drivers/net/wireless/marvell/mwifiex/wmm.c
@@ -475,7 +475,8 @@ mwifiex_wmm_lists_empty(struct mwifiex_a
                priv = adapter->priv[i];
                if (!priv)
                        continue;
-               if (!priv->port_open)
+               if (!priv->port_open &&
+                   (priv->bss_mode != NL80211_IFTYPE_ADHOC))
                        continue;
                if (adapter->if_ops.is_port_ready &&
                    !adapter->if_ops.is_port_ready(priv))
@@ -1099,7 +1100,8 @@ mwifiex_wmm_get_highest_priolist_ptr(str
 
                        priv_tmp = adapter->bss_prio_tbl[j].bss_prio_cur->priv;
 
-                       if (!priv_tmp->port_open ||
+                       if (((priv_tmp->bss_mode != NL80211_IFTYPE_ADHOC) &&
+                            !priv_tmp->port_open) ||
                            (atomic_read(&priv_tmp->wmm.tx_pkts_queued) == 0))
                                continue;
 


Reply via email to