|
@@ -2,7 +2,7 @@
|
|
|
* Driver for RNDIS based wireless USB devices.
|
|
|
*
|
|
|
* Copyright (C) 2007 by Bjorge Dijkstra <bjd@jooz.net>
|
|
|
- * Copyright (C) 2008 by Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
|
|
|
+ * Copyright (C) 2008-2009 by Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
|
|
|
*
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
@@ -309,7 +309,6 @@ enum wpa_key_mgmt { KEY_MGMT_802_1X, KEY_MGMT_PSK, KEY_MGMT_NONE,
|
|
|
#define CAP_MODE_80211B 2
|
|
|
#define CAP_MODE_80211G 4
|
|
|
#define CAP_MODE_MASK 7
|
|
|
-#define CAP_SUPPORT_TXPOWER 8
|
|
|
|
|
|
#define WORK_LINK_UP (1<<0)
|
|
|
#define WORK_LINK_DOWN (1<<1)
|
|
@@ -1849,18 +1848,10 @@ static int rndis_iw_get_txpower(struct net_device *dev,
|
|
|
struct usbnet *usbdev = netdev_priv(dev);
|
|
|
struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
|
|
|
__le32 tx_power;
|
|
|
- int ret = 0, len;
|
|
|
|
|
|
if (priv->radio_on) {
|
|
|
- if (priv->caps & CAP_SUPPORT_TXPOWER) {
|
|
|
- len = sizeof(tx_power);
|
|
|
- ret = rndis_query_oid(usbdev, OID_802_11_TX_POWER_LEVEL,
|
|
|
- &tx_power, &len);
|
|
|
- if (ret != 0)
|
|
|
- return ret;
|
|
|
- } else
|
|
|
- /* fake incase not supported */
|
|
|
- tx_power = cpu_to_le32(get_bcm4320_power(priv));
|
|
|
+ /* fake since changing tx_power (by userlevel) not supported */
|
|
|
+ tx_power = cpu_to_le32(get_bcm4320_power(priv));
|
|
|
|
|
|
wrqu->txpower.flags = IW_TXPOW_MWATT;
|
|
|
wrqu->txpower.value = le32_to_cpu(tx_power);
|
|
@@ -1873,7 +1864,7 @@ static int rndis_iw_get_txpower(struct net_device *dev,
|
|
|
|
|
|
devdbg(usbdev, "SIOCGIWTXPOW: %d", wrqu->txpower.value);
|
|
|
|
|
|
- return ret;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -1883,7 +1874,6 @@ static int rndis_iw_set_txpower(struct net_device *dev,
|
|
|
struct usbnet *usbdev = netdev_priv(dev);
|
|
|
struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
|
|
|
__le32 tx_power = 0;
|
|
|
- int ret = 0;
|
|
|
|
|
|
if (!wrqu->txpower.disabled) {
|
|
|
if (wrqu->txpower.flags == IW_TXPOW_MWATT)
|
|
@@ -1906,22 +1896,10 @@ static int rndis_iw_set_txpower(struct net_device *dev,
|
|
|
devdbg(usbdev, "SIOCSIWTXPOW: %d", le32_to_cpu(tx_power));
|
|
|
|
|
|
if (le32_to_cpu(tx_power) != 0) {
|
|
|
- if (priv->caps & CAP_SUPPORT_TXPOWER) {
|
|
|
- /* turn radio on first */
|
|
|
- if (!priv->radio_on)
|
|
|
- disassociate(usbdev, 1);
|
|
|
-
|
|
|
- ret = rndis_set_oid(usbdev, OID_802_11_TX_POWER_LEVEL,
|
|
|
- &tx_power, sizeof(tx_power));
|
|
|
- if (ret != 0)
|
|
|
- ret = -EOPNOTSUPP;
|
|
|
- return ret;
|
|
|
- } else {
|
|
|
- /* txpower unsupported, just turn radio on */
|
|
|
- if (!priv->radio_on)
|
|
|
- return disassociate(usbdev, 1);
|
|
|
- return 0; /* all ready on */
|
|
|
- }
|
|
|
+ /* txpower unsupported, just turn radio on */
|
|
|
+ if (!priv->radio_on)
|
|
|
+ return disassociate(usbdev, 1);
|
|
|
+ return 0; /* all ready on */
|
|
|
}
|
|
|
|
|
|
/* tx_power == 0, turn off radio */
|
|
@@ -2130,16 +2108,8 @@ static int rndis_wext_get_caps(struct usbnet *usbdev)
|
|
|
__le32 items[8];
|
|
|
} networks_supported;
|
|
|
int len, retval, i, n;
|
|
|
- __le32 tx_power;
|
|
|
struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
|
|
|
|
|
|
- /* determine if supports setting txpower */
|
|
|
- len = sizeof(tx_power);
|
|
|
- retval = rndis_query_oid(usbdev, OID_802_11_TX_POWER_LEVEL, &tx_power,
|
|
|
- &len);
|
|
|
- if (retval == 0 && le32_to_cpu(tx_power) != 0xFF)
|
|
|
- priv->caps |= CAP_SUPPORT_TXPOWER;
|
|
|
-
|
|
|
/* determine supported modes */
|
|
|
len = sizeof(networks_supported);
|
|
|
retval = rndis_query_oid(usbdev, OID_802_11_NETWORK_TYPES_SUPPORTED,
|