diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/hostap/Kconfig | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ipw2100.c | 49 | ||||
-rw-r--r-- | drivers/net/wireless/ipw2200.c | 7 |
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 | ||
76 | config HOSTAP_CS | 76 | config 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)) |
2204 | static 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 | ||
2204 | static int ipw2100_snapshot_alloc(struct ipw2100_priv *priv) | 2215 | static 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 | ||
2224 | static 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 | |||
2234 | static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf, | 2235 | static 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 | ||