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