提交 c1596b75 编写于 作者: H Hamish Guthrie 提交者: John W. Linville

ps3_gelic_wireless: Remove PS3 gelic legacy wpa support

The current PS3 gelic wireless driver has support for wireless
extensions. The original PS3 gelic wireless driver exposed a
dedicated API for a dedicated wpa_supplicant driver. This old
API could be enabled with CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE,
however, as this is not being used by any distros, and it is being
removed from the driver and from wpa_supplicant.
Signed-off-by: NHamish Guthrie <hamish.guthrie@sonycom.com>
Acked-by: NGeoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 54233261
......@@ -1000,7 +1000,6 @@ CONFIG_TIGON3=y
CONFIG_SPIDER_NET=m
CONFIG_GELIC_NET=m
CONFIG_GELIC_WIRELESS=y
# CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE is not set
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
# CONFIG_ATL1E is not set
......
......@@ -593,7 +593,6 @@ CONFIG_MII=m
CONFIG_NETDEV_1000=y
CONFIG_GELIC_NET=y
CONFIG_GELIC_WIRELESS=y
# CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE is not set
# CONFIG_NETDEV_10000 is not set
#
......
......@@ -2354,20 +2354,6 @@ config GELIC_WIRELESS
the driver automatically distinguishes the models, you can
safely enable this option even if you have a wireless-less model.
config GELIC_WIRELESS_OLD_PSK_INTERFACE
bool "PS3 Wireless private PSK interface (OBSOLETE)"
depends on GELIC_WIRELESS
select WEXT_PRIV
help
This option retains the obsolete private interface to pass
the PSK from user space programs to the driver. The PSK
stands for 'Pre Shared Key' and is used for WPA[2]-PSK
(WPA-Personal) environment.
If WPA[2]-PSK is used and you need to use old programs that
support only this old interface, say Y. Otherwise N.
If unsure, say N.
config FSL_PQ_MDIO
tristate "Freescale PQ MDIO"
depends on FSL_SOC
......
......@@ -1389,113 +1389,6 @@ static int gelic_wl_get_mode(struct net_device *netdev,
return 0;
}
#ifdef CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE
/* SIOCIWFIRSTPRIV */
static int hex2bin(u8 *str, u8 *bin, unsigned int len)
{
unsigned int i;
static unsigned char *hex = "0123456789ABCDEF";
unsigned char *p, *q;
u8 tmp;
if (len != WPA_PSK_LEN * 2)
return -EINVAL;
for (i = 0; i < WPA_PSK_LEN * 2; i += 2) {
p = strchr(hex, toupper(str[i]));
q = strchr(hex, toupper(str[i + 1]));
if (!p || !q) {
pr_info("%s: unconvertible PSK digit=%d\n",
__func__, i);
return -EINVAL;
}
tmp = ((p - hex) << 4) + (q - hex);
*bin++ = tmp;
}
return 0;
};
static int gelic_wl_priv_set_psk(struct net_device *net_dev,
struct iw_request_info *info,
union iwreq_data *data, char *extra)
{
struct gelic_wl_info *wl = port_wl(netdev_priv(net_dev));
unsigned int len;
unsigned long irqflag;
int ret = 0;
pr_debug("%s:<- len=%d\n", __func__, data->data.length);
len = data->data.length - 1;
if (len <= 2)
return -EINVAL;
spin_lock_irqsave(&wl->lock, irqflag);
if (extra[0] == '"' && extra[len - 1] == '"') {
pr_debug("%s: passphrase mode\n", __func__);
/* pass phrase */
if (GELIC_WL_EURUS_PSK_MAX_LEN < (len - 2)) {
pr_info("%s: passphrase too long\n", __func__);
ret = -E2BIG;
goto out;
}
memset(wl->psk, 0, sizeof(wl->psk));
wl->psk_len = len - 2;
memcpy(wl->psk, &(extra[1]), wl->psk_len);
wl->psk_type = GELIC_EURUS_WPA_PSK_PASSPHRASE;
} else {
ret = hex2bin(extra, wl->psk, len);
if (ret)
goto out;
wl->psk_len = WPA_PSK_LEN;
wl->psk_type = GELIC_EURUS_WPA_PSK_BIN;
}
set_bit(GELIC_WL_STAT_WPA_PSK_SET, &wl->stat);
out:
spin_unlock_irqrestore(&wl->lock, irqflag);
pr_debug("%s:->\n", __func__);
return ret;
}
static int gelic_wl_priv_get_psk(struct net_device *net_dev,
struct iw_request_info *info,
union iwreq_data *data, char *extra)
{
struct gelic_wl_info *wl = port_wl(netdev_priv(net_dev));
char *p;
unsigned long irqflag;
unsigned int i;
pr_debug("%s:<-\n", __func__);
if (!capable(CAP_NET_ADMIN))
return -EPERM;
spin_lock_irqsave(&wl->lock, irqflag);
p = extra;
if (test_bit(GELIC_WL_STAT_WPA_PSK_SET, &wl->stat)) {
if (wl->psk_type == GELIC_EURUS_WPA_PSK_BIN) {
for (i = 0; i < wl->psk_len; i++) {
sprintf(p, "%02xu", wl->psk[i]);
p += 2;
}
*p = '\0';
data->data.length = wl->psk_len * 2;
} else {
*p++ = '"';
memcpy(p, wl->psk, wl->psk_len);
p += wl->psk_len;
*p++ = '"';
*p = '\0';
data->data.length = wl->psk_len + 2;
}
} else
/* no psk set */
data->data.length = 0;
spin_unlock_irqrestore(&wl->lock, irqflag);
pr_debug("%s:-> %d\n", __func__, data->data.length);
return 0;
}
#endif
/* SIOCGIWNICKN */
static int gelic_wl_get_nick(struct net_device *net_dev,
struct iw_request_info *info,
......@@ -2406,40 +2299,10 @@ static const iw_handler gelic_wl_wext_handler[] =
IW_IOCTL(SIOCGIWNICKN) = gelic_wl_get_nick,
};
#ifdef CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE
static struct iw_priv_args gelic_wl_private_args[] =
{
{
.cmd = GELIC_WL_PRIV_SET_PSK,
.set_args = IW_PRIV_TYPE_CHAR |
(GELIC_WL_EURUS_PSK_MAX_LEN + 2),
.name = "set_psk"
},
{
.cmd = GELIC_WL_PRIV_GET_PSK,
.get_args = IW_PRIV_TYPE_CHAR |
(GELIC_WL_EURUS_PSK_MAX_LEN + 2),
.name = "get_psk"
}
};
static const iw_handler gelic_wl_private_handler[] =
{
gelic_wl_priv_set_psk,
gelic_wl_priv_get_psk,
};
#endif
static const struct iw_handler_def gelic_wl_wext_handler_def = {
.num_standard = ARRAY_SIZE(gelic_wl_wext_handler),
.standard = gelic_wl_wext_handler,
.get_wireless_stats = gelic_wl_get_wireless_stats,
#ifdef CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE
.num_private = ARRAY_SIZE(gelic_wl_private_handler),
.num_private_args = ARRAY_SIZE(gelic_wl_private_args),
.private = gelic_wl_private_handler,
.private_args = gelic_wl_private_args,
#endif
};
static struct net_device * __devinit gelic_wl_alloc(struct gelic_card *card)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册