diff options
author | Jouni Malinen <jouni@qca.qualcomm.com> | 2015-01-24 12:52:06 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2015-01-27 05:06:09 -0500 |
commit | 00b9cfa3ff38401bd70c34b250ca13e5ea347b4a (patch) | |
tree | 1c3564bf28a6f4b49140a5e023520a1dc658d5c6 /net/mac80211/debugfs_key.c | |
parent | cfcf1682c4ca8f601a4702255958e0b1c9aa12cc (diff) |
mac80111: Add GCMP and GCMP-256 ciphers
This allows mac80211 to configure GCMP and GCMP-256 to the driver and
also use software-implementation within mac80211 when the driver does
not support this with hardware accelaration.
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
[remove a spurious newline]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/debugfs_key.c')
-rw-r--r-- | net/mac80211/debugfs_key.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/net/mac80211/debugfs_key.c b/net/mac80211/debugfs_key.c index 5523b94c7c90..0e223e602296 100644 --- a/net/mac80211/debugfs_key.c +++ b/net/mac80211/debugfs_key.c | |||
@@ -105,6 +105,13 @@ static ssize_t key_tx_spec_read(struct file *file, char __user *userbuf, | |||
105 | (u8)(pn >> 40), (u8)(pn >> 32), (u8)(pn >> 24), | 105 | (u8)(pn >> 40), (u8)(pn >> 32), (u8)(pn >> 24), |
106 | (u8)(pn >> 16), (u8)(pn >> 8), (u8)pn); | 106 | (u8)(pn >> 16), (u8)(pn >> 8), (u8)pn); |
107 | break; | 107 | break; |
108 | case WLAN_CIPHER_SUITE_GCMP: | ||
109 | case WLAN_CIPHER_SUITE_GCMP_256: | ||
110 | pn = atomic64_read(&key->u.gcmp.tx_pn); | ||
111 | len = scnprintf(buf, sizeof(buf), "%02x%02x%02x%02x%02x%02x\n", | ||
112 | (u8)(pn >> 40), (u8)(pn >> 32), (u8)(pn >> 24), | ||
113 | (u8)(pn >> 16), (u8)(pn >> 8), (u8)pn); | ||
114 | break; | ||
108 | default: | 115 | default: |
109 | return 0; | 116 | return 0; |
110 | } | 117 | } |
@@ -151,6 +158,17 @@ static ssize_t key_rx_spec_read(struct file *file, char __user *userbuf, | |||
151 | rpn[3], rpn[4], rpn[5]); | 158 | rpn[3], rpn[4], rpn[5]); |
152 | len = p - buf; | 159 | len = p - buf; |
153 | break; | 160 | break; |
161 | case WLAN_CIPHER_SUITE_GCMP: | ||
162 | case WLAN_CIPHER_SUITE_GCMP_256: | ||
163 | for (i = 0; i < IEEE80211_NUM_TIDS + 1; i++) { | ||
164 | rpn = key->u.gcmp.rx_pn[i]; | ||
165 | p += scnprintf(p, sizeof(buf)+buf-p, | ||
166 | "%02x%02x%02x%02x%02x%02x\n", | ||
167 | rpn[0], rpn[1], rpn[2], | ||
168 | rpn[3], rpn[4], rpn[5]); | ||
169 | } | ||
170 | len = p - buf; | ||
171 | break; | ||
154 | default: | 172 | default: |
155 | return 0; | 173 | return 0; |
156 | } | 174 | } |
@@ -173,6 +191,10 @@ static ssize_t key_replays_read(struct file *file, char __user *userbuf, | |||
173 | len = scnprintf(buf, sizeof(buf), "%u\n", | 191 | len = scnprintf(buf, sizeof(buf), "%u\n", |
174 | key->u.aes_cmac.replays); | 192 | key->u.aes_cmac.replays); |
175 | break; | 193 | break; |
194 | case WLAN_CIPHER_SUITE_GCMP: | ||
195 | case WLAN_CIPHER_SUITE_GCMP_256: | ||
196 | len = scnprintf(buf, sizeof(buf), "%u\n", key->u.gcmp.replays); | ||
197 | break; | ||
176 | default: | 198 | default: |
177 | return 0; | 199 | return 0; |
178 | } | 200 | } |