recv.c (ea51e5040e24eefe44d70bc654a237ca1f0225b0) recv.c (f88373fa47f3ce6590fdfaa742d0ddacc2ae017f)
1/*
2 * Copyright (c) 2008-2011 Atheros Communications Inc.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES

--- 808 unchanged lines hidden (view full) ---

817 is_mc = !!is_multicast_ether_addr(hdr->addr1);
818 is_valid_tkip = rx_stats->rs_keyix != ATH9K_RXKEYIX_INVALID &&
819 test_bit(rx_stats->rs_keyix, common->tkip_keymap);
820 strip_mic = is_valid_tkip && ieee80211_is_data(fc) &&
821 !(rx_stats->rs_status &
822 (ATH9K_RXERR_DECRYPT | ATH9K_RXERR_CRC | ATH9K_RXERR_MIC |
823 ATH9K_RXERR_KEYMISS));
824
1/*
2 * Copyright (c) 2008-2011 Atheros Communications Inc.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES

--- 808 unchanged lines hidden (view full) ---

817 is_mc = !!is_multicast_ether_addr(hdr->addr1);
818 is_valid_tkip = rx_stats->rs_keyix != ATH9K_RXKEYIX_INVALID &&
819 test_bit(rx_stats->rs_keyix, common->tkip_keymap);
820 strip_mic = is_valid_tkip && ieee80211_is_data(fc) &&
821 !(rx_stats->rs_status &
822 (ATH9K_RXERR_DECRYPT | ATH9K_RXERR_CRC | ATH9K_RXERR_MIC |
823 ATH9K_RXERR_KEYMISS));
824
825 /*
826 * Key miss events are only relevant for pairwise keys where the
827 * descriptor does contain a valid key index. This has been observed
828 * mostly with CCMP encryption.
829 */
830 if (rx_stats->rs_keyix == ATH9K_RXKEYIX_INVALID)
831 rx_stats->rs_status &= ~ATH9K_RXERR_KEYMISS;
832
825 if (!rx_stats->rs_datalen)
826 return false;
827 /*
828 * rs_status follows rs_datalen so if rs_datalen is too large
829 * we can take a hint that hardware corrupted it, so ignore
830 * those frames.
831 */
832 if (rx_stats->rs_datalen > (common->rx_bufsize - rx_status_len))

--- 1151 unchanged lines hidden ---
833 if (!rx_stats->rs_datalen)
834 return false;
835 /*
836 * rs_status follows rs_datalen so if rs_datalen is too large
837 * we can take a hint that hardware corrupted it, so ignore
838 * those frames.
839 */
840 if (rx_stats->rs_datalen > (common->rx_bufsize - rx_status_len))

--- 1151 unchanged lines hidden ---