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

orinoco: Add WE-18 ioctls for WPA

Includes basic plumbing to get the data into firmware, and retrieve it.

SIOCxIWGENIE simply record (and return) the IE, and do not act on it.

SIOCxIWENCODEEXT, SIOCxIWAUTH and SIOCSIWMLME should be as functional as
the driver will support.
Signed-off-by: default avatarDavid Kilroy <kilroyd@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 409644a9
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#define HERMES_RID_CNFWEPENABLED_AGERE 0xFC20 #define HERMES_RID_CNFWEPENABLED_AGERE 0xFC20
#define HERMES_RID_CNFAUTHENTICATION_AGERE 0xFC21 #define HERMES_RID_CNFAUTHENTICATION_AGERE 0xFC21
#define HERMES_RID_CNFMANDATORYBSSID_SYMBOL 0xFC21 #define HERMES_RID_CNFMANDATORYBSSID_SYMBOL 0xFC21
#define HERMES_RID_CNFDROPUNENCRYPTED 0xFC22
#define HERMES_RID_CNFWEPDEFAULTKEYID 0xFC23 #define HERMES_RID_CNFWEPDEFAULTKEYID 0xFC23
#define HERMES_RID_CNFDEFAULTKEY0 0xFC24 #define HERMES_RID_CNFDEFAULTKEY0 0xFC24
#define HERMES_RID_CNFDEFAULTKEY1 0xFC25 #define HERMES_RID_CNFDEFAULTKEY1 0xFC25
...@@ -85,7 +86,16 @@ ...@@ -85,7 +86,16 @@
#define HERMES_RID_CNFSCANSSID_AGERE 0xFCB2 #define HERMES_RID_CNFSCANSSID_AGERE 0xFCB2
#define HERMES_RID_CNFBASICRATES 0xFCB3 #define HERMES_RID_CNFBASICRATES 0xFCB3
#define HERMES_RID_CNFSUPPORTEDRATES 0xFCB4 #define HERMES_RID_CNFSUPPORTEDRATES 0xFCB4
#define HERMES_RID_CNFADDDEFAULTTKIPKEY_AGERE 0xFCB4
#define HERMES_RID_CNFSETWPAAUTHMGMTSUITE_AGERE 0xFCB5
#define HERMES_RID_CNFREMDEFAULTTKIPKEY_AGERE 0xFCB6
#define HERMES_RID_CNFADDMAPPEDTKIPKEY_AGERE 0xFCB7
#define HERMES_RID_CNFREMMAPPEDTKIPKEY_AGERE 0xFCB8
#define HERMES_RID_CNFSETWPACAPABILITIES_AGERE 0xFCB9
#define HERMES_RID_CNFCACHEDPMKADDRESS 0xFCBA
#define HERMES_RID_CNFREMOVEPMKADDRESS 0xFCBB
#define HERMES_RID_CNFSCANCHANNELS2GHZ 0xFCC2 #define HERMES_RID_CNFSCANCHANNELS2GHZ 0xFCC2
#define HERMES_RID_CNFDISASSOCIATE 0xFCC8
#define HERMES_RID_CNFTICKTIME 0xFCE0 #define HERMES_RID_CNFTICKTIME 0xFCE0
#define HERMES_RID_CNFSCANREQUEST 0xFCE1 #define HERMES_RID_CNFSCANREQUEST 0xFCE1
#define HERMES_RID_CNFJOINREQUEST 0xFCE2 #define HERMES_RID_CNFJOINREQUEST 0xFCE2
...@@ -138,6 +148,12 @@ ...@@ -138,6 +148,12 @@
#define HERMES_RID_CURRENTTXRATE6 0xFD85 #define HERMES_RID_CURRENTTXRATE6 0xFD85
#define HERMES_RID_OWNMACADDR 0xFD86 #define HERMES_RID_OWNMACADDR 0xFD86
#define HERMES_RID_SCANRESULTSTABLE 0xFD88 #define HERMES_RID_SCANRESULTSTABLE 0xFD88
#define HERMES_RID_CURRENT_COUNTRY_INFO 0xFD89
#define HERMES_RID_CURRENT_WPA_IE 0xFD8A
#define HERMES_RID_CURRENT_TKIP_IV 0xFD8B
#define HERMES_RID_CURRENT_ASSOC_REQ_INFO 0xFD8C
#define HERMES_RID_CURRENT_ASSOC_RESP_INFO 0xFD8D
#define HERMES_RID_TXQUEUEEMPTY 0xFD91
#define HERMES_RID_PHYTYPE 0xFDC0 #define HERMES_RID_PHYTYPE 0xFDC0
#define HERMES_RID_CURRENTCHANNEL 0xFDC1 #define HERMES_RID_CURRENTCHANNEL 0xFDC1
#define HERMES_RID_CURRENTPOWERSTATE 0xFDC2 #define HERMES_RID_CURRENTPOWERSTATE 0xFDC2
......
This diff is collapsed.
...@@ -30,6 +30,15 @@ struct orinoco_key { ...@@ -30,6 +30,15 @@ struct orinoco_key {
char data[ORINOCO_MAX_KEY_SIZE]; char data[ORINOCO_MAX_KEY_SIZE];
} __attribute__ ((packed)); } __attribute__ ((packed));
#define TKIP_KEYLEN 16
#define MIC_KEYLEN 8
struct orinoco_tkip_key {
u8 tkip[TKIP_KEYLEN];
u8 tx_mic[MIC_KEYLEN];
u8 rx_mic[MIC_KEYLEN];
};
typedef enum { typedef enum {
FIRMWARE_TYPE_AGERE, FIRMWARE_TYPE_AGERE,
FIRMWARE_TYPE_INTERSIL, FIRMWARE_TYPE_INTERSIL,
...@@ -93,6 +102,7 @@ struct orinoco_private { ...@@ -93,6 +102,7 @@ struct orinoco_private {
unsigned int has_hostscan:1; unsigned int has_hostscan:1;
unsigned int has_alt_txcntl:1; unsigned int has_alt_txcntl:1;
unsigned int has_ext_scan:1; unsigned int has_ext_scan:1;
unsigned int has_wpa:1;
unsigned int do_fw_download:1; unsigned int do_fw_download:1;
unsigned int broken_disableport:1; unsigned int broken_disableport:1;
unsigned int broken_monitor:1; unsigned int broken_monitor:1;
...@@ -128,6 +138,16 @@ struct orinoco_private { ...@@ -128,6 +138,16 @@ struct orinoco_private {
int scan_inprogress; /* Scan pending... */ int scan_inprogress; /* Scan pending... */
u32 scan_mode; /* Type of scan done */ u32 scan_mode; /* Type of scan done */
/* WPA support */
u8 *wpa_ie;
int wpa_ie_len;
struct orinoco_tkip_key tkip_key[ORINOCO_MAX_KEYS];
unsigned int wpa_enabled:1;
unsigned int tkip_cm_active:1;
unsigned int key_mgmt:3;
}; };
#ifdef ORINOCO_DEBUG #ifdef ORINOCO_DEBUG
......
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