Commit 23edcc41 authored by David Kilroy's avatar David Kilroy Committed by John W. Linville

orinoco: Add MIC on TX and check on RX

Use the MIC algorithm from the crypto subsystem.
Signed-off-by: default avatarDavid Kilroy <kilroyd@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 31afcef3
...@@ -336,6 +336,8 @@ config HERMES ...@@ -336,6 +336,8 @@ config HERMES
depends on (PPC_PMAC || PCI || PCMCIA) && WLAN_80211 depends on (PPC_PMAC || PCI || PCMCIA) && WLAN_80211
select WIRELESS_EXT select WIRELESS_EXT
select FW_LOADER select FW_LOADER
select CRYPTO
select CRYPTO_MICHAEL_MIC
---help--- ---help---
A driver for 802.11b wireless cards based on the "Hermes" or A driver for 802.11b wireless cards based on the "Hermes" or
Intersil HFA384x (Prism 2) MAC controller. This includes the vast Intersil HFA384x (Prism 2) MAC controller. This includes the vast
......
...@@ -184,13 +184,18 @@ ...@@ -184,13 +184,18 @@
#define HERMES_RXSTAT_ERR (0x0003) #define HERMES_RXSTAT_ERR (0x0003)
#define HERMES_RXSTAT_BADCRC (0x0001) #define HERMES_RXSTAT_BADCRC (0x0001)
#define HERMES_RXSTAT_UNDECRYPTABLE (0x0002) #define HERMES_RXSTAT_UNDECRYPTABLE (0x0002)
#define HERMES_RXSTAT_MIC (0x0010) /* Frame contains MIC */
#define HERMES_RXSTAT_MACPORT (0x0700) #define HERMES_RXSTAT_MACPORT (0x0700)
#define HERMES_RXSTAT_PCF (0x1000) /* Frame was received in CF period */ #define HERMES_RXSTAT_PCF (0x1000) /* Frame was received in CF period */
#define HERMES_RXSTAT_MIC_KEY_ID (0x1800) /* MIC key used */
#define HERMES_RXSTAT_MSGTYPE (0xE000) #define HERMES_RXSTAT_MSGTYPE (0xE000)
#define HERMES_RXSTAT_1042 (0x2000) /* RFC-1042 frame */ #define HERMES_RXSTAT_1042 (0x2000) /* RFC-1042 frame */
#define HERMES_RXSTAT_TUNNEL (0x4000) /* bridge-tunnel encoded frame */ #define HERMES_RXSTAT_TUNNEL (0x4000) /* bridge-tunnel encoded frame */
#define HERMES_RXSTAT_WMP (0x6000) /* Wavelan-II Management Protocol frame */ #define HERMES_RXSTAT_WMP (0x6000) /* Wavelan-II Management Protocol frame */
/* Shift amount for key ID in RXSTAT and TXCTRL */
#define HERMES_MIC_KEY_ID_SHIFT 11
struct hermes_tx_descriptor { struct hermes_tx_descriptor {
__le16 status; __le16 status;
__le16 reserved1; __le16 reserved1;
...@@ -209,6 +214,8 @@ struct hermes_tx_descriptor { ...@@ -209,6 +214,8 @@ struct hermes_tx_descriptor {
#define HERMES_TXCTRL_TX_OK (0x0002) /* ?? interrupt on Tx complete */ #define HERMES_TXCTRL_TX_OK (0x0002) /* ?? interrupt on Tx complete */
#define HERMES_TXCTRL_TX_EX (0x0004) /* ?? interrupt on Tx exception */ #define HERMES_TXCTRL_TX_EX (0x0004) /* ?? interrupt on Tx exception */
#define HERMES_TXCTRL_802_11 (0x0008) /* We supply 802.11 header */ #define HERMES_TXCTRL_802_11 (0x0008) /* We supply 802.11 header */
#define HERMES_TXCTRL_MIC (0x0010) /* 802.3 + TKIP */
#define HERMES_TXCTRL_MIC_KEY_ID (0x1800) /* MIC Key ID mask */
#define HERMES_TXCTRL_ALT_RTRY (0x0020) #define HERMES_TXCTRL_ALT_RTRY (0x0020)
/* Inquiry constants and data types */ /* Inquiry constants and data types */
......
This diff is collapsed.
...@@ -158,6 +158,8 @@ struct orinoco_private { ...@@ -158,6 +158,8 @@ struct orinoco_private {
int wpa_ie_len; int wpa_ie_len;
struct orinoco_tkip_key tkip_key[ORINOCO_MAX_KEYS]; struct orinoco_tkip_key tkip_key[ORINOCO_MAX_KEYS];
struct crypto_hash *rx_tfm_mic;
struct crypto_hash *tx_tfm_mic;
unsigned int wpa_enabled:1; unsigned int wpa_enabled:1;
unsigned int tkip_cm_active:1; unsigned int tkip_cm_active:1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment