aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rtl8192su
diff options
context:
space:
mode:
authorFlorian Schilhabel <florian.c.schilhabel@googlemail.com>2010-07-15 13:04:24 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2010-07-22 15:00:22 -0400
commitbb21199a013b13276336bb92012c9e68a0c179b9 (patch)
tree5020ff83daf8f47f1b2dddca1748f243bccf3279 /drivers/staging/rtl8192su
parent353db17dce3d621149aae45aa9f043876fec4dc1 (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')
-rw-r--r--drivers/staging/rtl8192su/ieee80211/ieee80211.h1
-rw-r--r--drivers/staging/rtl8192su/ieee80211/ieee80211_crypt.h2
-rw-r--r--drivers/staging/rtl8192su/ieee80211/ieee80211_crypt_tkip.c9
-rw-r--r--drivers/staging/rtl8192su/ieee80211/ieee80211_rx.c2
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
606static int ieee80211_michael_mic_verify(struct sk_buff *skb, int keyidx, 606static 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"