| .. | .. |
|---|
| 1 | 1 | /* |
|---|
| 2 | | - * Marvell Wireless LAN device driver: station RX data handling |
|---|
| 2 | + * NXP Wireless LAN device driver: station RX data 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., |
|---|
| .. | .. |
|---|
| 152 | 152 | mwifiex_process_tdls_action_frame(priv, offset, rx_pkt_len); |
|---|
| 153 | 153 | } |
|---|
| 154 | 154 | |
|---|
| 155 | | - priv->rxpd_rate = local_rx_pd->rx_rate; |
|---|
| 156 | | - |
|---|
| 157 | | - priv->rxpd_htinfo = local_rx_pd->ht_info; |
|---|
| 155 | + /* Only stash RX bitrate for unicast packets. */ |
|---|
| 156 | + if (likely(!is_multicast_ether_addr(rx_pkt_hdr->eth803_hdr.h_dest))) { |
|---|
| 157 | + priv->rxpd_rate = local_rx_pd->rx_rate; |
|---|
| 158 | + priv->rxpd_htinfo = local_rx_pd->ht_info; |
|---|
| 159 | + } |
|---|
| 158 | 160 | |
|---|
| 159 | 161 | if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA || |
|---|
| 160 | 162 | GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_UAP) { |
|---|
| 161 | | - adj_rx_rate = mwifiex_adjust_data_rate(priv, priv->rxpd_rate, |
|---|
| 162 | | - priv->rxpd_htinfo); |
|---|
| 163 | + adj_rx_rate = mwifiex_adjust_data_rate(priv, |
|---|
| 164 | + local_rx_pd->rx_rate, |
|---|
| 165 | + local_rx_pd->ht_info); |
|---|
| 163 | 166 | mwifiex_hist_data_add(priv, adj_rx_rate, local_rx_pd->snr, |
|---|
| 164 | 167 | local_rx_pd->nf); |
|---|
| 165 | 168 | } |
|---|
| .. | .. |
|---|
| 247 | 250 | local_rx_pd->nf); |
|---|
| 248 | 251 | } |
|---|
| 249 | 252 | } else { |
|---|
| 250 | | - if (rx_pkt_type != PKT_TYPE_BAR) |
|---|
| 253 | + if (rx_pkt_type != PKT_TYPE_BAR && |
|---|
| 254 | + local_rx_pd->priority < MAX_NUM_TID) |
|---|
| 251 | 255 | priv->rx_seq[local_rx_pd->priority] = seq_num; |
|---|
| 252 | 256 | memcpy(ta, priv->curr_bss_params.bss_descriptor.mac_address, |
|---|
| 253 | 257 | ETH_ALEN); |
|---|