diff options
author | Florian Schilhabel <florian.c.schilhabel@googlemail.com> | 2010-07-15 13:04:24 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-07-22 15:00:22 -0400 |
commit | bb21199a013b13276336bb92012c9e68a0c179b9 (patch) | |
tree | 5020ff83daf8f47f1b2dddca1748f243bccf3279 /drivers/staging/rtl8192su | |
parent | 353db17dce3d621149aae45aa9f043876fec4dc1 (diff) |
staging: rtl8192su: merge updated ieee80211_crypto_ops()
Signed-off-by: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/rtl8192su')
4 files changed, 10 insertions, 4 deletions
diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211.h b/drivers/staging/rtl8192su/ieee80211/ieee80211.h index 2c860db396c..1c14adbfb98 100644 --- a/drivers/staging/rtl8192su/ieee80211/ieee80211.h +++ b/drivers/staging/rtl8192su/ieee80211/ieee80211.h | |||
@@ -1141,6 +1141,7 @@ struct ieee80211_device { | |||
1141 | /* hw security related */ | 1141 | /* hw security related */ |
1142 | u8 hwsec_active; | 1142 | u8 hwsec_active; |
1143 | bool is_silent_reset; | 1143 | bool is_silent_reset; |
1144 | bool force_mic_error; | ||
1144 | bool is_roaming; | 1145 | bool is_roaming; |
1145 | bool ieee_up; | 1146 | bool ieee_up; |
1146 | bool bSupportRemoteWakeUp; | 1147 | bool bSupportRemoteWakeUp; |
diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt.h b/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt.h index b58a3bcc0dc..42e52aedd29 100644 --- a/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt.h +++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt.h | |||
@@ -49,7 +49,7 @@ struct ieee80211_crypto_ops { | |||
49 | * These can be NULL if full MSDU operations are not needed. */ | 49 | * These can be NULL if full MSDU operations are not needed. */ |
50 | int (*encrypt_msdu)(struct sk_buff *skb, int hdr_len, void *priv); | 50 | int (*encrypt_msdu)(struct sk_buff *skb, int hdr_len, void *priv); |
51 | int (*decrypt_msdu)(struct sk_buff *skb, int keyidx, int hdr_len, | 51 | int (*decrypt_msdu)(struct sk_buff *skb, int keyidx, int hdr_len, |
52 | void *priv); | 52 | void *priv, struct ieee80211_device* ieee); |
53 | 53 | ||
54 | int (*set_key)(void *key, int len, u8 *seq, void *priv); | 54 | int (*set_key)(void *key, int len, u8 *seq, void *priv); |
55 | int (*get_key)(void *key, int len, u8 *seq, void *priv); | 55 | int (*get_key)(void *key, int len, u8 *seq, void *priv); |
diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt_tkip.c b/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt_tkip.c index c8f5ecf20df..5ab94a9665e 100644 --- a/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt_tkip.c +++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt_tkip.c | |||
@@ -604,7 +604,7 @@ static void ieee80211_michael_mic_failure(struct net_device *dev, | |||
604 | } | 604 | } |
605 | 605 | ||
606 | static int ieee80211_michael_mic_verify(struct sk_buff *skb, int keyidx, | 606 | static int ieee80211_michael_mic_verify(struct sk_buff *skb, int keyidx, |
607 | int hdr_len, void *priv) | 607 | int hdr_len, void *priv, struct ieee80211_device* ieee) |
608 | { | 608 | { |
609 | struct ieee80211_tkip_data *tkey = priv; | 609 | struct ieee80211_tkip_data *tkey = priv; |
610 | u8 mic[8]; | 610 | u8 mic[8]; |
@@ -630,9 +630,14 @@ static int ieee80211_michael_mic_verify(struct sk_buff *skb, int keyidx, | |||
630 | "MSDU from %pM keyidx=%d\n", | 630 | "MSDU from %pM keyidx=%d\n", |
631 | skb->dev ? skb->dev->name : "N/A", hdr->addr2, | 631 | skb->dev ? skb->dev->name : "N/A", hdr->addr2, |
632 | keyidx); | 632 | keyidx); |
633 | if (skb->dev) | 633 | printk("%d, force_mic_error = %d\n", (memcmp(mic, skb->data + skb->len - 8, 8) != 0),\ |
634 | ieee->force_mic_error); | ||
635 | if (skb->dev) { | ||
636 | printk("skb->dev != NULL\n"); | ||
634 | ieee80211_michael_mic_failure(skb->dev, hdr, keyidx); | 637 | ieee80211_michael_mic_failure(skb->dev, hdr, keyidx); |
638 | } | ||
635 | tkey->dot11RSNAStatsTKIPLocalMICFailures++; | 639 | tkey->dot11RSNAStatsTKIPLocalMICFailures++; |
640 | ieee->force_mic_error = false; | ||
636 | return -1; | 641 | return -1; |
637 | } | 642 | } |
638 | 643 | ||
diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211_rx.c b/drivers/staging/rtl8192su/ieee80211/ieee80211_rx.c index 1f2bc7ac6f7..09a02f7e39f 100644 --- a/drivers/staging/rtl8192su/ieee80211/ieee80211_rx.c +++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_rx.c | |||
@@ -360,7 +360,7 @@ ieee80211_rx_frame_decrypt_msdu(struct ieee80211_device* ieee, struct sk_buff *s | |||
360 | hdrlen = ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl)); | 360 | hdrlen = ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl)); |
361 | 361 | ||
362 | atomic_inc(&crypt->refcnt); | 362 | atomic_inc(&crypt->refcnt); |
363 | res = crypt->ops->decrypt_msdu(skb, keyidx, hdrlen, crypt->priv); | 363 | res = crypt->ops->decrypt_msdu(skb, keyidx, hdrlen, crypt->priv,ieee); |
364 | atomic_dec(&crypt->refcnt); | 364 | atomic_dec(&crypt->refcnt); |
365 | if (res < 0) { | 365 | if (res < 0) { |
366 | printk(KERN_DEBUG "%s: MSDU decryption/MIC verification failed" | 366 | printk(KERN_DEBUG "%s: MSDU decryption/MIC verification failed" |