aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/hostap/Kconfig2
-rw-r--r--drivers/net/wireless/ipw2100.c49
-rw-r--r--drivers/net/wireless/ipw2200.c7
3 files changed, 32 insertions, 26 deletions
diff --git a/drivers/net/wireless/hostap/Kconfig b/drivers/net/wireless/hostap/Kconfig
index c8f6286dd35f..308f773ad566 100644
--- a/drivers/net/wireless/hostap/Kconfig
+++ b/drivers/net/wireless/hostap/Kconfig
@@ -75,7 +75,7 @@ config HOSTAP_PCI
75 75
76config HOSTAP_CS 76config HOSTAP_CS
77 tristate "Host AP driver for Prism2/2.5/3 PC Cards" 77 tristate "Host AP driver for Prism2/2.5/3 PC Cards"
78 depends on PCMCIA!=n && HOSTAP 78 depends on PCMCIA && HOSTAP
79 ---help--- 79 ---help---
80 Host AP driver's version for Prism2/2.5/3 PC Cards. 80 Host AP driver's version for Prism2/2.5/3 PC Cards.
81 81
diff --git a/drivers/net/wireless/ipw2100.c b/drivers/net/wireless/ipw2100.c
index 8bf02763b5c7..6290c9f7e939 100644
--- a/drivers/net/wireless/ipw2100.c
+++ b/drivers/net/wireless/ipw2100.c
@@ -2201,6 +2201,17 @@ static int ipw2100_alloc_skb(struct ipw2100_priv *priv,
2201#define SEARCH_SNAPSHOT 1 2201#define SEARCH_SNAPSHOT 1
2202 2202
2203#define SNAPSHOT_ADDR(ofs) (priv->snapshot[((ofs) >> 12) & 0xff] + ((ofs) & 0xfff)) 2203#define SNAPSHOT_ADDR(ofs) (priv->snapshot[((ofs) >> 12) & 0xff] + ((ofs) & 0xfff))
2204static void ipw2100_snapshot_free(struct ipw2100_priv *priv)
2205{
2206 int i;
2207 if (!priv->snapshot[0])
2208 return;
2209 for (i = 0; i < 0x30; i++)
2210 kfree(priv->snapshot[i]);
2211 priv->snapshot[0] = NULL;
2212}
2213
2214#ifdef CONFIG_IPW2100_DEBUG_C3
2204static int ipw2100_snapshot_alloc(struct ipw2100_priv *priv) 2215static int ipw2100_snapshot_alloc(struct ipw2100_priv *priv)
2205{ 2216{
2206 int i; 2217 int i;
@@ -2221,16 +2232,6 @@ static int ipw2100_snapshot_alloc(struct ipw2100_priv *priv)
2221 return 1; 2232 return 1;
2222} 2233}
2223 2234
2224static void ipw2100_snapshot_free(struct ipw2100_priv *priv)
2225{
2226 int i;
2227 if (!priv->snapshot[0])
2228 return;
2229 for (i = 0; i < 0x30; i++)
2230 kfree(priv->snapshot[i]);
2231 priv->snapshot[0] = NULL;
2232}
2233
2234static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf, 2235static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf,
2235 size_t len, int mode) 2236 size_t len, int mode)
2236{ 2237{
@@ -2269,6 +2270,7 @@ static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf,
2269 2270
2270 return ret; 2271 return ret;
2271} 2272}
2273#endif
2272 2274
2273/* 2275/*
2274 * 2276 *
@@ -7112,11 +7114,17 @@ static int ipw2100_wx_set_txpow(struct net_device *dev,
7112{ 7114{
7113 struct ipw2100_priv *priv = ieee80211_priv(dev); 7115 struct ipw2100_priv *priv = ieee80211_priv(dev);
7114 int err = 0, value; 7116 int err = 0, value;
7117
7118 if (ipw_radio_kill_sw(priv, wrqu->txpower.disabled))
7119 return -EINPROGRESS;
7115 7120
7116 if (priv->ieee->iw_mode != IW_MODE_ADHOC) 7121 if (priv->ieee->iw_mode != IW_MODE_ADHOC)
7122 return 0;
7123
7124 if ((wrqu->txpower.flags & IW_TXPOW_TYPE) != IW_TXPOW_DBM)
7117 return -EINVAL; 7125 return -EINVAL;
7118 7126
7119 if (wrqu->txpower.disabled == 1 || wrqu->txpower.fixed == 0) 7127 if (wrqu->txpower.fixed == 0)
7120 value = IPW_TX_POWER_DEFAULT; 7128 value = IPW_TX_POWER_DEFAULT;
7121 else { 7129 else {
7122 if (wrqu->txpower.value < IPW_TX_POWER_MIN_DBM || 7130 if (wrqu->txpower.value < IPW_TX_POWER_MIN_DBM ||
@@ -7151,24 +7159,19 @@ static int ipw2100_wx_get_txpow(struct net_device *dev,
7151 7159
7152 struct ipw2100_priv *priv = ieee80211_priv(dev); 7160 struct ipw2100_priv *priv = ieee80211_priv(dev);
7153 7161
7154 if (priv->ieee->iw_mode != IW_MODE_ADHOC) { 7162 wrqu->txpower.disabled = (priv->status & STATUS_RF_KILL_MASK) ? 1 : 0;
7155 wrqu->power.disabled = 1;
7156 return 0;
7157 }
7158 7163
7159 if (priv->tx_power == IPW_TX_POWER_DEFAULT) { 7164 if (priv->tx_power == IPW_TX_POWER_DEFAULT) {
7160 wrqu->power.fixed = 0; 7165 wrqu->txpower.fixed = 0;
7161 wrqu->power.value = IPW_TX_POWER_MAX_DBM; 7166 wrqu->txpower.value = IPW_TX_POWER_MAX_DBM;
7162 wrqu->power.disabled = 1;
7163 } else { 7167 } else {
7164 wrqu->power.disabled = 0; 7168 wrqu->txpower.fixed = 1;
7165 wrqu->power.fixed = 1; 7169 wrqu->txpower.value = priv->tx_power;
7166 wrqu->power.value = priv->tx_power;
7167 } 7170 }
7168 7171
7169 wrqu->power.flags = IW_TXPOW_DBM; 7172 wrqu->txpower.flags = IW_TXPOW_DBM;
7170 7173
7171 IPW_DEBUG_WX("GET TX Power -> %d \n", wrqu->power.value); 7174 IPW_DEBUG_WX("GET TX Power -> %d \n", wrqu->txpower.value);
7172 7175
7173 return 0; 7176 return 0;
7174} 7177}
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
index 4c28e332ecc3..916b24c544e2 100644
--- a/drivers/net/wireless/ipw2200.c
+++ b/drivers/net/wireless/ipw2200.c
@@ -8012,6 +8012,10 @@ static int ipw_sw_reset(struct ipw_priv *priv, int init)
8012 else 8012 else
8013 IPW_DEBUG_INFO("Auto adhoc creation disabled.\n"); 8013 IPW_DEBUG_INFO("Auto adhoc creation disabled.\n");
8014 8014
8015 priv->config &= ~CFG_STATIC_ESSID;
8016 priv->essid_len = 0;
8017 memset(priv->essid, 0, IW_ESSID_MAX_SIZE);
8018
8015 if (disable) { 8019 if (disable) {
8016 priv->status |= STATUS_RF_KILL_SW; 8020 priv->status |= STATUS_RF_KILL_SW;
8017 IPW_DEBUG_INFO("Radio disabled.\n"); 8021 IPW_DEBUG_INFO("Radio disabled.\n");
@@ -11035,7 +11039,6 @@ static int ipw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
11035 net_dev->set_multicast_list = ipw_net_set_multicast_list; 11039 net_dev->set_multicast_list = ipw_net_set_multicast_list;
11036 net_dev->set_mac_address = ipw_net_set_mac_address; 11040 net_dev->set_mac_address = ipw_net_set_mac_address;
11037 priv->wireless_data.spy_data = &priv->ieee->spy_data; 11041 priv->wireless_data.spy_data = &priv->ieee->spy_data;
11038 priv->wireless_data.ieee80211 = priv->ieee;
11039 net_dev->wireless_data = &priv->wireless_data; 11042 net_dev->wireless_data = &priv->wireless_data;
11040 net_dev->wireless_handlers = &ipw_wx_handler_def; 11043 net_dev->wireless_handlers = &ipw_wx_handler_def;
11041 net_dev->ethtool_ops = &ipw_ethtool_ops; 11044 net_dev->ethtool_ops = &ipw_ethtool_ops;
@@ -11121,8 +11124,8 @@ static void ipw_pci_remove(struct pci_dev *pdev)
11121 /* Free MAC hash list for ADHOC */ 11124 /* Free MAC hash list for ADHOC */
11122 for (i = 0; i < IPW_IBSS_MAC_HASH_SIZE; i++) { 11125 for (i = 0; i < IPW_IBSS_MAC_HASH_SIZE; i++) {
11123 list_for_each_safe(p, q, &priv->ibss_mac_hash[i]) { 11126 list_for_each_safe(p, q, &priv->ibss_mac_hash[i]) {
11124 kfree(list_entry(p, struct ipw_ibss_seq, list));
11125 list_del(p); 11127 list_del(p);
11128 kfree(list_entry(p, struct ipw_ibss_seq, list));
11126 } 11129 }
11127 } 11130 }
11128 11131