Skip to contentSkip to conversation

mac80211: add debug file for mic failure

PATCH Applied Saravana 2 participants 6 messages Dec 4, 2012 – Dec 5, 2012 mac80211

lore
Share & tools
lore

Saravana

author
#0 lore raw

PATCH v2 1/1 mac80211: add debug file for mic failure

The mic failure count will provide the number of mic failure that have happened without a countermeasure being started. Once the countermeasure is started, the counter will be reset to 0.
This count will be helpful when the consecutive
mic failure occur at intervals greater than 60 seconds regularly(frequently).

---
 net/mac80211/debugfs_key.c |   17 +++++++++++++++++
 net/mac80211/key.h         |    3 +++
 net/mac80211/wpa.c         |    2 ++
 3 files changed, 22 insertions(+), 0 deletions(-)
net/mac80211/debugfs_key.c +17 -0
index 2d42354..65ecfee 100644
@@ -199,6 +199,22 @@ static ssize_t key_icverrors_read(struct file *file, char __user *userbuf,
 }
 KEY_OPS(icverrors);
 
+static ssize_t key_mic_failures_read(struct file *file, char __user *userbuf,
+					size_t count, loff_t *ppos)
+{
+	struct ieee80211_key *key = file->private_data;
+	char buf[20];
+	int len;
+
+	if (key->conf.cipher != WLAN_CIPHER_SUITE_TKIP)
+		return -EINVAL;
+	len = scnprintf(buf, sizeof(buf), "%u\n",
+			key->u.tkip.mic_failures);
+
+	return simple_read_from_buffer(userbuf, count, ppos, buf, len);
+}
+KEY_OPS(mic_failures);
+
 static ssize_t key_key_read(struct file *file, char __user *userbuf,
 			    size_t count, loff_t *ppos)
 {
@@ -260,6 +276,7 @@ void ieee80211_debugfs_key_add(struct ieee80211_key *key)
 	DEBUGFS_ADD(rx_spec);
 	DEBUGFS_ADD(replays);
 	DEBUGFS_ADD(icverrors);
+	DEBUGFS_ADD(mic_failures);
 	DEBUGFS_ADD(key);
 	DEBUGFS_ADD(ifindex);
 };
net/mac80211/key.h +3 -0
index 7cff0d3..382dc44 100644
@@ -81,6 +81,9 @@ struct ieee80211_key {
 
 			/* last received RSC */
 			struct tkip_ctx rx[IEEE80211_NUM_TIDS];
+
+			/* number of mic failures */
+			u32 mic_failures;
 		} tkip;
 		struct {
 			atomic64_t tx_pn;
net/mac80211/wpa.c +2 -0
index 8bd2f5c..aad79f3 100644
@@ -161,6 +161,8 @@ update_iv:
 	return RX_CONTINUE;
 
 mic_fail:
+
+	rx->key->u.tkip.mic_failures++;
 	/*
 	 * In some cases the key can be unset - e.g. a multicast packet, in
 	 * a driver that supports HW encryption. Send up the key idx only if
maintainer Applied
#1 lore raw
Quoted 5 lines · Saravana

The mic failure count will provide the number of mic failure that have happened without a countermeasure being started. Once the countermeasure is started, the counter will be reset to 0.
This count will be helpful when the consecutive
mic failure occur at intervals greater than 60 seconds regularly(frequently).

Applied.

johannes

maintainer
#2 lore raw
Quoted 8 lines · Johannes Berg
Quoted 5 lines · Saravana

The mic failure count will provide the number of mic failure that have happened without a countermeasure being started. Once the countermeasure is started, the counter will be reset to 0.
This count will be helpful when the consecutive
mic failure occur at intervals greater than 60 seconds regularly(frequently).

Applied.

Never mind, dropped. It has a null pointer issue and still has whitespace issues. Please figure out how to actually indent parameters ...

Also, signed-off-by should be your full name, is that really just "Saravana"? Your email seems to indicate there's something else ("saravanad")

johannes

author
#3 lore raw
Quoted 11 lines · Johannes Berg
Quoted 8 lines · Johannes Berg
Quoted 5 lines · Saravana

The mic failure count will provide the number of mic failure that have happened without a countermeasure being started. Once the countermeasure is started, the counter will be reset to 0.
This count will be helpful when the consecutive
mic failure occur at intervals greater than 60 seconds regularly(frequently).

Applied.

Never mind, dropped. It has a null pointer issue and still has

could the null pointer issue be prevented by checking
the rx->key is valid before update the mic failure? Is it acceptable?

	if (rx->key)
		rx->key->u.tkip.mic_failures++
Quoted 3 lines

whitespace issues. Please figure out how to actually indent parameters ...

The patch was verified with the checkpatch script. it didn't point out whitespace error and the indentation issue.Is there any other scripts that needs to be run additionally? Please let me know how to figure out this issue ?

Quoted 4 lines

Also, signed-off-by should be your full name, is that really just "Saravana"? Your email seems to indicate there's something else ("saravanad")

My full name is Saravanakumar and my Father name is Doraiswami. Saravanad, d-indicates my starting letter of my Father name. I will probably use Saravanakumar in the future patches..

Quoted 3 lines

johannes

maintainer
#4 lore raw
Quoted 11 lines · Saravana
Quoted 10 lines · Johannes Berg
Quoted 8 lines · Johannes Berg
Quoted 5 lines · Saravana

The mic failure count will provide the number of mic failure that have happened without a countermeasure being started. Once the countermeasure is started, the counter will be reset to 0.
This count will be helpful when the consecutive
mic failure occur at intervals greater than 60 seconds regularly(frequently).

Applied.

Quoted 7 lines
Quoted 1 line

Never mind, dropped. It has a null pointer issue and still has

could the null pointer issue be prevented by checking
the rx->key is valid before update the mic failure? Is it acceptable?

	if (rx->key)
		rx->key->u.tkip.mic_failures++

Should probably use two labels instead.

Quoted 6 lines
Quoted 3 lines

whitespace issues. Please figure out how to actually indent parameters ...

The patch was verified with the checkpatch script. it didn't point out whitespace error and the indentation issue.Is there any other scripts that needs to be run additionally? Please let me know how to figure out this issue ?

*shrug*, not sure. You've indented the function arguments wrong:

static ssize_t key_mic_failures_read(struct file ...
size_t count)

you should use spaces there at the end to line up right under "struct", not only tabs that go too far (or not far enough)

Quoted 8 lines
Quoted 4 lines

Also, signed-off-by should be your full name, is that really just "Saravana"? Your email seems to indicate there's something else ("saravanad")

My full name is Saravanakumar and my Father name is Doraiswami. Saravanad, d-indicates my starting letter of my Father name. I will probably use Saravanakumar in the future patches..

Hah, sorry. I make this mistake all the time, my bad, I apologise. No need to do anything differently.

Anyway ... I've fixed it up for you now.

johannes

author
#5 lore raw
Quoted 3 lines

Anyway ... I've fixed it up for you now.

Thank you for fixing the patch..:)

Quoted 3 lines

johannes