| .. | .. |
|---|
| 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; |
|---|