cfg80211: send wext MLME-MICHAELMICFAILURE.indication

Instead of having mac80211 do it itself.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Johannes Berg 2009-06-19 02:45:21 +02:00 committed by John W. Linville
parent b5c4691089
commit f58d4ed98b
2 changed files with 17 additions and 17 deletions

View File

@ -7,8 +7,7 @@
* *
* mac80211 - events * mac80211 - events
*/ */
#include <net/cfg80211.h>
#include <net/iw_handler.h>
#include "ieee80211_i.h" #include "ieee80211_i.h"
/* /*
@ -19,21 +18,6 @@
void mac80211_ev_michael_mic_failure(struct ieee80211_sub_if_data *sdata, int keyidx, void mac80211_ev_michael_mic_failure(struct ieee80211_sub_if_data *sdata, int keyidx,
struct ieee80211_hdr *hdr, const u8 *tsc) struct ieee80211_hdr *hdr, const u8 *tsc)
{ {
union iwreq_data wrqu;
char *buf = kmalloc(128, GFP_ATOMIC);
if (buf) {
/* TODO: needed parameters: count, key type, TSC */
sprintf(buf, "MLME-MICHAELMICFAILURE.indication("
"keyid=%d %scast addr=%pM)",
keyidx, hdr->addr1[0] & 0x01 ? "broad" : "uni",
hdr->addr2);
memset(&wrqu, 0, sizeof(wrqu));
wrqu.data.length = strlen(buf);
wireless_send_event(sdata->dev, IWEVCUSTOM, &wrqu, buf);
kfree(buf);
}
cfg80211_michael_mic_failure(sdata->dev, hdr->addr2, cfg80211_michael_mic_failure(sdata->dev, hdr->addr2,
(hdr->addr1[0] & 0x01) ? (hdr->addr1[0] & 0x01) ?
NL80211_KEYTYPE_GROUP : NL80211_KEYTYPE_GROUP :

View File

@ -77,6 +77,22 @@ void cfg80211_michael_mic_failure(struct net_device *dev, const u8 *addr,
{ {
struct wiphy *wiphy = dev->ieee80211_ptr->wiphy; struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
#ifdef CONFIG_WIRELESS_EXT
union iwreq_data wrqu;
char *buf = kmalloc(128, GFP_ATOMIC);
if (buf) {
sprintf(buf, "MLME-MICHAELMICFAILURE.indication("
"keyid=%d %scast addr=%pM)", key_id,
key_type == NL80211_KEYTYPE_GROUP ? "broad" : "uni",
addr);
memset(&wrqu, 0, sizeof(wrqu));
wrqu.data.length = strlen(buf);
wireless_send_event(dev, IWEVCUSTOM, &wrqu, buf);
kfree(buf);
}
#endif
nl80211_michael_mic_failure(rdev, dev, addr, key_type, key_id, tsc); nl80211_michael_mic_failure(rdev, dev, addr, key_type, key_id, tsc);
} }
EXPORT_SYMBOL(cfg80211_michael_mic_failure); EXPORT_SYMBOL(cfg80211_michael_mic_failure);