| .. | .. |
|---|
| 1 | 1 | /* |
|---|
| 2 | | - * Marvell Wireless LAN device driver: AP TX and RX data handling |
|---|
| 2 | + * NXP Wireless LAN device driver: AP TX and RX data handling |
|---|
| 3 | 3 | * |
|---|
| 4 | | - * Copyright (C) 2012-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., |
|---|
| .. | .. |
|---|
| 71 | 71 | */ |
|---|
| 72 | 72 | static void mwifiex_uap_cleanup_tx_queues(struct mwifiex_private *priv) |
|---|
| 73 | 73 | { |
|---|
| 74 | | - unsigned long flags; |
|---|
| 75 | 74 | struct list_head *ra_list; |
|---|
| 76 | 75 | int i; |
|---|
| 77 | 76 | |
|---|
| 78 | | - spin_lock_irqsave(&priv->wmm.ra_list_spinlock, flags); |
|---|
| 77 | + spin_lock_bh(&priv->wmm.ra_list_spinlock); |
|---|
| 79 | 78 | |
|---|
| 80 | 79 | for (i = 0; i < MAX_NUM_TID; i++, priv->del_list_idx++) { |
|---|
| 81 | 80 | if (priv->del_list_idx == MAX_NUM_TID) |
|---|
| .. | .. |
|---|
| 87 | 86 | } |
|---|
| 88 | 87 | } |
|---|
| 89 | 88 | |
|---|
| 90 | | - spin_unlock_irqrestore(&priv->wmm.ra_list_spinlock, flags); |
|---|
| 89 | + spin_unlock_bh(&priv->wmm.ra_list_spinlock); |
|---|
| 91 | 90 | } |
|---|
| 92 | 91 | |
|---|
| 93 | 92 | |
|---|
| .. | .. |
|---|
| 351 | 350 | skb->truesize += (skb->len - MWIFIEX_RX_DATA_BUF_SIZE); |
|---|
| 352 | 351 | |
|---|
| 353 | 352 | /* Forward multicast/broadcast packet to upper layer*/ |
|---|
| 354 | | - if (in_interrupt()) |
|---|
| 355 | | - netif_rx(skb); |
|---|
| 356 | | - else |
|---|
| 357 | | - netif_rx_ni(skb); |
|---|
| 358 | | - |
|---|
| 353 | + netif_rx_any_context(skb); |
|---|
| 359 | 354 | return 0; |
|---|
| 360 | 355 | } |
|---|
| 361 | 356 | |
|---|
| .. | .. |
|---|
| 378 | 373 | struct rx_packet_hdr *rx_pkt_hdr; |
|---|
| 379 | 374 | u16 rx_pkt_type; |
|---|
| 380 | 375 | u8 ta[ETH_ALEN], pkt_type; |
|---|
| 381 | | - unsigned long flags; |
|---|
| 382 | 376 | struct mwifiex_sta_node *node; |
|---|
| 383 | 377 | |
|---|
| 384 | 378 | uap_rx_pd = (struct uap_rxpd *)(skb->data); |
|---|
| .. | .. |
|---|
| 413 | 407 | |
|---|
| 414 | 408 | |
|---|
| 415 | 409 | if (rx_pkt_type != PKT_TYPE_BAR && uap_rx_pd->priority < MAX_NUM_TID) { |
|---|
| 416 | | - spin_lock_irqsave(&priv->sta_list_spinlock, flags); |
|---|
| 410 | + spin_lock_bh(&priv->sta_list_spinlock); |
|---|
| 417 | 411 | node = mwifiex_get_sta_entry(priv, ta); |
|---|
| 418 | 412 | if (node) |
|---|
| 419 | 413 | node->rx_seq[uap_rx_pd->priority] = |
|---|
| 420 | 414 | le16_to_cpu(uap_rx_pd->seq_num); |
|---|
| 421 | | - spin_unlock_irqrestore(&priv->sta_list_spinlock, flags); |
|---|
| 415 | + spin_unlock_bh(&priv->sta_list_spinlock); |
|---|
| 422 | 416 | } |
|---|
| 423 | 417 | |
|---|
| 424 | 418 | if (!priv->ap_11n_enabled || |
|---|