.. | .. |
---|
1 | 1 | /* |
---|
2 | | - * Marvell Wireless LAN device driver: station event handling |
---|
| 2 | + * NXP Wireless LAN device driver: station event handling |
---|
3 | 3 | * |
---|
4 | | - * Copyright (C) 2011-2014, Marvell International Ltd. |
---|
| 4 | + * Copyright 2011-2020 NXP |
---|
5 | 5 | * |
---|
6 | | - * This software file (the "File") is distributed by Marvell International |
---|
7 | | - * Ltd. under the terms of the GNU General Public License Version 2, June 1991 |
---|
| 6 | + * This software file (the "File") is distributed by NXP |
---|
| 7 | + * under the terms of the GNU General Public License Version 2, June 1991 |
---|
8 | 8 | * (the "License"). You may use, redistribute and/or modify this File in |
---|
9 | 9 | * accordance with the terms and conditions of the License, a copy of which |
---|
10 | 10 | * is available by writing to the Free Software Foundation, Inc., |
---|
.. | .. |
---|
27 | 27 | |
---|
28 | 28 | #define MWIFIEX_IBSS_CONNECT_EVT_FIX_SIZE 12 |
---|
29 | 29 | |
---|
30 | | -static int mwifiex_check_ibss_peer_capabilties(struct mwifiex_private *priv, |
---|
31 | | - struct mwifiex_sta_node *sta_ptr, |
---|
32 | | - struct sk_buff *event) |
---|
| 30 | +static int mwifiex_check_ibss_peer_capabilities(struct mwifiex_private *priv, |
---|
| 31 | + struct mwifiex_sta_node *sta_ptr, |
---|
| 32 | + struct sk_buff *event) |
---|
33 | 33 | { |
---|
34 | 34 | int evt_len, ele_len; |
---|
35 | 35 | u8 *curr; |
---|
.. | .. |
---|
42 | 42 | evt_len = event->len; |
---|
43 | 43 | curr = event->data; |
---|
44 | 44 | |
---|
45 | | - mwifiex_dbg_dump(priv->adapter, EVT_D, "ibss peer capabilties:", |
---|
| 45 | + mwifiex_dbg_dump(priv->adapter, EVT_D, "ibss peer capabilities:", |
---|
46 | 46 | event->data, event->len); |
---|
47 | 47 | |
---|
48 | 48 | skb_push(event, MWIFIEX_IBSS_CONNECT_EVT_FIX_SIZE); |
---|
.. | .. |
---|
345 | 345 | { |
---|
346 | 346 | struct mwifiex_tx_pause_tlv *tp; |
---|
347 | 347 | struct mwifiex_sta_node *sta_ptr; |
---|
348 | | - unsigned long flags; |
---|
349 | 348 | |
---|
350 | 349 | tp = (void *)tlv; |
---|
351 | 350 | mwifiex_dbg(priv->adapter, EVENT, |
---|
.. | .. |
---|
361 | 360 | } else if (is_multicast_ether_addr(tp->peermac)) { |
---|
362 | 361 | mwifiex_update_ralist_tx_pause(priv, tp->peermac, tp->tx_pause); |
---|
363 | 362 | } else { |
---|
364 | | - spin_lock_irqsave(&priv->sta_list_spinlock, flags); |
---|
| 363 | + spin_lock_bh(&priv->sta_list_spinlock); |
---|
365 | 364 | sta_ptr = mwifiex_get_sta_entry(priv, tp->peermac); |
---|
366 | 365 | if (sta_ptr && sta_ptr->tx_pause != tp->tx_pause) { |
---|
367 | 366 | sta_ptr->tx_pause = tp->tx_pause; |
---|
| 367 | + spin_unlock_bh(&priv->sta_list_spinlock); |
---|
368 | 368 | mwifiex_update_ralist_tx_pause(priv, tp->peermac, |
---|
369 | 369 | tp->tx_pause); |
---|
| 370 | + } else { |
---|
| 371 | + spin_unlock_bh(&priv->sta_list_spinlock); |
---|
370 | 372 | } |
---|
371 | | - spin_unlock_irqrestore(&priv->sta_list_spinlock, flags); |
---|
372 | 373 | } |
---|
373 | 374 | } |
---|
374 | 375 | |
---|
.. | .. |
---|
378 | 379 | struct mwifiex_tx_pause_tlv *tp; |
---|
379 | 380 | struct mwifiex_sta_node *sta_ptr; |
---|
380 | 381 | int status; |
---|
381 | | - unsigned long flags; |
---|
382 | 382 | |
---|
383 | 383 | tp = (void *)tlv; |
---|
384 | 384 | mwifiex_dbg(priv->adapter, EVENT, |
---|
.. | .. |
---|
397 | 397 | |
---|
398 | 398 | status = mwifiex_get_tdls_link_status(priv, tp->peermac); |
---|
399 | 399 | if (mwifiex_is_tdls_link_setup(status)) { |
---|
400 | | - spin_lock_irqsave(&priv->sta_list_spinlock, flags); |
---|
| 400 | + spin_lock_bh(&priv->sta_list_spinlock); |
---|
401 | 401 | sta_ptr = mwifiex_get_sta_entry(priv, tp->peermac); |
---|
402 | 402 | if (sta_ptr && sta_ptr->tx_pause != tp->tx_pause) { |
---|
403 | 403 | sta_ptr->tx_pause = tp->tx_pause; |
---|
| 404 | + spin_unlock_bh(&priv->sta_list_spinlock); |
---|
404 | 405 | mwifiex_update_ralist_tx_pause(priv, |
---|
405 | 406 | tp->peermac, |
---|
406 | 407 | tp->tx_pause); |
---|
| 408 | + } else { |
---|
| 409 | + spin_unlock_bh(&priv->sta_list_spinlock); |
---|
407 | 410 | } |
---|
408 | | - spin_unlock_irqrestore(&priv->sta_list_spinlock, flags); |
---|
409 | 411 | } |
---|
410 | 412 | } |
---|
411 | 413 | } |
---|
.. | .. |
---|
937 | 939 | ibss_sta_addr); |
---|
938 | 940 | sta_ptr = mwifiex_add_sta_entry(priv, ibss_sta_addr); |
---|
939 | 941 | if (sta_ptr && adapter->adhoc_11n_enabled) { |
---|
940 | | - mwifiex_check_ibss_peer_capabilties(priv, sta_ptr, |
---|
941 | | - adapter->event_skb); |
---|
| 942 | + mwifiex_check_ibss_peer_capabilities(priv, sta_ptr, |
---|
| 943 | + adapter->event_skb); |
---|
942 | 944 | if (sta_ptr->is_11n_enabled) |
---|
943 | 945 | for (i = 0; i < MAX_NUM_TID; i++) |
---|
944 | 946 | sta_ptr->ampdu_sta[i] = |
---|
.. | .. |
---|
1059 | 1061 | break; |
---|
1060 | 1062 | case EVENT_BT_COEX_WLAN_PARA_CHANGE: |
---|
1061 | 1063 | dev_dbg(adapter->dev, "EVENT: BT coex wlan param update\n"); |
---|
| 1064 | + if (adapter->ignore_btcoex_events) |
---|
| 1065 | + break; |
---|
| 1066 | + |
---|
1062 | 1067 | mwifiex_bt_coex_wlan_param_update_event(priv, |
---|
1063 | 1068 | adapter->event_skb); |
---|
1064 | 1069 | break; |
---|