Loading drivers/staging/rtl8192e/rtl_eeprom.c +34 −35 Original line number Diff line number Diff line Loading @@ -29,10 +29,10 @@ void eprom_cs(struct net_device *dev, short bit) { if (bit) write_nic_byte(dev, EPROM_CMD, (1<<EPROM_CS_SHIFT) | \ (1 << EPROM_CS_SHIFT) | read_nic_byte(dev, EPROM_CMD)); else write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev, EPROM_CMD)\ write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev, EPROM_CMD) & ~(1<<EPROM_CS_SHIFT)); udelay(EPROM_DELAY); Loading @@ -53,10 +53,10 @@ void eprom_ck_cycle(struct net_device *dev) void eprom_w(struct net_device *dev, short bit) { if (bit) write_nic_byte(dev, EPROM_CMD, (1<<EPROM_W_SHIFT) | \ write_nic_byte(dev, EPROM_CMD, (1<<EPROM_W_SHIFT) | read_nic_byte(dev, EPROM_CMD)); else write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev,EPROM_CMD)\ write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev, EPROM_CMD) & ~(1<<EPROM_W_SHIFT)); udelay(EPROM_DELAY); Loading Loading @@ -86,7 +86,6 @@ void eprom_send_bits_string(struct net_device *dev, short b[], int len) } } u32 eprom_read(struct net_device *dev, u32 addr) { struct r8192_priv *priv = rtllib_priv(dev); Loading drivers/staging/rtl8192e/rtllib_crypt.c +3 −3 Original line number Diff line number Diff line Loading @@ -15,8 +15,8 @@ #include <linux/module.h> #include <linux/init.h> #include <linux/slab.h> #include <asm/string.h> #include <asm/errno.h> #include <linux/string.h> #include <linux/errno.h> #include "rtllib.h" Loading drivers/staging/rtl8192e/rtllib_crypt.h +4 −4 Original line number Diff line number Diff line Loading @@ -61,8 +61,8 @@ struct rtllib_crypto_ops { /* maximum number of bytes added by encryption; encrypt buf is * allocated with extra_prefix_len bytes, copy of in_buf, and * extra_postfix_len; encrypt need not use all this space, but * the result must start at the beginning of the struct buffer and correct * length must be returned */ * the result must start at the beginning of the struct buffer and * correct length must be returned */ int extra_prefix_len, extra_postfix_len; struct module *owner; Loading drivers/staging/rtl8192e/rtllib_crypt_ccmp.c +17 −13 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ #include <linux/netdevice.h> #include <linux/if_ether.h> #include <linux/if_arp.h> #include <asm/string.h> #include <linux/string.h> #include <linux/wireless.h> #include "rtllib.h" Loading Loading @@ -192,7 +192,8 @@ static int rtllib_ccmp_encrypt(struct sk_buff *skb, int hdr_len, void *priv) int data_len, i; u8 *pos; struct rtllib_hdr_4addr *hdr; struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); if (skb_headroom(skb) < CCMP_HDR_LEN || skb_tailroom(skb) < CCMP_MIC_LEN || skb->len < hdr_len) Loading Loading @@ -232,7 +233,8 @@ static int rtllib_ccmp_encrypt(struct sk_buff *skb, int hdr_len, void *priv) mic = skb_put(skb, CCMP_MIC_LEN); ccmp_init_blocks(key->tfm, hdr, key->tx_pn, data_len, b0, b, s0); ccmp_init_blocks(key->tfm, hdr, key->tx_pn, data_len, b0, b, s0); blocks = (data_len + AES_BLOCK_LEN - 1) / AES_BLOCK_LEN; last = data_len % AES_BLOCK_LEN; Loading Loading @@ -262,7 +264,8 @@ static int rtllib_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv) struct rtllib_ccmp_data *key = priv; u8 keyidx, *pos; struct rtllib_hdr_4addr *hdr; struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); u8 pn[6]; if (skb->len < hdr_len + CCMP_HDR_LEN + CCMP_MIC_LEN) { Loading Loading @@ -308,7 +311,8 @@ static int rtllib_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv) return -4; } if (!tcb_desc->bHwSec) { size_t data_len = skb->len - hdr_len - CCMP_HDR_LEN - CCMP_MIC_LEN; size_t data_len = skb->len - hdr_len - CCMP_HDR_LEN - CCMP_MIC_LEN; u8 *mic = skb->data + skb->len - CCMP_MIC_LEN; u8 *b0 = key->rx_b0; u8 *b = key->rx_b; Loading drivers/staging/rtl8192e/rtllib_crypt_tkip.c +64 −60 Original line number Diff line number Diff line Loading @@ -18,15 +18,13 @@ #include <linux/netdevice.h> #include <linux/if_ether.h> #include <linux/if_arp.h> #include <asm/string.h> #include "rtllib.h" #include <linux/string.h> #include <linux/crypto.h> #include <linux/scatterlist.h> #include <linux/crc32.h> #include "rtllib.h" struct rtllib_tkip_data { #define TKIP_KEY_LEN 32 u8 key[TKIP_KEY_LEN]; Loading Loading @@ -181,8 +179,7 @@ static inline u16 Mk16_le(u16 *v) } static const u16 Sbox[256] = { static const u16 Sbox[256] = { 0xC6A5, 0xF884, 0xEE99, 0xF68D, 0xFF0D, 0xD6BD, 0xDEB1, 0x9154, 0x6050, 0x0203, 0xCEA9, 0x567D, 0xE719, 0xB562, 0x4DE6, 0xEC9A, 0x8F45, 0x1F9D, 0x8940, 0xFA87, 0xEF15, 0xB2EB, 0x8EC9, 0xFB0B, Loading Loading @@ -303,7 +300,8 @@ static int rtllib_tkip_encrypt(struct sk_buff *skb, int hdr_len, void *priv) int len; u8 *pos; struct rtllib_hdr_4addr *hdr; struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); struct blkcipher_desc desc = {.tfm = tkey->tx_tfm_arc4}; int ret = 0; u8 rc4key[16], *icv; Loading @@ -322,7 +320,8 @@ static int rtllib_tkip_encrypt(struct sk_buff *skb, int hdr_len, void *priv) tkey->tx_iv32); tkey->tx_phase1_done = 1; } tkip_mixing_phase2(rc4key, tkey->key, tkey->tx_ttak, tkey->tx_iv16); tkip_mixing_phase2(rc4key, tkey->key, tkey->tx_ttak, tkey->tx_iv16); } else tkey->tx_phase1_done = 1; Loading Loading @@ -384,7 +383,8 @@ static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) u32 iv32; u16 iv16; struct rtllib_hdr_4addr *hdr; struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); struct blkcipher_desc desc = {.tfm = tkey->rx_tfm_arc4}; u8 rc4key[16]; u8 icv[4]; Loading Loading @@ -422,12 +422,13 @@ static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) iv32 = pos[4] | (pos[5] << 8) | (pos[6] << 16) | (pos[7] << 24); pos += 8; if (!tcb_desc->bHwSec || (skb->cb[0] == 1)) { if (!tcb_desc->bHwSec || (skb->cb[0] == 1)) { if ((iv32 < tkey->rx_iv32 || (iv32 == tkey->rx_iv32 && iv16 <= tkey->rx_iv16))&&tkey->initialized) { (iv32 == tkey->rx_iv32 && iv16 <= tkey->rx_iv16)) && tkey->initialized) { if (net_ratelimit()) { printk(KERN_DEBUG "TKIP: replay detected: STA=" MAC_FMT printk(KERN_DEBUG "TKIP: replay detected: STA=" MAC_FMT " previous TSC %08x%04x received TSC " "%08x%04x\n", MAC_ARG(hdr->addr2), tkey->rx_iv32, tkey->rx_iv16, iv32, iv16); Loading @@ -438,7 +439,8 @@ static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) tkey->initialized = true; if (iv32 != tkey->rx_iv32 || !tkey->rx_phase1_done) { tkip_mixing_phase1(tkey->rx_ttak, tkey->key, hdr->addr2, iv32); tkip_mixing_phase1(tkey->rx_ttak, tkey->key, hdr->addr2, iv32); tkey->rx_phase1_done = 1; } tkip_mixing_phase2(rc4key, tkey->key, tkey->rx_ttak, iv16); Loading @@ -465,8 +467,9 @@ static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) if (memcmp(icv, pos + plen, 4) != 0) { if (iv32 != tkey->rx_iv32) { /* Previously cached Phase1 result was already lost, so * it needs to be recalculated for the next packet. */ /* Previously cached Phase1 result was already * lost, so it needs to be recalculated for the * next packet. */ tkey->rx_phase1_done = 0; } if (net_ratelimit()) { Loading Loading @@ -563,9 +566,8 @@ static int rtllib_michael_mic_add(struct sk_buff *skb, int hdr_len, void *priv) michael_mic_hdr(skb, tkey->tx_hdr); if (RTLLIB_QOS_HAS_SEQ(le16_to_cpu(hdr->frame_ctl))) { if (RTLLIB_QOS_HAS_SEQ(le16_to_cpu(hdr->frame_ctl))) tkey->tx_hdr[12] = *(skb->data + hdr_len - 2) & 0x07; } pos = skb_put(skb, 8); if (michael_mic(tkey->tx_tfm_michael, &tkey->key[16], tkey->tx_hdr, skb->data + hdr_len, skb->len - 8 - hdr_len, pos)) Loading Loading @@ -597,7 +599,8 @@ static void rtllib_michael_mic_failure(struct net_device *dev, } static int rtllib_michael_mic_verify(struct sk_buff *skb, int keyidx, int hdr_len, void *priv, struct rtllib_device* ieee) int hdr_len, void *priv, struct rtllib_device *ieee) { struct rtllib_tkip_data *tkey = priv; u8 mic[8]; Loading @@ -609,25 +612,26 @@ static int rtllib_michael_mic_verify(struct sk_buff *skb, int keyidx, return -1; michael_mic_hdr(skb, tkey->rx_hdr); if (RTLLIB_QOS_HAS_SEQ(le16_to_cpu(hdr->frame_ctl))) { if (RTLLIB_QOS_HAS_SEQ(le16_to_cpu(hdr->frame_ctl))) tkey->rx_hdr[12] = *(skb->data + hdr_len - 2) & 0x07; } if (michael_mic(tkey->rx_tfm_michael, &tkey->key[24], tkey->rx_hdr, skb->data + hdr_len, skb->len - 8 - hdr_len, mic)) return -1; if ((memcmp(mic, skb->data + skb->len - 8, 8) != 0)||(ieee->force_mic_error)) { if ((memcmp(mic, skb->data + skb->len - 8, 8) != 0) || (ieee->force_mic_error)) { struct rtllib_hdr_4addr *hdr; hdr = (struct rtllib_hdr_4addr *) skb->data; printk(KERN_DEBUG "%s: Michael MIC verification failed for " "MSDU from " MAC_FMT " keyidx=%d\n", skb->dev ? skb->dev->name : "N/A", MAC_ARG(hdr->addr2), keyidx); printk("%d, force_mic_error = %d\n", (memcmp(mic, skb->data + skb->len - 8, 8) != 0),\ printk(KERN_DEBUG "%d, force_mic_error = %d\n", (memcmp(mic, skb->data + skb->len - 8, 8) != 0),\ ieee->force_mic_error); if (skb->dev) { printk("skb->dev != NULL\n"); printk(KERN_INFO "skb->dev != NULL\n"); rtllib_michael_mic_failure(skb->dev, hdr, keyidx); } tkey->dot11RSNAStatsTKIPLocalMICFailures++; Loading Loading
drivers/staging/rtl8192e/rtl_eeprom.c +34 −35 Original line number Diff line number Diff line Loading @@ -29,10 +29,10 @@ void eprom_cs(struct net_device *dev, short bit) { if (bit) write_nic_byte(dev, EPROM_CMD, (1<<EPROM_CS_SHIFT) | \ (1 << EPROM_CS_SHIFT) | read_nic_byte(dev, EPROM_CMD)); else write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev, EPROM_CMD)\ write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev, EPROM_CMD) & ~(1<<EPROM_CS_SHIFT)); udelay(EPROM_DELAY); Loading @@ -53,10 +53,10 @@ void eprom_ck_cycle(struct net_device *dev) void eprom_w(struct net_device *dev, short bit) { if (bit) write_nic_byte(dev, EPROM_CMD, (1<<EPROM_W_SHIFT) | \ write_nic_byte(dev, EPROM_CMD, (1<<EPROM_W_SHIFT) | read_nic_byte(dev, EPROM_CMD)); else write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev,EPROM_CMD)\ write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev, EPROM_CMD) & ~(1<<EPROM_W_SHIFT)); udelay(EPROM_DELAY); Loading Loading @@ -86,7 +86,6 @@ void eprom_send_bits_string(struct net_device *dev, short b[], int len) } } u32 eprom_read(struct net_device *dev, u32 addr) { struct r8192_priv *priv = rtllib_priv(dev); Loading
drivers/staging/rtl8192e/rtllib_crypt.c +3 −3 Original line number Diff line number Diff line Loading @@ -15,8 +15,8 @@ #include <linux/module.h> #include <linux/init.h> #include <linux/slab.h> #include <asm/string.h> #include <asm/errno.h> #include <linux/string.h> #include <linux/errno.h> #include "rtllib.h" Loading
drivers/staging/rtl8192e/rtllib_crypt.h +4 −4 Original line number Diff line number Diff line Loading @@ -61,8 +61,8 @@ struct rtllib_crypto_ops { /* maximum number of bytes added by encryption; encrypt buf is * allocated with extra_prefix_len bytes, copy of in_buf, and * extra_postfix_len; encrypt need not use all this space, but * the result must start at the beginning of the struct buffer and correct * length must be returned */ * the result must start at the beginning of the struct buffer and * correct length must be returned */ int extra_prefix_len, extra_postfix_len; struct module *owner; Loading
drivers/staging/rtl8192e/rtllib_crypt_ccmp.c +17 −13 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ #include <linux/netdevice.h> #include <linux/if_ether.h> #include <linux/if_arp.h> #include <asm/string.h> #include <linux/string.h> #include <linux/wireless.h> #include "rtllib.h" Loading Loading @@ -192,7 +192,8 @@ static int rtllib_ccmp_encrypt(struct sk_buff *skb, int hdr_len, void *priv) int data_len, i; u8 *pos; struct rtllib_hdr_4addr *hdr; struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); if (skb_headroom(skb) < CCMP_HDR_LEN || skb_tailroom(skb) < CCMP_MIC_LEN || skb->len < hdr_len) Loading Loading @@ -232,7 +233,8 @@ static int rtllib_ccmp_encrypt(struct sk_buff *skb, int hdr_len, void *priv) mic = skb_put(skb, CCMP_MIC_LEN); ccmp_init_blocks(key->tfm, hdr, key->tx_pn, data_len, b0, b, s0); ccmp_init_blocks(key->tfm, hdr, key->tx_pn, data_len, b0, b, s0); blocks = (data_len + AES_BLOCK_LEN - 1) / AES_BLOCK_LEN; last = data_len % AES_BLOCK_LEN; Loading Loading @@ -262,7 +264,8 @@ static int rtllib_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv) struct rtllib_ccmp_data *key = priv; u8 keyidx, *pos; struct rtllib_hdr_4addr *hdr; struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); u8 pn[6]; if (skb->len < hdr_len + CCMP_HDR_LEN + CCMP_MIC_LEN) { Loading Loading @@ -308,7 +311,8 @@ static int rtllib_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv) return -4; } if (!tcb_desc->bHwSec) { size_t data_len = skb->len - hdr_len - CCMP_HDR_LEN - CCMP_MIC_LEN; size_t data_len = skb->len - hdr_len - CCMP_HDR_LEN - CCMP_MIC_LEN; u8 *mic = skb->data + skb->len - CCMP_MIC_LEN; u8 *b0 = key->rx_b0; u8 *b = key->rx_b; Loading
drivers/staging/rtl8192e/rtllib_crypt_tkip.c +64 −60 Original line number Diff line number Diff line Loading @@ -18,15 +18,13 @@ #include <linux/netdevice.h> #include <linux/if_ether.h> #include <linux/if_arp.h> #include <asm/string.h> #include "rtllib.h" #include <linux/string.h> #include <linux/crypto.h> #include <linux/scatterlist.h> #include <linux/crc32.h> #include "rtllib.h" struct rtllib_tkip_data { #define TKIP_KEY_LEN 32 u8 key[TKIP_KEY_LEN]; Loading Loading @@ -181,8 +179,7 @@ static inline u16 Mk16_le(u16 *v) } static const u16 Sbox[256] = { static const u16 Sbox[256] = { 0xC6A5, 0xF884, 0xEE99, 0xF68D, 0xFF0D, 0xD6BD, 0xDEB1, 0x9154, 0x6050, 0x0203, 0xCEA9, 0x567D, 0xE719, 0xB562, 0x4DE6, 0xEC9A, 0x8F45, 0x1F9D, 0x8940, 0xFA87, 0xEF15, 0xB2EB, 0x8EC9, 0xFB0B, Loading Loading @@ -303,7 +300,8 @@ static int rtllib_tkip_encrypt(struct sk_buff *skb, int hdr_len, void *priv) int len; u8 *pos; struct rtllib_hdr_4addr *hdr; struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); struct blkcipher_desc desc = {.tfm = tkey->tx_tfm_arc4}; int ret = 0; u8 rc4key[16], *icv; Loading @@ -322,7 +320,8 @@ static int rtllib_tkip_encrypt(struct sk_buff *skb, int hdr_len, void *priv) tkey->tx_iv32); tkey->tx_phase1_done = 1; } tkip_mixing_phase2(rc4key, tkey->key, tkey->tx_ttak, tkey->tx_iv16); tkip_mixing_phase2(rc4key, tkey->key, tkey->tx_ttak, tkey->tx_iv16); } else tkey->tx_phase1_done = 1; Loading Loading @@ -384,7 +383,8 @@ static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) u32 iv32; u16 iv16; struct rtllib_hdr_4addr *hdr; struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); struct blkcipher_desc desc = {.tfm = tkey->rx_tfm_arc4}; u8 rc4key[16]; u8 icv[4]; Loading Loading @@ -422,12 +422,13 @@ static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) iv32 = pos[4] | (pos[5] << 8) | (pos[6] << 16) | (pos[7] << 24); pos += 8; if (!tcb_desc->bHwSec || (skb->cb[0] == 1)) { if (!tcb_desc->bHwSec || (skb->cb[0] == 1)) { if ((iv32 < tkey->rx_iv32 || (iv32 == tkey->rx_iv32 && iv16 <= tkey->rx_iv16))&&tkey->initialized) { (iv32 == tkey->rx_iv32 && iv16 <= tkey->rx_iv16)) && tkey->initialized) { if (net_ratelimit()) { printk(KERN_DEBUG "TKIP: replay detected: STA=" MAC_FMT printk(KERN_DEBUG "TKIP: replay detected: STA=" MAC_FMT " previous TSC %08x%04x received TSC " "%08x%04x\n", MAC_ARG(hdr->addr2), tkey->rx_iv32, tkey->rx_iv16, iv32, iv16); Loading @@ -438,7 +439,8 @@ static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) tkey->initialized = true; if (iv32 != tkey->rx_iv32 || !tkey->rx_phase1_done) { tkip_mixing_phase1(tkey->rx_ttak, tkey->key, hdr->addr2, iv32); tkip_mixing_phase1(tkey->rx_ttak, tkey->key, hdr->addr2, iv32); tkey->rx_phase1_done = 1; } tkip_mixing_phase2(rc4key, tkey->key, tkey->rx_ttak, iv16); Loading @@ -465,8 +467,9 @@ static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) if (memcmp(icv, pos + plen, 4) != 0) { if (iv32 != tkey->rx_iv32) { /* Previously cached Phase1 result was already lost, so * it needs to be recalculated for the next packet. */ /* Previously cached Phase1 result was already * lost, so it needs to be recalculated for the * next packet. */ tkey->rx_phase1_done = 0; } if (net_ratelimit()) { Loading Loading @@ -563,9 +566,8 @@ static int rtllib_michael_mic_add(struct sk_buff *skb, int hdr_len, void *priv) michael_mic_hdr(skb, tkey->tx_hdr); if (RTLLIB_QOS_HAS_SEQ(le16_to_cpu(hdr->frame_ctl))) { if (RTLLIB_QOS_HAS_SEQ(le16_to_cpu(hdr->frame_ctl))) tkey->tx_hdr[12] = *(skb->data + hdr_len - 2) & 0x07; } pos = skb_put(skb, 8); if (michael_mic(tkey->tx_tfm_michael, &tkey->key[16], tkey->tx_hdr, skb->data + hdr_len, skb->len - 8 - hdr_len, pos)) Loading Loading @@ -597,7 +599,8 @@ static void rtllib_michael_mic_failure(struct net_device *dev, } static int rtllib_michael_mic_verify(struct sk_buff *skb, int keyidx, int hdr_len, void *priv, struct rtllib_device* ieee) int hdr_len, void *priv, struct rtllib_device *ieee) { struct rtllib_tkip_data *tkey = priv; u8 mic[8]; Loading @@ -609,25 +612,26 @@ static int rtllib_michael_mic_verify(struct sk_buff *skb, int keyidx, return -1; michael_mic_hdr(skb, tkey->rx_hdr); if (RTLLIB_QOS_HAS_SEQ(le16_to_cpu(hdr->frame_ctl))) { if (RTLLIB_QOS_HAS_SEQ(le16_to_cpu(hdr->frame_ctl))) tkey->rx_hdr[12] = *(skb->data + hdr_len - 2) & 0x07; } if (michael_mic(tkey->rx_tfm_michael, &tkey->key[24], tkey->rx_hdr, skb->data + hdr_len, skb->len - 8 - hdr_len, mic)) return -1; if ((memcmp(mic, skb->data + skb->len - 8, 8) != 0)||(ieee->force_mic_error)) { if ((memcmp(mic, skb->data + skb->len - 8, 8) != 0) || (ieee->force_mic_error)) { struct rtllib_hdr_4addr *hdr; hdr = (struct rtllib_hdr_4addr *) skb->data; printk(KERN_DEBUG "%s: Michael MIC verification failed for " "MSDU from " MAC_FMT " keyidx=%d\n", skb->dev ? skb->dev->name : "N/A", MAC_ARG(hdr->addr2), keyidx); printk("%d, force_mic_error = %d\n", (memcmp(mic, skb->data + skb->len - 8, 8) != 0),\ printk(KERN_DEBUG "%d, force_mic_error = %d\n", (memcmp(mic, skb->data + skb->len - 8, 8) != 0),\ ieee->force_mic_error); if (skb->dev) { printk("skb->dev != NULL\n"); printk(KERN_INFO "skb->dev != NULL\n"); rtllib_michael_mic_failure(skb->dev, hdr, keyidx); } tkey->dot11RSNAStatsTKIPLocalMICFailures++; Loading