aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/drivers/driver_atmel.c500
-rw-r--r--src/drivers/driver_ipw.c473
-rw-r--r--src/drivers/driver_ndiswrapper.c378
-rw-r--r--src/drivers/drivers.c25
-rw-r--r--src/drivers/drivers.mak24
-rw-r--r--wpa_supplicant/README31
-rw-r--r--wpa_supplicant/doc/docbook/wpa_supplicant.sgml28
7 files changed, 1 insertions, 1458 deletions
diff --git a/src/drivers/driver_atmel.c b/src/drivers/driver_atmel.c
deleted file mode 100644
index 8d748d3..0000000
--- a/src/drivers/driver_atmel.c
+++ /dev/null
@@ -1,500 +0,0 @@
-/*
- * WPA Supplicant - Driver interaction with Atmel Wireless LAN drivers
- * Copyright (c) 2000-2005, ATMEL Corporation
- * Copyright (c) 2004-2007, Jouni Malinen <j@w1.fi>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * Alternatively, this software may be distributed under the terms of BSD
- * license.
- *
- * See README and COPYING for more details.
- */
-
-/******************************************************************************
- Copyright 2000-2001 ATMEL Corporation.
-
- WPA Supplicant - driver interaction with Atmel Wireless lan drivers.
-
- This is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Atmel wireless lan drivers; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-******************************************************************************/
-
-/*
- * Alternatively, this software may be distributed under the terms of BSD
- * license.
- */
-
-#include "includes.h"
-#include <sys/ioctl.h>
-
-#include "wireless_copy.h"
-#include "common.h"
-#include "driver.h"
-#include "driver_wext.h"
-
-struct wpa_driver_atmel_data {
- void *wext; /* private data for driver_wext */
- void *ctx;
- char ifname[IFNAMSIZ + 1];
- int sock;
-};
-
-
-#define ATMEL_WPA_IOCTL (SIOCIWFIRSTPRIV + 2)
-#define ATMEL_WPA_IOCTL_PARAM (SIOCIWFIRSTPRIV + 3)
-#define ATMEL_WPA_IOCTL_GET_PARAM (SIOCIWFIRSTPRIV + 4)
-
-
-/* ATMEL_WPA_IOCTL ioctl() cmd: */
-enum {
- SET_WPA_ENCRYPTION = 1,
- SET_CIPHER_SUITES = 2,
- MLME_STA_DEAUTH = 3,
- MLME_STA_DISASSOC = 4
-};
-
-/* ATMEL_WPA_IOCTL_PARAM ioctl() cmd: */
-enum {
- ATMEL_PARAM_WPA = 1,
- ATMEL_PARAM_PRIVACY_INVOKED = 2,
- ATMEL_PARAM_WPA_TYPE = 3
-};
-
-#define MAX_KEY_LENGTH 40
-
-struct atmel_param{
- unsigned char sta_addr[6];
- int cmd;
- u8 alg;
- u8 key_idx;
- u8 set_tx;
- u8 seq[8];
- u8 seq_len;
- u16 key_len;
- u8 key[MAX_KEY_LENGTH];
- struct{
- int reason_code;
- u8 state;
- }mlme;
- u8 pairwise_suite;
- u8 group_suite;
- u8 key_mgmt_suite;
-};
-
-
-
-static int atmel_ioctl(struct wpa_driver_atmel_data *drv,
- struct atmel_param *param,
- int len, int show_err)
-{
- struct iwreq iwr;
-
- os_memset(&iwr, 0, sizeof(iwr));
- os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
- iwr.u.data.pointer = (caddr_t) param;
- iwr.u.data.length = len;
-
- if (ioctl(drv->sock, ATMEL_WPA_IOCTL, &iwr) < 0) {
- int ret;
- ret = errno;
- if (show_err)
- perror("ioctl[ATMEL_WPA_IOCTL]");
- return ret;
- }
-
- return 0;
-}
-
-
-static int atmel2param(struct wpa_driver_atmel_data *drv, int param, int value)
-{
- struct iwreq iwr;
- int *i, ret = 0;
-
- os_memset(&iwr, 0, sizeof(iwr));
- os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
- i = (int *) iwr.u.name;
- *i++ = param;
- *i++ = value;
-
- if (ioctl(drv->sock, ATMEL_WPA_IOCTL_PARAM, &iwr) < 0) {
- perror("ioctl[ATMEL_WPA_IOCTL_PARAM]");
- ret = -1;
- }
- return ret;
-}
-
-
-#if 0
-static int wpa_driver_atmel_set_wpa_ie(struct wpa_driver_atmel_data *drv,
- const char *wpa_ie, size_t wpa_ie_len)
-{
- struct atmel_param *param;
- int res;
- size_t blen = ATMEL_GENERIC_ELEMENT_HDR_LEN + wpa_ie_len;
- if (blen < sizeof(*param))
- blen = sizeof(*param);
-
- param = os_zalloc(blen);
- if (param == NULL)
- return -1;
-
- param->cmd = ATMEL_SET_GENERIC_ELEMENT;
- param->u.generic_elem.len = wpa_ie_len;
- os_memcpy(param->u.generic_elem.data, wpa_ie, wpa_ie_len);
- res = atmel_ioctl(drv, param, blen, 1);
-
- os_free(param);
-
- return res;
-}
-#endif
-
-
-static int wpa_driver_atmel_set_wpa(void *priv, int enabled)
-{
- struct wpa_driver_atmel_data *drv = priv;
- int ret = 0;
-
- printf("wpa_driver_atmel_set_wpa %s\n", drv->ifname);
-
- wpa_printf(MSG_DEBUG, "%s: enabled=%d", __FUNCTION__, enabled);
-
-#if 0
- if (!enabled && wpa_driver_atmel_set_wpa_ie(drv, NULL, 0) < 0)
- ret = -1;
-#endif
- if (atmel2param(drv, ATMEL_PARAM_PRIVACY_INVOKED, enabled) < 0)
- ret = -1;
- if (atmel2param(drv, ATMEL_PARAM_WPA, enabled) < 0)
- ret = -1;
-
- return ret;
-}
-
-
-static int wpa_driver_atmel_set_key(const char *ifname, void *priv,
- enum wpa_alg alg, const u8 *addr,
- int key_idx, int set_tx,
- const u8 *seq, size_t seq_len,
- const u8 *key, size_t key_len)
-{
- struct wpa_driver_atmel_data *drv = priv;
- int ret = 0;
- struct atmel_param *param;
- u8 *buf;
- u8 alg_type;
-
- size_t blen;
- char *alg_name;
-
- switch (alg) {
- case WPA_ALG_NONE:
- alg_name = "none";
- alg_type = 0;
- break;
- case WPA_ALG_WEP:
- alg_name = "WEP";
- alg_type = 1;
- break;
- case WPA_ALG_TKIP:
- alg_name = "TKIP";
- alg_type = 2;
- break;
- case WPA_ALG_CCMP:
- alg_name = "CCMP";
- alg_type = 3;
- break;
- default:
- return -1;
- }
-
- wpa_printf(MSG_DEBUG, "%s: alg=%s key_idx=%d set_tx=%d seq_len=%lu "
- "key_len=%lu", __FUNCTION__, alg_name, key_idx, set_tx,
- (unsigned long) seq_len, (unsigned long) key_len);
-
- if (seq_len > 8)
- return -2;
-
- blen = sizeof(*param) + key_len;
- buf = os_zalloc(blen);
- if (buf == NULL)
- return -1;
-
- param = (struct atmel_param *) buf;
-
- param->cmd = SET_WPA_ENCRYPTION;
-
- if (addr == NULL)
- os_memset(param->sta_addr, 0xff, ETH_ALEN);
- else
- os_memcpy(param->sta_addr, addr, ETH_ALEN);
-
- param->alg = alg_type;
- param->key_idx = key_idx;
- param->set_tx = set_tx;
- if (seq)
- os_memcpy(param->seq, seq, seq_len);
- param->seq_len = seq_len;
- param->key_len = key_len;
- os_memcpy((u8 *)param->key, key, key_len);
-
- if (atmel_ioctl(drv, param, blen, 1)) {
- wpa_printf(MSG_WARNING, "Failed to set encryption.");
- /* TODO: show key error*/
- ret = -1;
- }
- os_free(buf);
-
- return ret;
-}
-
-
-static int wpa_driver_atmel_set_countermeasures(void *priv,
- int enabled)
-{
- /* FIX */
- printf("wpa_driver_atmel_set_countermeasures - not yet "
- "implemented\n");
- return 0;
-}
-
-
-static int wpa_driver_atmel_mlme(void *priv, const u8 *addr, int cmd,
- int reason_code)
-{
- struct wpa_driver_atmel_data *drv = priv;
- struct atmel_param param;
- int ret;
- int mgmt_error = 0xaa;
-
- os_memset(&param, 0, sizeof(param));
- os_memcpy(param.sta_addr, addr, ETH_ALEN);
- param.cmd = cmd;
- param.mlme.reason_code = reason_code;
- param.mlme.state = mgmt_error;
- ret = atmel_ioctl(drv, &param, sizeof(param), 1);
- return ret;
-}
-
-
-#if 0
-static int wpa_driver_atmel_set_suites(struct wpa_driver_atmel_data *drv,
- u8 pairwise_suite, u8 group_suite,
- u8 key_mgmt_suite)
-{
- struct atmel_param param;
- int ret;
-
- os_memset(&param, 0, sizeof(param));
- param.cmd = SET_CIPHER_SUITES;
- param.pairwise_suite = pairwise_suite;
- param.group_suite = group_suite;
- param.key_mgmt_suite = key_mgmt_suite;
-
- ret = atmel_ioctl(drv, &param, sizeof(param), 1);
- return ret;
-}
-#endif
-
-
-static int wpa_driver_atmel_deauthenticate(void *priv, const u8 *addr,
- int reason_code)
-{
- struct wpa_driver_atmel_data *drv = priv;
- printf("wpa_driver_atmel_deauthenticate\n");
- wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);
- return wpa_driver_atmel_mlme(drv, addr, MLME_STA_DEAUTH,
- reason_code);
-
-}
-
-
-static int wpa_driver_atmel_disassociate(void *priv, const u8 *addr,
- int reason_code)
-{
- struct wpa_driver_atmel_data *drv = priv;
- printf("wpa_driver_atmel_disassociate\n");
- wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);
- return wpa_driver_atmel_mlme(drv, addr, MLME_STA_DISASSOC,
- reason_code);
-
-}
-
-
-#if 0
-/* Atmel driver uses specific values for each cipher suite */
-static int convertSuiteToDriver(enum wpa_cipher suite)
-{
- u8 suite_type;
-
- switch(suite) {
- case CIPHER_NONE:
- suite_type = 0;
- break;
- case CIPHER_WEP40:
- suite_type = 1;
- break;
- case CIPHER_TKIP:
- suite_type = 2;
- break;
- case CIPHER_WEP104:
- suite_type = 5;
- break;
- case CIPHER_CCMP:
- suite_type = 3;
- break;
- default:
- suite_type = 2;
- }
-
- return suite_type;
-
-}
-#endif
-
-static int
-wpa_driver_atmel_associate(void *priv,
- struct wpa_driver_associate_params *params)
-{
- struct wpa_driver_atmel_data *drv = priv;
- int ret = 0;
-#if 0
- u8 pairwise_suite_driver;
- u8 group_suite_driver;
- u8 key_mgmt_suite_driver;
-
- pairwise_suite_driver = convertSuiteToDriver(params->pairwise_suite);
- group_suite_driver = convertSuiteToDriver(params->group_suite);
- key_mgmt_suite_driver = convertSuiteToDriver(params->key_mgmt_suite);
-
- if (wpa_driver_atmel_set_suites(drv, pairwise_suite_driver,
- group_suite_driver,
- key_mgmt_suite_driver) < 0){
- printf("wpa_driver_atmel_set_suites.\n");
- ret = -1;
- }
- if (wpa_driver_wext_set_freq(drv->wext, params->freq) < 0) {
- printf("wpa_driver_atmel_set_freq.\n");
- ret = -1;
- }
-#endif
- if (wpa_driver_wext_set_ssid(drv->wext, params->ssid, params->ssid_len)
- < 0) {
- printf("FAILED : wpa_driver_atmel_set_ssid.\n");
- ret = -1;
- }
- if (wpa_driver_wext_set_bssid(drv->wext, params->bssid) < 0) {
- printf("FAILED : wpa_driver_atmel_set_bssid.\n");
- ret = -1;
- }
-
- return ret;
-}
-
-
-static int wpa_driver_atmel_get_bssid(void *priv, u8 *bssid)
-{
- struct wpa_driver_atmel_data *drv = priv;
- return wpa_driver_wext_get_bssid(drv->wext, bssid);
-}
-
-
-static int wpa_driver_atmel_get_ssid(void *priv, u8 *ssid)
-{
- struct wpa_driver_atmel_data *drv = priv;
- return wpa_driver_wext_get_ssid(drv->wext, ssid);
-}
-
-
-static int wpa_driver_atmel_scan(void *priv,
- struct wpa_driver_scan_params *params)
-{
- struct wpa_driver_atmel_data *drv = priv;
- return wpa_driver_wext_scan(drv->wext, params);
-}
-
-
-static struct wpa_scan_results * wpa_driver_atmel_get_scan_results(void *priv)
-{
- struct wpa_driver_atmel_data *drv = priv;
- return wpa_driver_wext_get_scan_results(drv->wext);
-}
-
-
-static int wpa_driver_atmel_set_operstate(void *priv, int state)
-{
- struct wpa_driver_atmel_data *drv = priv;
- return wpa_driver_wext_set_operstate(drv->wext, state);
-}
-
-
-static void * wpa_driver_atmel_init(void *ctx, const char *ifname)
-{
- struct wpa_driver_atmel_data *drv;
-
- drv = os_zalloc(sizeof(*drv));
- if (drv == NULL)
- return NULL;
- drv->wext = wpa_driver_wext_init(ctx, ifname);
- if (drv->wext == NULL) {
- os_free(drv);
- return NULL;
- }
-
- drv->ctx = ctx;
- os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname));
- drv->sock = socket(PF_INET, SOCK_DGRAM, 0);
- if (drv->sock < 0) {
- wpa_driver_wext_deinit(drv->wext);
- os_free(drv);
- return NULL;
- }
-
- wpa_driver_atmel_set_wpa(drv, 1);
-
- return drv;
-}
-
-
-static void wpa_driver_atmel_deinit(void *priv)
-{
- struct wpa_driver_atmel_data *drv = priv;
- wpa_driver_atmel_set_wpa(drv, 0);
- wpa_driver_wext_deinit(drv->wext);
- close(drv->sock);
- os_free(drv);
-}
-
-
-const struct wpa_driver_ops wpa_driver_atmel_ops = {
- .name = "atmel",
- .desc = "ATMEL AT76C5XXx (USB, PCMCIA)",
- .get_bssid = wpa_driver_atmel_get_bssid,
- .get_ssid = wpa_driver_atmel_get_ssid,
- .set_key = wpa_driver_atmel_set_key,
- .init = wpa_driver_atmel_init,
- .deinit = wpa_driver_atmel_deinit,
- .set_countermeasures = wpa_driver_atmel_set_countermeasures,
- .scan2 = wpa_driver_atmel_scan,
- .get_scan_results2 = wpa_driver_atmel_get_scan_results,
- .deauthenticate = wpa_driver_atmel_deauthenticate,
- .disassociate = wpa_driver_atmel_disassociate,
- .associate = wpa_driver_atmel_associate,
- .set_operstate = wpa_driver_atmel_set_operstate,
-};
diff --git a/src/drivers/driver_ipw.c b/src/drivers/driver_ipw.c
deleted file mode 100644
index d6c8f29..0000000
--- a/src/drivers/driver_ipw.c
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * WPA Supplicant - driver interaction with Linux ipw2100/2200 drivers
- * Copyright (c) 2005 Zhu Yi <yi.zhu@intel.com>
- * Copyright (c) 2004 Lubomir Gelo <lgelo@cnc.sk>
- * Copyright (c) 2003-2004, Jouni Malinen <j@w1.fi>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * Alternatively, this software may be distributed under the terms of BSD
- * license.
- *
- * See README and COPYING for more details.
- *
- * Please note that ipw2100/2200 drivers change to use generic Linux wireless
- * extensions if the kernel includes support for WE-18 or newer (Linux 2.6.13
- * or newer). driver_wext.c should be used in those cases.
- */
-
-#include "includes.h"
-#include <sys/ioctl.h>
-
-#include "wireless_copy.h"
-#include "common.h"
-#include "driver.h"
-#include "driver_wext.h"
-
-struct wpa_driver_ipw_data {
- void *wext; /* private data for driver_wext */
- void *ctx;
- char ifname[IFNAMSIZ + 1];
- int sock;
-};
-
-/* following definitions must be kept in sync with ipw2100.c and ipw2200.c */
-
-#define IPW_IOCTL_WPA_SUPPLICANT SIOCIWFIRSTPRIV+30
-
-#define IPW_CMD_SET_WPA_PARAM 1
-#define IPW_CMD_SET_WPA_IE 2
-#define IPW_CMD_SET_ENCRYPTION 3
-#define IPW_CMD_MLME 4
-
-#define IPW_PARAM_WPA_ENABLED 1
-#define IPW_PARAM_TKIP_COUNTERMEASURES 2
-#define IPW_PARAM_DROP_UNENCRYPTED 3
-#define IPW_PARAM_PRIVACY_INVOKED 4
-#define IPW_PARAM_AUTH_ALGS 5
-#define IPW_PARAM_IEEE_802_1X 6
-
-#define IPW_MLME_STA_DEAUTH 1
-#define IPW_MLME_STA_DISASSOC 2
-
-#define IPW_CRYPT_ERR_UNKNOWN_ALG 2
-#define IPW_CRYPT_ERR_UNKNOWN_ADDR 3
-#define IPW_CRYPT_ERR_CRYPT_INIT_FAILED 4
-#define IPW_CRYPT_ERR_KEY_SET_FAILED 5
-#define IPW_CRYPT_ERR_TX_KEY_SET_FAILED 6
-#define IPW_CRYPT_ERR_CARD_CONF_FAILED 7
-
-#define IPW_CRYPT_ALG_NAME_LEN 16
-
-struct ipw_param {
- u32 cmd;
- u8 sta_addr[ETH_ALEN];
- union {
- struct {
- u8 name;
- u32 value;
- } wpa_param;
- struct {
- u32 len;
- u8 reserved[32];
- u8 data[0];
- } wpa_ie;
- struct{
- u32 command;
- u32 reason_code;
- } mlme;
- struct {
- u8 alg[IPW_CRYPT_ALG_NAME_LEN];
- u8 set_tx;
- u32 err;
- u8 idx;
- u8 seq[8];
- u16 key_len;
- u8 key[0];
- } crypt;
-
- } u;
-};
-
-/* end of ipw2100.c and ipw2200.c code */
-
-static int wpa_driver_ipw_set_auth_alg(void *priv, int auth_alg);
-
-static int ipw_ioctl(struct wpa_driver_ipw_data *drv,
- struct ipw_param *param, int len, int show_err)
-{
- struct iwreq iwr;
-
- os_memset(&iwr, 0, sizeof(iwr));
- os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
- iwr.u.data.pointer = (caddr_t) param;
- iwr.u.data.length = len;
-
- if (ioctl(drv->sock, IPW_IOCTL_WPA_SUPPLICANT, &iwr) < 0) {
- int ret = errno;
- if (show_err)
- perror("ioctl[IPW_IOCTL_WPA_SUPPLICANT]");
- return ret;
- }
-
- return 0;
-}
-
-
-static void ipw_show_set_key_error(struct ipw_param *param)
-{
- switch (param->u.crypt.err) {
- case IPW_CRYPT_ERR_UNKNOWN_ALG:
- wpa_printf(MSG_INFO, "Unknown algorithm '%s'.",
- param->u.crypt.alg);
- wpa_printf(MSG_INFO, "You may need to load kernel module to "
- "register that algorithm.");
- wpa_printf(MSG_INFO, "E.g., 'modprobe ieee80211_crypt_wep' for"
- " WEP.");
- break;
- case IPW_CRYPT_ERR_UNKNOWN_ADDR:
- wpa_printf(MSG_INFO, "Unknown address " MACSTR ".",
- MAC2STR(param->sta_addr));
- break;
- case IPW_CRYPT_ERR_CRYPT_INIT_FAILED:
- wpa_printf(MSG_INFO, "Crypt algorithm initialization failed.");
- break;
- case IPW_CRYPT_ERR_KEY_SET_FAILED:
- wpa_printf(MSG_INFO, "Key setting failed.");
- break;
- case IPW_CRYPT_ERR_TX_KEY_SET_FAILED:
- wpa_printf(MSG_INFO, "TX key index setting failed.");
- break;
- case IPW_CRYPT_ERR_CARD_CONF_FAILED:
- wpa_printf(MSG_INFO, "Card configuration failed.");
- break;
- }
-}
-
-
-static int ipw_set_wpa_ie(struct wpa_driver_ipw_data *drv,
- const u8 *wpa_ie, size_t wpa_ie_len)
-{
- struct ipw_param *param;
- int ret;
- size_t blen = sizeof(*param) + wpa_ie_len;
-
- param = os_zalloc(blen);
- if (param == NULL)
- return -1;
-
- param->cmd = IPW_CMD_SET_WPA_IE;
- param->u.wpa_ie.len = wpa_ie_len;
- os_memcpy(param->u.wpa_ie.data, wpa_ie, wpa_ie_len);
-
- ret = ipw_ioctl(drv, param, blen, 1);
-
- os_free(param);
- return ret;
-}
-
-
-static int ipw_set_wpa_param(struct wpa_driver_ipw_data *drv, u8 name,
- u32 value)
-{
- struct ipw_param param;
-
- os_memset(&param, 0, sizeof(param));
- param.cmd = IPW_CMD_SET_WPA_PARAM;
- param.u.wpa_param.name = name;
- param.u.wpa_param.value = value;
-
- return ipw_ioctl(drv, &param, sizeof(param), 1);
-}
-
-
-static int ipw_mlme(struct wpa_driver_ipw_data *drv, const u8 *addr,
- int cmd, int reason)
-{
- struct ipw_param param;
-
- os_memset(&param, 0, sizeof(param));
- os_memcpy(param.sta_addr, addr, ETH_ALEN);
- param.cmd = IPW_CMD_MLME;
- param.u.mlme.command = cmd;
- param.u.mlme.reason_code = reason;
-
- return ipw_ioctl(drv, &param, sizeof(param), 1);
-}
-
-
-static int wpa_driver_ipw_set_wpa(void *priv, int enabled)
-{
- struct wpa_driver_ipw_data *drv = priv;
- int ret = 0;
-
- wpa_printf(MSG_DEBUG, "%s: enabled=%d", __FUNCTION__, enabled);
-
- if (!enabled && ipw_set_wpa_ie(drv, NULL, 0) < 0)
- ret = -1;
-
- if (ipw_set_wpa_param(drv, IPW_PARAM_WPA_ENABLED, enabled) < 0)
- ret = -1;
-
- return ret;
-}
-
-
-static int wpa_driver_ipw_set_key(const char *ifname, void *priv,
- enum wpa_alg alg, const u8 *addr,
- int key_idx, int set_tx,
- const u8 *seq, size_t seq_len,
- const u8 *key, size_t key_len)
-{
- struct wpa_driver_ipw_data *drv = priv;
- struct ipw_param *param;
- u8 *buf;
- size_t blen;
- int ret = 0;
- char *alg_name;
-
- switch (alg) {
- case WPA_ALG_NONE:
- alg_name = "none";
- break;
- case WPA_ALG_WEP:
- alg_name = "WEP";
- break;
- case WPA_ALG_TKIP:
- alg_name = "TKIP";
- break;
- case WPA_ALG_CCMP:
- alg_name = "CCMP";
- break;
- default:
- return -1;
- }
-
- wpa_printf(MSG_DEBUG, "%s: alg=%s key_idx=%d set_tx=%d seq_len=%lu "
- "key_len=%lu", __FUNCTION__, alg_name, key_idx, set_tx,
- (unsigned long) seq_len, (unsigned long) key_len);
-
- if (seq_len > 8)
- return -2;
-
- blen = sizeof(*param) + key_len;
- buf = os_zalloc(blen);
- if (buf == NULL)
- return -1;
-
- param = (struct ipw_param *) buf;
- param->cmd = IPW_CMD_SET_ENCRYPTION;
- os_memset(param->sta_addr, 0xff, ETH_ALEN);
- os_strlcpy((char *) param->u.crypt.alg, alg_name,
- IPW_CRYPT_ALG_NAME_LEN);
- param->u.crypt.set_tx = set_tx ? 1 : 0;
- param->u.crypt.idx = key_idx;
- if (seq)
- os_memcpy(param->u.crypt.seq, seq, seq_len);
- param->u.crypt.key_len = key_len;
- os_memcpy((u8 *) (param + 1), key, key_len);
-
- if (ipw_ioctl(drv, param, blen, 1)) {
- wpa_printf(MSG_WARNING, "Failed to set encryption.");
- ipw_show_set_key_error(param);
- ret = -1;
- }
- os_free(buf);
-
- return ret;
-}
-
-
-static int wpa_driver_ipw_set_countermeasures(void *priv, int enabled)
-{
- struct wpa_driver_ipw_data *drv = priv;
- wpa_printf(MSG_DEBUG, "%s: enabled=%d", __FUNCTION__, enabled);
- return ipw_set_wpa_param(drv, IPW_PARAM_TKIP_COUNTERMEASURES,
- enabled);
-
-}
-
-
-static int wpa_driver_ipw_set_drop_unencrypted(void *priv, int enabled)
-{
- struct wpa_driver_ipw_data *drv = priv;
- wpa_printf(MSG_DEBUG, "%s: enabled=%d", __FUNCTION__, enabled);
- return ipw_set_wpa_param(drv, IPW_PARAM_DROP_UNENCRYPTED,
- enabled);
-}
-
-
-static int wpa_driver_ipw_deauthenticate(void *priv, const u8 *addr,
- int reason_code)
-{
- struct wpa_driver_ipw_data *drv = priv;
- return ipw_mlme(drv, addr, IPW_MLME_STA_DEAUTH, reason_code);
-}
-
-
-static int wpa_driver_ipw_disassociate(void *priv, const u8 *addr,
- int reason_code)
-{
- struct wpa_driver_ipw_data *drv = priv;
- return ipw_mlme(drv, addr, IPW_MLME_STA_DISASSOC, reason_code);
-}
-
-
-static int
-wpa_driver_ipw_associate(void *priv, struct wpa_driver_associate_params *params)
-{
- struct wpa_driver_ipw_data *drv = priv;
- int ret = 0;
- int unencrypted_eapol;
-
- if (wpa_driver_ipw_set_auth_alg(drv, params->auth_alg) < 0)
- ret = -1;
- if (wpa_driver_ipw_set_drop_unencrypted(drv, params->drop_unencrypted)
- < 0)
- ret = -1;
- if (ipw_set_wpa_ie(drv, params->wpa_ie, params->wpa_ie_len) < 0)
- ret = -1;
- if (wpa_driver_wext_set_ssid(drv->wext, params->ssid,
- params->ssid_len) < 0)
- ret = -1;
- if (wpa_driver_wext_set_bssid(drv->wext, params->bssid) < 0)
- ret = -1;
-
- if (params->key_mgmt_suite == KEY_MGMT_802_1X ||
- params->key_mgmt_suite == KEY_MGMT_PSK)
- unencrypted_eapol = 0;
- else
- unencrypted_eapol = 1;
-
- if (ipw_set_wpa_param(drv, IPW_PARAM_IEEE_802_1X,
- unencrypted_eapol) < 0) {
- wpa_printf(MSG_DEBUG, "ipw: Failed to configure "
- "ieee_802_1x param");
- }
-
- return ret;
-}
-
-
-static int wpa_driver_ipw_set_auth_alg(void *priv, int auth_alg)
-{
- struct wpa_driver_ipw_data *drv = priv;
- int algs = 0;
-
- if (auth_alg & WPA_AUTH_ALG_OPEN)
- algs |= 1;
- if (auth_alg & WPA_AUTH_ALG_SHARED)
- algs |= 2;
- if (auth_alg & WPA_AUTH_ALG_LEAP)
- algs |= 4;
- if (algs == 0)
- algs = 1; /* at least one algorithm should be set */
-
- wpa_printf(MSG_DEBUG, "%s: auth_alg=0x%x", __FUNCTION__, algs);
- return ipw_set_wpa_param(drv, IPW_PARAM_AUTH_ALGS, algs);
-}
-
-
-static int wpa_driver_ipw_get_bssid(void *priv, u8 *bssid)
-{
- struct wpa_driver_ipw_data *drv = priv;
- return wpa_driver_wext_get_bssid(drv->wext, bssid);
-}
-
-
-static int wpa_driver_ipw_get_ssid(void *priv, u8 *ssid)
-{
- struct wpa_driver_ipw_data *drv = priv;
- return wpa_driver_wext_get_ssid(drv->wext, ssid);
-}
-
-
-static int wpa_driver_ipw_scan(void *priv,
- struct wpa_driver_scan_params *params)
-{
- struct wpa_driver_ipw_data *drv = priv;
- return wpa_driver_wext_scan(drv->wext, params);
-}
-
-
-static struct wpa_scan_results * wpa_driver_ipw_get_scan_results(void *priv)
-{
- struct wpa_driver_ipw_data *drv = priv;
- return wpa_driver_wext_get_scan_results(drv->wext);
-}
-
-
-static int wpa_driver_ipw_set_operstate(void *priv, int state)
-{
- struct wpa_driver_ipw_data *drv = priv;
- return wpa_driver_wext_set_operstate(drv->wext, state);
-}
-
-
-static void * wpa_driver_ipw_init(void *ctx, const char *ifname)
-{
- struct wpa_driver_ipw_data *drv;
- int ver;
-
- wpa_printf(MSG_DEBUG, "%s is called", __FUNCTION__);
- drv = os_zalloc(sizeof(*drv));
- if (drv == NULL)
- return NULL;
- drv->wext = wpa_driver_wext_init(ctx, ifname);
- if (drv->wext == NULL) {
- os_free(drv);
- return NULL;
- }
-
- ver = wpa_driver_wext_get_version(drv->wext);
- if (ver >= 18) {
- wpa_printf(MSG_WARNING, "Linux wireless extensions version %d "
- "detected.", ver);
- wpa_printf(MSG_WARNING, "ipw2x00 driver uses driver_wext "
- "(-Dwext) instead of driver_ipw.");
- }
-
- drv->ctx = ctx;
- os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname));
- drv->sock = socket(PF_INET, SOCK_DGRAM, 0);
- if (drv->sock < 0) {
- wpa_driver_wext_deinit(drv->wext);
- os_free(drv);
- return NULL;
- }
-
- wpa_driver_ipw_set_wpa(drv, 1);
-
- return drv;
-}
-
-
-static void wpa_driver_ipw_deinit(void *priv)
-{
- struct wpa_driver_ipw_data *drv = priv;
- wpa_driver_ipw_set_wpa(drv, 0);
- wpa_driver_wext_deinit(drv->wext);
- close(drv->sock);
- os_free(drv);
-}
-
-
-const struct wpa_driver_ops wpa_driver_ipw_ops = {
- .name = "ipw",
- .desc = "Intel ipw2100/2200 driver (old; use wext with Linux 2.6.13 "
- "or newer)",
- .get_bssid = wpa_driver_ipw_get_bssid,
- .get_ssid = wpa_driver_ipw_get_ssid,
- .set_key = wpa_driver_ipw_set_key,
- .set_countermeasures = wpa_driver_ipw_set_countermeasures,
- .scan2 = wpa_driver_ipw_scan,
- .get_scan_results2 = wpa_driver_ipw_get_scan_results,
- .deauthenticate = wpa_driver_ipw_deauthenticate,
- .disassociate = wpa_driver_ipw_disassociate,
- .associate = wpa_driver_ipw_associate,
- .init = wpa_driver_ipw_init,
- .deinit = wpa_driver_ipw_deinit,
- .set_operstate = wpa_driver_ipw_set_operstate,
-};
diff --git a/src/drivers/driver_ndiswrapper.c b/src/drivers/driver_ndiswrapper.c
deleted file mode 100644
index 3abdb64..0000000
--- a/src/drivers/driver_ndiswrapper.c
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * WPA Supplicant - driver interaction with Linux ndiswrapper
- * Copyright (c) 2004-2006, Giridhar Pemmasani <giri@lmc.cs.sunysb.edu>
- * Copyright (c) 2004-2006, Jouni Malinen <j@w1.fi>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * Alternatively, this software may be distributed under the terms of BSD
- * license.
- *
- * See README and COPYING for more details.
- *
- * Please note that ndiswrapper supports WPA configuration via Linux wireless
- * extensions and if the kernel includes support for this, driver_wext.c should
- * be used instead of this driver wrapper.
- */
-
-#include "includes.h"
-#include <sys/ioctl.h>
-
-#include "wireless_copy.h"
-#include "common.h"
-#include "driver.h"
-#include "driver_wext.h"
-
-struct wpa_driver_ndiswrapper_data {
- void *wext; /* private data for driver_wext */
- void *ctx;
- char ifname[IFNAMSIZ + 1];
- int sock;
-};
-
-
-struct wpa_key {
- enum wpa_alg alg;
- const u8 *addr;
- int key_index;
- int set_tx;
- const u8 *seq;
- size_t seq_len;
- const u8 *key;
- size_t key_len;
-};
-
-struct wpa_assoc_info {
- const u8 *bssid;
- const u8 *ssid;
- size_t ssid_len;
- int freq;
- const u8 *wpa_ie;
- size_t wpa_ie_len;
- enum wpa_cipher pairwise_suite;
- enum wpa_cipher group_suite;
- enum wpa_key_mgmt key_mgmt_suite;
- int auth_alg;
- int mode;
-};
-
-#define PRIV_RESET SIOCIWFIRSTPRIV+0
-#define WPA_SET_WPA SIOCIWFIRSTPRIV+1
-#define WPA_SET_KEY SIOCIWFIRSTPRIV+2
-#define WPA_ASSOCIATE SIOCIWFIRSTPRIV+3
-#define WPA_DISASSOCIATE SIOCIWFIRSTPRIV+4
-#define WPA_DROP_UNENCRYPTED SIOCIWFIRSTPRIV+5
-#define WPA_SET_COUNTERMEASURES SIOCIWFIRSTPRIV+6
-#define WPA_DEAUTHENTICATE SIOCIWFIRSTPRIV+7
-#define WPA_SET_AUTH_ALG SIOCIWFIRSTPRIV+8
-#define WPA_INIT SIOCIWFIRSTPRIV+9
-#define WPA_DEINIT SIOCIWFIRSTPRIV+10
-#define WPA_GET_CAPA SIOCIWFIRSTPRIV+11
-
-static int wpa_ndiswrapper_set_auth_alg(void *priv, int auth_alg);
-
-static int get_socket(void)
-{
- static const int families[] = {
- AF_INET, AF_IPX, AF_AX25, AF_APPLETALK
- };
- unsigned int i;
- int sock;
-
- for (i = 0; i < sizeof(families) / sizeof(int); ++i) {
- sock = socket(families[i], SOCK_DGRAM, 0);
- if (sock >= 0)
- return sock;
- }
-
- return -1;
-}
-
-static int iw_set_ext(struct wpa_driver_ndiswrapper_data *drv, int request,
- struct iwreq *pwrq)
-{
- os_strlcpy(pwrq->ifr_name, drv->ifname, IFNAMSIZ);
- return ioctl(drv->sock, request, pwrq);
-}
-
-static int wpa_ndiswrapper_set_wpa(void *priv, int enabled)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- struct iwreq priv_req;
- int ret = 0;
-
- os_memset(&priv_req, 0, sizeof(priv_req));
-
- priv_req.u.data.flags = enabled;
- if (iw_set_ext(drv, WPA_SET_WPA, &priv_req) < 0)
- ret = -1;
- return ret;
-}
-
-static int wpa_ndiswrapper_set_key(const char *ifname, void *priv,
- enum wpa_alg alg, const u8 *addr,
- int key_idx, int set_tx,
- const u8 *seq, size_t seq_len,
- const u8 *key, size_t key_len)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- struct wpa_key wpa_key;
- int ret = 0;
- struct iwreq priv_req;
-
- os_memset(&priv_req, 0, sizeof(priv_req));
-
- wpa_key.alg = alg;
- wpa_key.addr = addr;
- wpa_key.key_index = key_idx;
- wpa_key.set_tx = set_tx;
- wpa_key.seq = seq ? seq : (u8 *) "";
- wpa_key.seq_len = seq_len;
- wpa_key.key = key;
- wpa_key.key_len = key_len;
-
- priv_req.u.data.pointer = (void *)&wpa_key;
- priv_req.u.data.length = sizeof(wpa_key);
-
- if (iw_set_ext(drv, WPA_SET_KEY, &priv_req) < 0)
- ret = -1;
-
- if (alg == WPA_ALG_NONE) {
- /*
- * ndiswrapper did not seem to be clearing keys properly in
- * some cases with WPA_SET_KEY. For example, roaming from WPA
- * enabled AP to plaintext one seemed to fail since the driver
- * did not associate. Try to make sure the keys are cleared so
- * that plaintext APs can be used in all cases.
- */
- wpa_driver_wext_set_key(ifname, drv->wext, alg, addr, key_idx,
- set_tx, seq, seq_len, key, key_len);
- }
-
- return ret;
-}
-
-static int wpa_ndiswrapper_set_countermeasures(void *priv, int enabled)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- int ret = 0;
- struct iwreq priv_req;
-
- os_memset(&priv_req, 0, sizeof(priv_req));
-
- priv_req.u.param.value = enabled;
- if (iw_set_ext(drv, WPA_SET_COUNTERMEASURES, &priv_req) < 0)
- ret = -1;
-
- return ret;
-}
-
-static int wpa_ndiswrapper_set_drop_unencrypted(void *priv,
- int enabled)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- int ret = 0;
- struct iwreq priv_req;
-
- os_memset(&priv_req, 0, sizeof(priv_req));
-
- priv_req.u.param.value = enabled;
- if (iw_set_ext(drv, WPA_DROP_UNENCRYPTED, &priv_req) < 0)
- ret = -1;
- return ret;
-}
-
-static int wpa_ndiswrapper_deauthenticate(void *priv, const u8 *addr,
- int reason_code)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- int ret = 0;
- struct iwreq priv_req;
-
- os_memset(&priv_req, 0, sizeof(priv_req));
-
- priv_req.u.param.value = reason_code;
- os_memcpy(&priv_req.u.ap_addr.sa_data, addr, ETH_ALEN);
- if (iw_set_ext(drv, WPA_DEAUTHENTICATE, &priv_req) < 0)
- ret = -1;
- return ret;
-}
-
-static int wpa_ndiswrapper_disassociate(void *priv, const u8 *addr,
- int reason_code)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- int ret = 0;
- struct iwreq priv_req;
-
- os_memset(&priv_req, 0, sizeof(priv_req));
-
- os_memcpy(&priv_req.u.ap_addr.sa_data, addr, ETH_ALEN);
- if (iw_set_ext(drv, WPA_DISASSOCIATE, &priv_req) < 0)
- ret = -1;
- return ret;
-}
-
-static int
-wpa_ndiswrapper_associate(void *priv,
- struct wpa_driver_associate_params *params)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- int ret = 0;
- struct wpa_assoc_info wpa_assoc_info;
- struct iwreq priv_req;
-
- if (wpa_ndiswrapper_set_drop_unencrypted(drv,
- params->drop_unencrypted) < 0)
- ret = -1;
- if (wpa_ndiswrapper_set_auth_alg(drv, params->auth_alg) < 0)
- ret = -1;
-
- os_memset(&priv_req, 0, sizeof(priv_req));
- os_memset(&wpa_assoc_info, 0, sizeof(wpa_assoc_info));
-
- wpa_assoc_info.bssid = params->bssid;
- wpa_assoc_info.ssid = params->ssid;
- wpa_assoc_info.ssid_len = params->ssid_len;
- wpa_assoc_info.freq = params->freq;
- wpa_assoc_info.wpa_ie = params->wpa_ie;
- wpa_assoc_info.wpa_ie_len = params->wpa_ie_len;
- wpa_assoc_info.pairwise_suite = params->pairwise_suite;
- wpa_assoc_info.group_suite = params->group_suite;
- wpa_assoc_info.key_mgmt_suite = params->key_mgmt_suite;
- wpa_assoc_info.auth_alg = params->auth_alg;
- wpa_assoc_info.mode = params->mode;
-
- priv_req.u.data.pointer = (void *)&wpa_assoc_info;
- priv_req.u.data.length = sizeof(wpa_assoc_info);
-
- if (iw_set_ext(drv, WPA_ASSOCIATE, &priv_req) < 0)
- ret = -1;
- return ret;
-}
-
-static int wpa_ndiswrapper_set_auth_alg(void *priv, int auth_alg)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- int ret = 0;
- struct iwreq priv_req;
-
- os_memset(&priv_req, 0, sizeof(priv_req));
-
- priv_req.u.param.value = auth_alg;
- if (iw_set_ext(drv, WPA_SET_AUTH_ALG, &priv_req) < 0)
- ret = -1;
- return ret;
-}
-
-static int wpa_ndiswrapper_get_bssid(void *priv, u8 *bssid)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- return wpa_driver_wext_get_bssid(drv->wext, bssid);
-}
-
-
-static int wpa_ndiswrapper_get_ssid(void *priv, u8 *ssid)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- return wpa_driver_wext_get_ssid(drv->wext, ssid);
-}
-
-
-static int wpa_ndiswrapper_scan(void *priv,
- struct wpa_driver_scan_params *params)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- return wpa_driver_wext_scan(drv->wext, params);
-}
-
-
-static struct wpa_scan_results * wpa_ndiswrapper_get_scan_results(void *priv)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- return wpa_driver_wext_get_scan_results(drv->wext);
-}
-
-
-static int wpa_ndiswrapper_get_capa(void *priv, struct wpa_driver_capa *capa)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- int ret = 0;
- struct iwreq priv_req;
-
- os_memset(&priv_req, 0, sizeof(priv_req));
-
- priv_req.u.data.pointer = (void *) capa;
- priv_req.u.data.length = sizeof(*capa);
- if (iw_set_ext(drv, WPA_GET_CAPA, &priv_req) < 0)
- ret = -1;
- return ret;
-
-}
-
-
-static int wpa_ndiswrapper_set_operstate(void *priv, int state)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- return wpa_driver_wext_set_operstate(drv->wext, state);
-}
-
-
-static void * wpa_ndiswrapper_init(void *ctx, const char *ifname)
-{
- struct wpa_driver_ndiswrapper_data *drv;
-
- drv = os_zalloc(sizeof(*drv));
- if (drv == NULL)
- return NULL;
- drv->wext = wpa_driver_wext_init(ctx, ifname);
- if (drv->wext == NULL) {
- os_free(drv);
- return NULL;
- }
-
- drv->ctx = ctx;
- os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname));
- drv->sock = get_socket();
- if (drv->sock < 0) {
- wpa_driver_wext_deinit(drv->wext);
- os_free(drv);
- return NULL;
- }
-
- wpa_ndiswrapper_set_wpa(drv, 1);
-
- return drv;
-}
-
-
-static void wpa_ndiswrapper_deinit(void *priv)
-{
- struct wpa_driver_ndiswrapper_data *drv = priv;
- wpa_ndiswrapper_set_wpa(drv, 0);
- wpa_driver_wext_deinit(drv->wext);
- close(drv->sock);
- os_free(drv);
-}
-
-
-const struct wpa_driver_ops wpa_driver_ndiswrapper_ops = {
- .name = "ndiswrapper",
- .desc = "Linux ndiswrapper (deprecated; use wext)",
- .set_key = wpa_ndiswrapper_set_key,
- .set_countermeasures = wpa_ndiswrapper_set_countermeasures,
- .deauthenticate = wpa_ndiswrapper_deauthenticate,
- .disassociate = wpa_ndiswrapper_disassociate,
- .associate = wpa_ndiswrapper_associate,
-
- .get_bssid = wpa_ndiswrapper_get_bssid,
- .get_ssid = wpa_ndiswrapper_get_ssid,
- .scan2 = wpa_ndiswrapper_scan,
- .get_scan_results2 = wpa_ndiswrapper_get_scan_results,
- .init = wpa_ndiswrapper_init,
- .deinit = wpa_ndiswrapper_deinit,
- .get_capa = wpa_ndiswrapper_get_capa,
- .set_operstate = wpa_ndiswrapper_set_operstate,
-};
diff --git a/src/drivers/drivers.c b/src/drivers/drivers.c
index bffbbde..b710778 100644
--- a/src/drivers/drivers.c
+++ b/src/drivers/drivers.c
@@ -24,25 +24,12 @@ extern struct wpa_driver_ops wpa_driver_nl80211_ops; /* driver_nl80211.c */
#ifdef CONFIG_DRIVER_HOSTAP
extern struct wpa_driver_ops wpa_driver_hostap_ops; /* driver_hostap.c */
#endif /* CONFIG_DRIVER_HOSTAP */
-#ifdef CONFIG_DRIVER_HERMES
-extern struct wpa_driver_ops wpa_driver_hermes_ops; /* driver_hermes.c */
-#endif /* CONFIG_DRIVER_HERMES */
#ifdef CONFIG_DRIVER_MADWIFI
extern struct wpa_driver_ops wpa_driver_madwifi_ops; /* driver_madwifi.c */
#endif /* CONFIG_DRIVER_MADWIFI */
-#ifdef CONFIG_DRIVER_ATMEL
-extern struct wpa_driver_ops wpa_driver_atmel_ops; /* driver_atmel.c */
-#endif /* CONFIG_DRIVER_ATMEL */
-#ifdef CONFIG_DRIVER_NDISWRAPPER
-/* driver_ndiswrapper.c */
-extern struct wpa_driver_ops wpa_driver_ndiswrapper_ops;
-#endif /* CONFIG_DRIVER_NDISWRAPPER */
#ifdef CONFIG_DRIVER_BROADCOM
extern struct wpa_driver_ops wpa_driver_broadcom_ops; /* driver_broadcom.c */
#endif /* CONFIG_DRIVER_BROADCOM */
-#ifdef CONFIG_DRIVER_IPW
-extern struct wpa_driver_ops wpa_driver_ipw_ops; /* driver_ipw.c */
-#endif /* CONFIG_DRIVER_IPW */
#ifdef CONFIG_DRIVER_BSD
extern struct wpa_driver_ops wpa_driver_bsd_ops; /* driver_bsd.c */
#endif /* CONFIG_DRIVER_BSD */
@@ -87,24 +74,12 @@ struct wpa_driver_ops *wpa_drivers[] =
#ifdef CONFIG_DRIVER_HOSTAP
&wpa_driver_hostap_ops,
#endif /* CONFIG_DRIVER_HOSTAP */
-#ifdef CONFIG_DRIVER_HERMES
- &wpa_driver_hermes_ops,
-#endif /* CONFIG_DRIVER_HERMES */
#ifdef CONFIG_DRIVER_MADWIFI
&wpa_driver_madwifi_ops,
#endif /* CONFIG_DRIVER_MADWIFI */
-#ifdef CONFIG_DRIVER_ATMEL
- &wpa_driver_atmel_ops,
-#endif /* CONFIG_DRIVER_ATMEL */
-#ifdef CONFIG_DRIVER_NDISWRAPPER
- &wpa_driver_ndiswrapper_ops,
-#endif /* CONFIG_DRIVER_NDISWRAPPER */
#ifdef CONFIG_DRIVER_BROADCOM
&wpa_driver_broadcom_ops,
#endif /* CONFIG_DRIVER_BROADCOM */
-#ifdef CONFIG_DRIVER_IPW
- &wpa_driver_ipw_ops,
-#endif /* CONFIG_DRIVER_IPW */
#ifdef CONFIG_DRIVER_BSD
&wpa_driver_bsd_ops,
#endif /* CONFIG_DRIVER_BSD */
diff --git a/src/drivers/drivers.mak b/src/drivers/drivers.mak
index 4a98f05..ebf39c8 100644
--- a/src/drivers/drivers.mak
+++ b/src/drivers/drivers.mak
@@ -97,24 +97,6 @@ NEED_LINUX_IOCTL=y
NEED_RFKILL=y
endif
-ifdef CONFIG_DRIVER_HERMES
-DRV_WPA_CFLAGS += -DCONFIG_DRIVER_HERMES
-DRV_WPA_OBJS += ../src/drivers/driver_hermes.o
-CONFIG_WIRELESS_EXTENSION=y
-endif
-
-ifdef CONFIG_DRIVER_ATMEL
-DRV_WPA_CFLAGS += -DCONFIG_DRIVER_ATMEL
-DRV_WPA_OBJS += ../src/drivers/driver_atmel.o
-CONFIG_WIRELESS_EXTENSION=y
-endif
-
-ifdef CONFIG_DRIVER_NDISWRAPPER
-DRV_WPA_CFLAGS += -DCONFIG_DRIVER_NDISWRAPPER
-DRV_WPA_OBJS += ../src/drivers/driver_ndiswrapper.o
-CONFIG_WIRELESS_EXTENSION=y
-endif
-
ifdef CONFIG_DRIVER_RALINK
DRV_WPA_CFLAGS += -DCONFIG_DRIVER_RALINK
DRV_WPA_OBJS += ../src/drivers/driver_ralink.o
@@ -127,12 +109,6 @@ DRV_WPA_CFLAGS += -DCONFIG_DRIVER_BROADCOM
DRV_WPA_OBJS += ../src/drivers/driver_broadcom.o
endif
-ifdef CONFIG_DRIVER_IPW
-DRV_WPA_CFLAGS += -DCONFIG_DRIVER_IPW
-DRV_WPA_OBJS += ../src/drivers/driver_ipw.o
-CONFIG_WIRELESS_EXTENSION=y
-endif
-
ifdef CONFIG_DRIVER_NDIS
DRV_WPA_CFLAGS += -DCONFIG_DRIVER_NDIS
DRV_WPA_OBJS += ../src/drivers/driver_ndis.o
diff --git a/wpa_supplicant/README b/wpa_supplicant/README
index 45c8bae..54766db 100644
--- a/wpa_supplicant/README
+++ b/wpa_supplicant/README
@@ -147,22 +147,12 @@ Current hardware/software requirements:
Linuxant DriverLoader (http://www.linuxant.com/driverloader/)
with Windows NDIS driver for your wlan card supporting WPA.
- Agere Systems Inc. Linux Driver
- (http://www.agere.com/support/drivers/)
- Please note that the driver interface file (driver_hermes.c) and
- hardware specific include files are not included in the
- wpa_supplicant distribution. You will need to copy these from the
- source package of the Agere driver.
-
madwifi driver for cards based on Atheros chip set (ar521x)
(http://sourceforge.net/projects/madwifi/)
Please note that you will need to modify the wpa_supplicant .config
file to use the correct path for the madwifi driver root directory
(CFLAGS += -I../madwifi/wpa line in example defconfig).
- ATMEL AT76C5XXx driver for USB and PCMCIA cards
- (http://atmelwlandriver.sourceforge.net/).
-
Linux ndiswrapper (http://ndiswrapper.sourceforge.net/) with
Windows NDIS driver.
@@ -181,12 +171,6 @@ Current hardware/software requirements:
not need (or even work) with the specific driver wrapper. Use -Dwext
with that driver.
- Intel ipw2100 driver
- (http://sourceforge.net/projects/ipw2100/)
-
- Intel ipw2200 driver
- (http://sourceforge.net/projects/ipw2200/)
-
In theory, any driver that supports Linux wireless extensions can be
used with IEEE 802.1X (i.e., not WPA) when using ap_scan=0 option in
configuration file.
@@ -396,18 +380,13 @@ authentication algorithm (for EAP-SIM/EAP-AKA). This requires pcsc-lite
CONFIG_PCSC=y
Following options can be added to .config to select which driver
-interfaces are included. Hermes driver interface needs to be downloaded
-from Agere (see above).
+interfaces are included.
CONFIG_DRIVER_HOSTAP=y
-CONFIG_DRIVER_HERMES=y
CONFIG_DRIVER_MADWIFI=y
-CONFIG_DRIVER_ATMEL=y
CONFIG_DRIVER_WEXT=y
CONFIG_DRIVER_RALINK=y
-CONFIG_DRIVER_NDISWRAPPER=y
CONFIG_DRIVER_BROADCOM=y
-CONFIG_DRIVER_IPW=y
CONFIG_DRIVER_BSD=y
CONFIG_DRIVER_NDIS=y
@@ -415,13 +394,9 @@ Following example includes all features and driver interfaces that are
included in the wpa_supplicant package:
CONFIG_DRIVER_HOSTAP=y
-CONFIG_DRIVER_HERMES=y
CONFIG_DRIVER_MADWIFI=y
-CONFIG_DRIVER_ATMEL=y
CONFIG_DRIVER_WEXT=y
-CONFIG_DRIVER_NDISWRAPPER=y
CONFIG_DRIVER_BROADCOM=y
-CONFIG_DRIVER_IPW=y
CONFIG_DRIVER_BSD=y
CONFIG_DRIVER_NDIS=y
CONFIG_IEEE8021X_EAPOL=y
@@ -516,14 +491,10 @@ options:
drivers:
hostap = Host AP driver (Intersil Prism2/2.5/3) [default]
(this can also be used with Linuxant DriverLoader)
- hermes = Agere Systems Inc. driver (Hermes-I/Hermes-II)
madwifi = MADWIFI 802.11 support (Atheros, etc.) (deprecated; use wext)
- atmel = ATMEL AT76C5XXx (USB, PCMCIA)
wext = Linux wireless extensions (generic)
ralink = Ralink Client driver
- ndiswrapper = Linux ndiswrapper (deprecated; use wext)
broadcom = Broadcom wl.o driver
- ipw = Intel ipw2100/2200 driver (old; use wext with Linux 2.6.13 or newer)
wired = wpa_supplicant wired Ethernet driver
roboswitch = wpa_supplicant Broadcom switch driver
bsd = BSD 802.11 support (Atheros, etc.)
diff --git a/wpa_supplicant/doc/docbook/wpa_supplicant.sgml b/wpa_supplicant/doc/docbook/wpa_supplicant.sgml
index 3aae51b..0ab4e15 100644
--- a/wpa_supplicant/doc/docbook/wpa_supplicant.sgml
+++ b/wpa_supplicant/doc/docbook/wpa_supplicant.sgml
@@ -268,13 +268,6 @@
</varlistentry>
<varlistentry>
- <term>atmel</term>
- <listitem>
- <para>ATMEL AT76C5XXx (USB, PCMCIA).</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
<term>wext</term>
<listitem>
<para>Linux wireless extensions (generic).</para>
@@ -282,13 +275,6 @@
</varlistentry>
<varlistentry>
- <term>ndiswrapper</term>
- <listitem>
- <para>Linux ndiswrapper.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
<term>broadcom</term>
<listitem>
<para>Broadcom wl.o driver.</para>
@@ -296,13 +282,6 @@
</varlistentry>
<varlistentry>
- <term>ipw</term>
- <listitem>
- <para>Intel ipw2100/2200 driver.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
<term>wired</term>
<listitem>
<para>wpa_supplicant wired Ethernet driver</para>
@@ -599,13 +578,6 @@ wpa_supplicant \
</varlistentry>
<varlistentry>
- <term>ATMEL AT76C5XXx driver for USB and PCMCIA cards</term>
- <listitem>
- <para> (http://atmelwlandriver.sourceforge.net/).</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
<term>Linux ndiswrapper</term>
<listitem>
<para> (http://ndiswrapper.sourceforge.net/) with Windows