diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-08-25 20:31:13 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-08-25 20:31:13 -0400 |
commit | b4bf343093e81e33d75bede45896eda52cd5f2b4 (patch) | |
tree | 7fd5ce5f428995e6d612014e3ca7ad3f917fcf65 | |
parent | 343b0597297c3190647854881c087c01faf40a6f (diff) | |
parent | 099c5bb169e9816a7761336f668b63010762807b (diff) |
/spare/repo/netdev-2.6 branch 'ieee80211'
-rw-r--r-- | drivers/net/wireless/Kconfig | 2 | ||||
-rw-r--r-- | drivers/net/wireless/atmel.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/ipw2100.c | 256 | ||||
-rw-r--r-- | drivers/net/wireless/ipw2100.h | 28 | ||||
-rw-r--r-- | drivers/net/wireless/ipw2200.c | 10 | ||||
-rw-r--r-- | drivers/net/wireless/ipw2200.h | 30 | ||||
-rw-r--r-- | include/net/ieee80211.h | 214 | ||||
-rw-r--r-- | net/ieee80211/ieee80211_module.c | 26 | ||||
-rw-r--r-- | net/ieee80211/ieee80211_rx.c | 16 | ||||
-rw-r--r-- | net/ieee80211/ieee80211_tx.c | 2 |
10 files changed, 317 insertions, 275 deletions
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig index 5d814dfc8bc0..dd7dbf7b14d4 100644 --- a/drivers/net/wireless/Kconfig +++ b/drivers/net/wireless/Kconfig | |||
@@ -164,7 +164,7 @@ config IPW2100 | |||
164 | say M here and read <file:Documentation/modules.txt>. The module | 164 | say M here and read <file:Documentation/modules.txt>. The module |
165 | will be called ipw2100.ko. | 165 | will be called ipw2100.ko. |
166 | 166 | ||
167 | config IPW2100_PROMISC | 167 | config IPW2100_MONITOR |
168 | bool "Enable promiscuous mode" | 168 | bool "Enable promiscuous mode" |
169 | depends on IPW2100 | 169 | depends on IPW2100 |
170 | ---help--- | 170 | ---help--- |
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c index bed160a25cab..f48a6e729224 100644 --- a/drivers/net/wireless/atmel.c +++ b/drivers/net/wireless/atmel.c | |||
@@ -867,7 +867,7 @@ static int start_tx (struct sk_buff *skb, struct net_device *dev) | |||
867 | header.duration_id = 0; | 867 | header.duration_id = 0; |
868 | header.seq_ctl = 0; | 868 | header.seq_ctl = 0; |
869 | if (priv->wep_is_on) | 869 | if (priv->wep_is_on) |
870 | frame_ctl |= IEEE80211_FCTL_WEP; | 870 | frame_ctl |= IEEE80211_FCTL_PROTECTED; |
871 | if (priv->operating_mode == IW_MODE_ADHOC) { | 871 | if (priv->operating_mode == IW_MODE_ADHOC) { |
872 | memcpy(&header.addr1, skb->data, 6); | 872 | memcpy(&header.addr1, skb->data, 6); |
873 | memcpy(&header.addr2, dev->dev_addr, 6); | 873 | memcpy(&header.addr2, dev->dev_addr, 6); |
@@ -1117,7 +1117,7 @@ static void rx_done_irq(struct atmel_private *priv) | |||
1117 | /* probe for CRC use here if needed once five packets have arrived with | 1117 | /* probe for CRC use here if needed once five packets have arrived with |
1118 | the same crc status, we assume we know what's happening and stop probing */ | 1118 | the same crc status, we assume we know what's happening and stop probing */ |
1119 | if (priv->probe_crc) { | 1119 | if (priv->probe_crc) { |
1120 | if (!priv->wep_is_on || !(frame_ctl & IEEE80211_FCTL_WEP)) { | 1120 | if (!priv->wep_is_on || !(frame_ctl & IEEE80211_FCTL_PROTECTED)) { |
1121 | priv->do_rx_crc = probe_crc(priv, rx_packet_loc, msdu_size); | 1121 | priv->do_rx_crc = probe_crc(priv, rx_packet_loc, msdu_size); |
1122 | } else { | 1122 | } else { |
1123 | priv->do_rx_crc = probe_crc(priv, rx_packet_loc + 24, msdu_size - 24); | 1123 | priv->do_rx_crc = probe_crc(priv, rx_packet_loc + 24, msdu_size - 24); |
@@ -1132,7 +1132,7 @@ static void rx_done_irq(struct atmel_private *priv) | |||
1132 | } | 1132 | } |
1133 | 1133 | ||
1134 | /* don't CRC header when WEP in use */ | 1134 | /* don't CRC header when WEP in use */ |
1135 | if (priv->do_rx_crc && (!priv->wep_is_on || !(frame_ctl & IEEE80211_FCTL_WEP))) { | 1135 | if (priv->do_rx_crc && (!priv->wep_is_on || !(frame_ctl & IEEE80211_FCTL_PROTECTED))) { |
1136 | crc = crc32_le(0xffffffff, (unsigned char *)&header, 24); | 1136 | crc = crc32_le(0xffffffff, (unsigned char *)&header, 24); |
1137 | } | 1137 | } |
1138 | msdu_size -= 24; /* header */ | 1138 | msdu_size -= 24; /* header */ |
@@ -2677,7 +2677,7 @@ static void send_authentication_request(struct atmel_private *priv, u8 *challeng | |||
2677 | auth.alg = cpu_to_le16(C80211_MGMT_AAN_SHAREDKEY); | 2677 | auth.alg = cpu_to_le16(C80211_MGMT_AAN_SHAREDKEY); |
2678 | /* no WEP for authentication frames with TrSeqNo 1 */ | 2678 | /* no WEP for authentication frames with TrSeqNo 1 */ |
2679 | if (priv->CurrentAuthentTransactionSeqNum != 1) | 2679 | if (priv->CurrentAuthentTransactionSeqNum != 1) |
2680 | header.frame_ctl |= cpu_to_le16(IEEE80211_FCTL_WEP); | 2680 | header.frame_ctl |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); |
2681 | } else { | 2681 | } else { |
2682 | auth.alg = cpu_to_le16(C80211_MGMT_AAN_OPENSYSTEM); | 2682 | auth.alg = cpu_to_le16(C80211_MGMT_AAN_OPENSYSTEM); |
2683 | } | 2683 | } |
diff --git a/drivers/net/wireless/ipw2100.c b/drivers/net/wireless/ipw2100.c index 189ad7b2cec9..a47fce4beadf 100644 --- a/drivers/net/wireless/ipw2100.c +++ b/drivers/net/wireless/ipw2100.c | |||
@@ -106,7 +106,7 @@ that protects the following: | |||
106 | 106 | ||
107 | tx_pend_list : Holds used Tx buffers waiting to go into the TBD ring | 107 | tx_pend_list : Holds used Tx buffers waiting to go into the TBD ring |
108 | TAIL modified ipw2100_tx() | 108 | TAIL modified ipw2100_tx() |
109 | HEAD modified by X__ipw2100_tx_send_data() | 109 | HEAD modified by ipw2100_tx_send_data() |
110 | 110 | ||
111 | msg_free_list : Holds pre-allocated Msg (Command) buffers | 111 | msg_free_list : Holds pre-allocated Msg (Command) buffers |
112 | TAIL modified in __ipw2100_tx_process() | 112 | TAIL modified in __ipw2100_tx_process() |
@@ -114,7 +114,7 @@ that protects the following: | |||
114 | 114 | ||
115 | msg_pend_list : Holds used Msg buffers waiting to go into the TBD ring | 115 | msg_pend_list : Holds used Msg buffers waiting to go into the TBD ring |
116 | TAIL modified in ipw2100_hw_send_command() | 116 | TAIL modified in ipw2100_hw_send_command() |
117 | HEAD modified in X__ipw2100_tx_send_commands() | 117 | HEAD modified in ipw2100_tx_send_commands() |
118 | 118 | ||
119 | The flow of data on the TX side is as follows: | 119 | The flow of data on the TX side is as follows: |
120 | 120 | ||
@@ -207,7 +207,20 @@ MODULE_PARM_DESC(channel, "channel"); | |||
207 | MODULE_PARM_DESC(associate, "auto associate when scanning (default on)"); | 207 | MODULE_PARM_DESC(associate, "auto associate when scanning (default on)"); |
208 | MODULE_PARM_DESC(disable, "manually disable the radio (default 0 [radio on])"); | 208 | MODULE_PARM_DESC(disable, "manually disable the radio (default 0 [radio on])"); |
209 | 209 | ||
210 | u32 ipw2100_debug_level = IPW_DL_NONE; | 210 | static u32 ipw2100_debug_level = IPW_DL_NONE; |
211 | |||
212 | #ifdef CONFIG_IPW_DEBUG | ||
213 | #define IPW_DEBUG(level, message...) \ | ||
214 | do { \ | ||
215 | if (ipw2100_debug_level & (level)) { \ | ||
216 | printk(KERN_DEBUG "ipw2100: %c %s ", \ | ||
217 | in_interrupt() ? 'I' : 'U', __FUNCTION__); \ | ||
218 | printk(message); \ | ||
219 | } \ | ||
220 | } while (0) | ||
221 | #else | ||
222 | #define IPW_DEBUG(level, message...) do {} while (0) | ||
223 | #endif /* CONFIG_IPW_DEBUG */ | ||
211 | 224 | ||
212 | #ifdef CONFIG_IPW_DEBUG | 225 | #ifdef CONFIG_IPW_DEBUG |
213 | static const char *command_types[] = { | 226 | static const char *command_types[] = { |
@@ -287,14 +300,30 @@ static const char *command_types[] = { | |||
287 | 300 | ||
288 | 301 | ||
289 | /* Pre-decl until we get the code solid and then we can clean it up */ | 302 | /* Pre-decl until we get the code solid and then we can clean it up */ |
290 | static void X__ipw2100_tx_send_commands(struct ipw2100_priv *priv); | 303 | static void ipw2100_tx_send_commands(struct ipw2100_priv *priv); |
291 | static void X__ipw2100_tx_send_data(struct ipw2100_priv *priv); | 304 | static void ipw2100_tx_send_data(struct ipw2100_priv *priv); |
292 | static int ipw2100_adapter_setup(struct ipw2100_priv *priv); | 305 | static int ipw2100_adapter_setup(struct ipw2100_priv *priv); |
293 | 306 | ||
294 | static void ipw2100_queues_initialize(struct ipw2100_priv *priv); | 307 | static void ipw2100_queues_initialize(struct ipw2100_priv *priv); |
295 | static void ipw2100_queues_free(struct ipw2100_priv *priv); | 308 | static void ipw2100_queues_free(struct ipw2100_priv *priv); |
296 | static int ipw2100_queues_allocate(struct ipw2100_priv *priv); | 309 | static int ipw2100_queues_allocate(struct ipw2100_priv *priv); |
297 | 310 | ||
311 | static int ipw2100_fw_download(struct ipw2100_priv *priv, | ||
312 | struct ipw2100_fw *fw); | ||
313 | static int ipw2100_get_firmware(struct ipw2100_priv *priv, | ||
314 | struct ipw2100_fw *fw); | ||
315 | static int ipw2100_get_fwversion(struct ipw2100_priv *priv, char *buf, | ||
316 | size_t max); | ||
317 | static int ipw2100_get_ucodeversion(struct ipw2100_priv *priv, char *buf, | ||
318 | size_t max); | ||
319 | static void ipw2100_release_firmware(struct ipw2100_priv *priv, | ||
320 | struct ipw2100_fw *fw); | ||
321 | static int ipw2100_ucode_download(struct ipw2100_priv *priv, | ||
322 | struct ipw2100_fw *fw); | ||
323 | static void ipw2100_wx_event_work(struct ipw2100_priv *priv); | ||
324 | static struct iw_statistics *ipw2100_wx_wireless_stats(struct net_device * dev); | ||
325 | static struct iw_handler_def ipw2100_wx_handler_def; | ||
326 | |||
298 | 327 | ||
299 | static inline void read_register(struct net_device *dev, u32 reg, u32 *val) | 328 | static inline void read_register(struct net_device *dev, u32 reg, u32 *val) |
300 | { | 329 | { |
@@ -473,8 +502,8 @@ static inline int ipw2100_hw_is_adapter_in_system(struct net_device *dev) | |||
473 | == IPW_DATA_DOA_DEBUG_VALUE)); | 502 | == IPW_DATA_DOA_DEBUG_VALUE)); |
474 | } | 503 | } |
475 | 504 | ||
476 | int ipw2100_get_ordinal(struct ipw2100_priv *priv, u32 ord, | 505 | static int ipw2100_get_ordinal(struct ipw2100_priv *priv, u32 ord, |
477 | void *val, u32 *len) | 506 | void *val, u32 *len) |
478 | { | 507 | { |
479 | struct ipw2100_ordinals *ordinals = &priv->ordinals; | 508 | struct ipw2100_ordinals *ordinals = &priv->ordinals; |
480 | u32 addr; | 509 | u32 addr; |
@@ -484,7 +513,7 @@ int ipw2100_get_ordinal(struct ipw2100_priv *priv, u32 ord, | |||
484 | u32 total_length; | 513 | u32 total_length; |
485 | 514 | ||
486 | if (ordinals->table1_addr == 0) { | 515 | if (ordinals->table1_addr == 0) { |
487 | IPW_DEBUG_WARNING(DRV_NAME ": attempt to use fw ordinals " | 516 | printk(KERN_WARNING DRV_NAME ": attempt to use fw ordinals " |
488 | "before they have been loaded.\n"); | 517 | "before they have been loaded.\n"); |
489 | return -EINVAL; | 518 | return -EINVAL; |
490 | } | 519 | } |
@@ -493,7 +522,7 @@ int ipw2100_get_ordinal(struct ipw2100_priv *priv, u32 ord, | |||
493 | if (*len < IPW_ORD_TAB_1_ENTRY_SIZE) { | 522 | if (*len < IPW_ORD_TAB_1_ENTRY_SIZE) { |
494 | *len = IPW_ORD_TAB_1_ENTRY_SIZE; | 523 | *len = IPW_ORD_TAB_1_ENTRY_SIZE; |
495 | 524 | ||
496 | IPW_DEBUG_WARNING(DRV_NAME | 525 | printk(KERN_WARNING DRV_NAME |
497 | ": ordinal buffer length too small, need %zd\n", | 526 | ": ordinal buffer length too small, need %zd\n", |
498 | IPW_ORD_TAB_1_ENTRY_SIZE); | 527 | IPW_ORD_TAB_1_ENTRY_SIZE); |
499 | 528 | ||
@@ -546,7 +575,7 @@ int ipw2100_get_ordinal(struct ipw2100_priv *priv, u32 ord, | |||
546 | return 0; | 575 | return 0; |
547 | } | 576 | } |
548 | 577 | ||
549 | IPW_DEBUG_WARNING(DRV_NAME ": ordinal %d neither in table 1 nor " | 578 | printk(KERN_WARNING DRV_NAME ": ordinal %d neither in table 1 nor " |
550 | "in table 2\n", ord); | 579 | "in table 2\n", ord); |
551 | 580 | ||
552 | return -EINVAL; | 581 | return -EINVAL; |
@@ -736,8 +765,8 @@ static int ipw2100_hw_send_command(struct ipw2100_priv *priv, | |||
736 | list_add_tail(element, &priv->msg_pend_list); | 765 | list_add_tail(element, &priv->msg_pend_list); |
737 | INC_STAT(&priv->msg_pend_stat); | 766 | INC_STAT(&priv->msg_pend_stat); |
738 | 767 | ||
739 | X__ipw2100_tx_send_commands(priv); | 768 | ipw2100_tx_send_commands(priv); |
740 | X__ipw2100_tx_send_data(priv); | 769 | ipw2100_tx_send_data(priv); |
741 | 770 | ||
742 | spin_unlock_irqrestore(&priv->low_lock, flags); | 771 | spin_unlock_irqrestore(&priv->low_lock, flags); |
743 | 772 | ||
@@ -761,7 +790,7 @@ static int ipw2100_hw_send_command(struct ipw2100_priv *priv, | |||
761 | } | 790 | } |
762 | 791 | ||
763 | if (priv->fatal_error) { | 792 | if (priv->fatal_error) { |
764 | IPW_DEBUG_WARNING("%s: firmware fatal error\n", | 793 | printk(KERN_WARNING DRV_NAME ": %s: firmware fatal error\n", |
765 | priv->net_dev->name); | 794 | priv->net_dev->name); |
766 | return -EIO; | 795 | return -EIO; |
767 | } | 796 | } |
@@ -999,7 +1028,7 @@ static int ipw2100_download_firmware(struct ipw2100_priv *priv) | |||
999 | /* load microcode */ | 1028 | /* load microcode */ |
1000 | err = ipw2100_ucode_download(priv, &ipw2100_firmware); | 1029 | err = ipw2100_ucode_download(priv, &ipw2100_firmware); |
1001 | if (err) { | 1030 | if (err) { |
1002 | IPW_DEBUG_ERROR("%s: Error loading microcode: %d\n", | 1031 | printk(KERN_ERR DRV_NAME ": %s: Error loading microcode: %d\n", |
1003 | priv->net_dev->name, err); | 1032 | priv->net_dev->name, err); |
1004 | goto fail; | 1033 | goto fail; |
1005 | } | 1034 | } |
@@ -1012,7 +1041,7 @@ static int ipw2100_download_firmware(struct ipw2100_priv *priv) | |||
1012 | /* s/w reset and clock stabilization (again!!!) */ | 1041 | /* s/w reset and clock stabilization (again!!!) */ |
1013 | err = sw_reset_and_clock(priv); | 1042 | err = sw_reset_and_clock(priv); |
1014 | if (err) { | 1043 | if (err) { |
1015 | IPW_DEBUG_ERROR("%s: sw_reset_and_clock failed: %d\n", | 1044 | printk(KERN_ERR DRV_NAME ": %s: sw_reset_and_clock failed: %d\n", |
1016 | priv->net_dev->name, err); | 1045 | priv->net_dev->name, err); |
1017 | goto fail; | 1046 | goto fail; |
1018 | } | 1047 | } |
@@ -1206,7 +1235,7 @@ static int ipw2100_start_adapter(struct ipw2100_priv *priv) | |||
1206 | * fw & dino ucode | 1235 | * fw & dino ucode |
1207 | */ | 1236 | */ |
1208 | if (ipw2100_download_firmware(priv)) { | 1237 | if (ipw2100_download_firmware(priv)) { |
1209 | IPW_DEBUG_ERROR("%s: Failed to power on the adapter.\n", | 1238 | printk(KERN_ERR DRV_NAME ": %s: Failed to power on the adapter.\n", |
1210 | priv->net_dev->name); | 1239 | priv->net_dev->name); |
1211 | return -EIO; | 1240 | return -EIO; |
1212 | } | 1241 | } |
@@ -1266,7 +1295,7 @@ static int ipw2100_start_adapter(struct ipw2100_priv *priv) | |||
1266 | i ? "SUCCESS" : "FAILED"); | 1295 | i ? "SUCCESS" : "FAILED"); |
1267 | 1296 | ||
1268 | if (!i) { | 1297 | if (!i) { |
1269 | IPW_DEBUG_WARNING("%s: Firmware did not initialize.\n", | 1298 | printk(KERN_WARNING DRV_NAME ": %s: Firmware did not initialize.\n", |
1270 | priv->net_dev->name); | 1299 | priv->net_dev->name); |
1271 | return -EIO; | 1300 | return -EIO; |
1272 | } | 1301 | } |
@@ -1462,7 +1491,7 @@ static int ipw2100_hw_stop_adapter(struct ipw2100_priv *priv) | |||
1462 | 1491 | ||
1463 | err = ipw2100_hw_phy_off(priv); | 1492 | err = ipw2100_hw_phy_off(priv); |
1464 | if (err) | 1493 | if (err) |
1465 | IPW_DEBUG_WARNING("Error disabling radio %d\n", err); | 1494 | printk(KERN_WARNING DRV_NAME ": Error disabling radio %d\n", err); |
1466 | 1495 | ||
1467 | /* | 1496 | /* |
1468 | * If in D0-standby mode going directly to D3 may cause a | 1497 | * If in D0-standby mode going directly to D3 may cause a |
@@ -1488,7 +1517,7 @@ static int ipw2100_hw_stop_adapter(struct ipw2100_priv *priv) | |||
1488 | 1517 | ||
1489 | err = ipw2100_hw_send_command(priv, &cmd); | 1518 | err = ipw2100_hw_send_command(priv, &cmd); |
1490 | if (err) | 1519 | if (err) |
1491 | IPW_DEBUG_WARNING( | 1520 | printk(KERN_WARNING DRV_NAME ": " |
1492 | "%s: Power down command failed: Error %d\n", | 1521 | "%s: Power down command failed: Error %d\n", |
1493 | priv->net_dev->name, err); | 1522 | priv->net_dev->name, err); |
1494 | else { | 1523 | else { |
@@ -1529,7 +1558,7 @@ static int ipw2100_hw_stop_adapter(struct ipw2100_priv *priv) | |||
1529 | } | 1558 | } |
1530 | 1559 | ||
1531 | if (i == 0) | 1560 | if (i == 0) |
1532 | IPW_DEBUG_WARNING(DRV_NAME | 1561 | printk(KERN_WARNING DRV_NAME |
1533 | ": %s: Could now power down adapter.\n", | 1562 | ": %s: Could now power down adapter.\n", |
1534 | priv->net_dev->name); | 1563 | priv->net_dev->name); |
1535 | 1564 | ||
@@ -1569,13 +1598,13 @@ static int ipw2100_disable_adapter(struct ipw2100_priv *priv) | |||
1569 | 1598 | ||
1570 | err = ipw2100_hw_send_command(priv, &cmd); | 1599 | err = ipw2100_hw_send_command(priv, &cmd); |
1571 | if (err) { | 1600 | if (err) { |
1572 | IPW_DEBUG_WARNING("exit - failed to send CARD_DISABLE command\n"); | 1601 | printk(KERN_WARNING DRV_NAME ": exit - failed to send CARD_DISABLE command\n"); |
1573 | goto fail_up; | 1602 | goto fail_up; |
1574 | } | 1603 | } |
1575 | 1604 | ||
1576 | err = ipw2100_wait_for_card_state(priv, IPW_HW_STATE_DISABLED); | 1605 | err = ipw2100_wait_for_card_state(priv, IPW_HW_STATE_DISABLED); |
1577 | if (err) { | 1606 | if (err) { |
1578 | IPW_DEBUG_WARNING("exit - card failed to change to DISABLED\n"); | 1607 | printk(KERN_WARNING DRV_NAME ": exit - card failed to change to DISABLED\n"); |
1579 | goto fail_up; | 1608 | goto fail_up; |
1580 | } | 1609 | } |
1581 | 1610 | ||
@@ -1586,7 +1615,7 @@ fail_up: | |||
1586 | return err; | 1615 | return err; |
1587 | } | 1616 | } |
1588 | 1617 | ||
1589 | int ipw2100_set_scan_options(struct ipw2100_priv *priv) | 1618 | static int ipw2100_set_scan_options(struct ipw2100_priv *priv) |
1590 | { | 1619 | { |
1591 | struct host_command cmd = { | 1620 | struct host_command cmd = { |
1592 | .host_command = SET_SCAN_OPTIONS, | 1621 | .host_command = SET_SCAN_OPTIONS, |
@@ -1618,7 +1647,7 @@ int ipw2100_set_scan_options(struct ipw2100_priv *priv) | |||
1618 | return err; | 1647 | return err; |
1619 | } | 1648 | } |
1620 | 1649 | ||
1621 | int ipw2100_start_scan(struct ipw2100_priv *priv) | 1650 | static int ipw2100_start_scan(struct ipw2100_priv *priv) |
1622 | { | 1651 | { |
1623 | struct host_command cmd = { | 1652 | struct host_command cmd = { |
1624 | .host_command = BROADCAST_SCAN, | 1653 | .host_command = BROADCAST_SCAN, |
@@ -1685,7 +1714,7 @@ static int ipw2100_up(struct ipw2100_priv *priv, int deferred) | |||
1685 | (priv->status & STATUS_RESET_PENDING)) { | 1714 | (priv->status & STATUS_RESET_PENDING)) { |
1686 | /* Power cycle the card ... */ | 1715 | /* Power cycle the card ... */ |
1687 | if (ipw2100_power_cycle_adapter(priv)) { | 1716 | if (ipw2100_power_cycle_adapter(priv)) { |
1688 | IPW_DEBUG_WARNING("%s: Could not cycle adapter.\n", | 1717 | printk(KERN_WARNING DRV_NAME ": %s: Could not cycle adapter.\n", |
1689 | priv->net_dev->name); | 1718 | priv->net_dev->name); |
1690 | rc = 1; | 1719 | rc = 1; |
1691 | goto exit; | 1720 | goto exit; |
@@ -1695,7 +1724,7 @@ static int ipw2100_up(struct ipw2100_priv *priv, int deferred) | |||
1695 | 1724 | ||
1696 | /* Load the firmware, start the clocks, etc. */ | 1725 | /* Load the firmware, start the clocks, etc. */ |
1697 | if (ipw2100_start_adapter(priv)) { | 1726 | if (ipw2100_start_adapter(priv)) { |
1698 | IPW_DEBUG_ERROR("%s: Failed to start the firmware.\n", | 1727 | printk(KERN_ERR DRV_NAME ": %s: Failed to start the firmware.\n", |
1699 | priv->net_dev->name); | 1728 | priv->net_dev->name); |
1700 | rc = 1; | 1729 | rc = 1; |
1701 | goto exit; | 1730 | goto exit; |
@@ -1705,7 +1734,7 @@ static int ipw2100_up(struct ipw2100_priv *priv, int deferred) | |||
1705 | 1734 | ||
1706 | /* Determine capabilities of this particular HW configuration */ | 1735 | /* Determine capabilities of this particular HW configuration */ |
1707 | if (ipw2100_get_hw_features(priv)) { | 1736 | if (ipw2100_get_hw_features(priv)) { |
1708 | IPW_DEBUG_ERROR("%s: Failed to determine HW features.\n", | 1737 | printk(KERN_ERR DRV_NAME ": %s: Failed to determine HW features.\n", |
1709 | priv->net_dev->name); | 1738 | priv->net_dev->name); |
1710 | rc = 1; | 1739 | rc = 1; |
1711 | goto exit; | 1740 | goto exit; |
@@ -1713,7 +1742,7 @@ static int ipw2100_up(struct ipw2100_priv *priv, int deferred) | |||
1713 | 1742 | ||
1714 | lock = LOCK_NONE; | 1743 | lock = LOCK_NONE; |
1715 | if (ipw2100_set_ordinal(priv, IPW_ORD_PERS_DB_LOCK, &lock, &ord_len)) { | 1744 | if (ipw2100_set_ordinal(priv, IPW_ORD_PERS_DB_LOCK, &lock, &ord_len)) { |
1716 | IPW_DEBUG_ERROR("%s: Failed to clear ordinal lock.\n", | 1745 | printk(KERN_ERR DRV_NAME ": %s: Failed to clear ordinal lock.\n", |
1717 | priv->net_dev->name); | 1746 | priv->net_dev->name); |
1718 | rc = 1; | 1747 | rc = 1; |
1719 | goto exit; | 1748 | goto exit; |
@@ -1739,7 +1768,7 @@ static int ipw2100_up(struct ipw2100_priv *priv, int deferred) | |||
1739 | /* Send all of the commands that must be sent prior to | 1768 | /* Send all of the commands that must be sent prior to |
1740 | * HOST_COMPLETE */ | 1769 | * HOST_COMPLETE */ |
1741 | if (ipw2100_adapter_setup(priv)) { | 1770 | if (ipw2100_adapter_setup(priv)) { |
1742 | IPW_DEBUG_ERROR("%s: Failed to start the card.\n", | 1771 | printk(KERN_ERR DRV_NAME ": %s: Failed to start the card.\n", |
1743 | priv->net_dev->name); | 1772 | priv->net_dev->name); |
1744 | rc = 1; | 1773 | rc = 1; |
1745 | goto exit; | 1774 | goto exit; |
@@ -1748,7 +1777,7 @@ static int ipw2100_up(struct ipw2100_priv *priv, int deferred) | |||
1748 | if (!deferred) { | 1777 | if (!deferred) { |
1749 | /* Enable the adapter - sends HOST_COMPLETE */ | 1778 | /* Enable the adapter - sends HOST_COMPLETE */ |
1750 | if (ipw2100_enable_adapter(priv)) { | 1779 | if (ipw2100_enable_adapter(priv)) { |
1751 | IPW_DEBUG_ERROR( | 1780 | printk(KERN_ERR DRV_NAME ": " |
1752 | "%s: failed in call to enable adapter.\n", | 1781 | "%s: failed in call to enable adapter.\n", |
1753 | priv->net_dev->name); | 1782 | priv->net_dev->name); |
1754 | ipw2100_hw_stop_adapter(priv); | 1783 | ipw2100_hw_stop_adapter(priv); |
@@ -1806,7 +1835,7 @@ static void ipw2100_down(struct ipw2100_priv *priv) | |||
1806 | spin_unlock_irqrestore(&priv->low_lock, flags); | 1835 | spin_unlock_irqrestore(&priv->low_lock, flags); |
1807 | 1836 | ||
1808 | if (ipw2100_hw_stop_adapter(priv)) | 1837 | if (ipw2100_hw_stop_adapter(priv)) |
1809 | IPW_DEBUG_ERROR("%s: Error stopping adapter.\n", | 1838 | printk(KERN_ERR DRV_NAME ": %s: Error stopping adapter.\n", |
1810 | priv->net_dev->name); | 1839 | priv->net_dev->name); |
1811 | 1840 | ||
1812 | /* Do not disable the interrupt until _after_ we disable | 1841 | /* Do not disable the interrupt until _after_ we disable |
@@ -1833,7 +1862,7 @@ static void ipw2100_down(struct ipw2100_priv *priv) | |||
1833 | netif_stop_queue(priv->net_dev); | 1862 | netif_stop_queue(priv->net_dev); |
1834 | } | 1863 | } |
1835 | 1864 | ||
1836 | void ipw2100_reset_adapter(struct ipw2100_priv *priv) | 1865 | static void ipw2100_reset_adapter(struct ipw2100_priv *priv) |
1837 | { | 1866 | { |
1838 | unsigned long flags; | 1867 | unsigned long flags; |
1839 | union iwreq_data wrqu = { | 1868 | union iwreq_data wrqu = { |
@@ -1963,8 +1992,8 @@ static void isr_indicate_associated(struct ipw2100_priv *priv, u32 status) | |||
1963 | } | 1992 | } |
1964 | 1993 | ||
1965 | 1994 | ||
1966 | int ipw2100_set_essid(struct ipw2100_priv *priv, char *essid, | 1995 | static int ipw2100_set_essid(struct ipw2100_priv *priv, char *essid, |
1967 | int length, int batch_mode) | 1996 | int length, int batch_mode) |
1968 | { | 1997 | { |
1969 | int ssid_len = min(length, IW_ESSID_MAX_SIZE); | 1998 | int ssid_len = min(length, IW_ESSID_MAX_SIZE); |
1970 | struct host_command cmd = { | 1999 | struct host_command cmd = { |
@@ -2095,7 +2124,7 @@ static void isr_indicate_scanning(struct ipw2100_priv *priv, u32 status) | |||
2095 | priv->status |= STATUS_SCANNING; | 2124 | priv->status |= STATUS_SCANNING; |
2096 | } | 2125 | } |
2097 | 2126 | ||
2098 | const struct ipw2100_status_indicator status_handlers[] = { | 2127 | static const struct ipw2100_status_indicator status_handlers[] = { |
2099 | IPW2100_HANDLER(IPW_STATE_INITIALIZED, 0), | 2128 | IPW2100_HANDLER(IPW_STATE_INITIALIZED, 0), |
2100 | IPW2100_HANDLER(IPW_STATE_COUNTRY_FOUND, 0), | 2129 | IPW2100_HANDLER(IPW_STATE_COUNTRY_FOUND, 0), |
2101 | IPW2100_HANDLER(IPW_STATE_ASSOCIATED, isr_indicate_associated), | 2130 | IPW2100_HANDLER(IPW_STATE_ASSOCIATED, isr_indicate_associated), |
@@ -2163,7 +2192,7 @@ static void isr_rx_complete_command( | |||
2163 | } | 2192 | } |
2164 | 2193 | ||
2165 | #ifdef CONFIG_IPW_DEBUG | 2194 | #ifdef CONFIG_IPW_DEBUG |
2166 | const char *frame_types[] = { | 2195 | static const char *frame_types[] = { |
2167 | "COMMAND_STATUS_VAL", | 2196 | "COMMAND_STATUS_VAL", |
2168 | "STATUS_CHANGE_VAL", | 2197 | "STATUS_CHANGE_VAL", |
2169 | "P80211_DATA_VAL", | 2198 | "P80211_DATA_VAL", |
@@ -2283,7 +2312,7 @@ static inline u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 *in_buf, | |||
2283 | * | 2312 | * |
2284 | */ | 2313 | */ |
2285 | #ifdef CONFIG_IPW2100_RX_DEBUG | 2314 | #ifdef CONFIG_IPW2100_RX_DEBUG |
2286 | u8 packet_data[IPW_RX_NIC_BUFFER_LENGTH]; | 2315 | static u8 packet_data[IPW_RX_NIC_BUFFER_LENGTH]; |
2287 | #endif | 2316 | #endif |
2288 | 2317 | ||
2289 | static inline void ipw2100_corruption_detected(struct ipw2100_priv *priv, | 2318 | static inline void ipw2100_corruption_detected(struct ipw2100_priv *priv, |
@@ -2413,7 +2442,7 @@ static inline void isr_rx(struct ipw2100_priv *priv, int i, | |||
2413 | 2442 | ||
2414 | /* We need to allocate a new SKB and attach it to the RDB. */ | 2443 | /* We need to allocate a new SKB and attach it to the RDB. */ |
2415 | if (unlikely(ipw2100_alloc_skb(priv, packet))) { | 2444 | if (unlikely(ipw2100_alloc_skb(priv, packet))) { |
2416 | IPW_DEBUG_WARNING( | 2445 | printk(KERN_WARNING DRV_NAME ": " |
2417 | "%s: Unable to allocate SKB onto RBD ring - disabling " | 2446 | "%s: Unable to allocate SKB onto RBD ring - disabling " |
2418 | "adapter.\n", priv->net_dev->name); | 2447 | "adapter.\n", priv->net_dev->name); |
2419 | /* TODO: schedule adapter shutdown */ | 2448 | /* TODO: schedule adapter shutdown */ |
@@ -2675,7 +2704,7 @@ static inline int __ipw2100_tx_process(struct ipw2100_priv *priv) | |||
2675 | break; | 2704 | break; |
2676 | 2705 | ||
2677 | default: | 2706 | default: |
2678 | IPW_DEBUG_WARNING("%s: Bad fw_pend_list entry!\n", | 2707 | printk(KERN_WARNING DRV_NAME ": %s: Bad fw_pend_list entry!\n", |
2679 | priv->net_dev->name); | 2708 | priv->net_dev->name); |
2680 | return 0; | 2709 | return 0; |
2681 | } | 2710 | } |
@@ -2689,7 +2718,7 @@ static inline int __ipw2100_tx_process(struct ipw2100_priv *priv) | |||
2689 | read_register(priv->net_dev, IPW_MEM_HOST_SHARED_TX_QUEUE_WRITE_INDEX, | 2718 | read_register(priv->net_dev, IPW_MEM_HOST_SHARED_TX_QUEUE_WRITE_INDEX, |
2690 | &w); | 2719 | &w); |
2691 | if (w != txq->next) | 2720 | if (w != txq->next) |
2692 | IPW_DEBUG_WARNING("%s: write index mismatch\n", | 2721 | printk(KERN_WARNING DRV_NAME ": %s: write index mismatch\n", |
2693 | priv->net_dev->name); | 2722 | priv->net_dev->name); |
2694 | 2723 | ||
2695 | /* | 2724 | /* |
@@ -2750,7 +2779,7 @@ static inline int __ipw2100_tx_process(struct ipw2100_priv *priv) | |||
2750 | switch (packet->type) { | 2779 | switch (packet->type) { |
2751 | case DATA: | 2780 | case DATA: |
2752 | if (txq->drv[txq->oldest].status.info.fields.txType != 0) | 2781 | if (txq->drv[txq->oldest].status.info.fields.txType != 0) |
2753 | IPW_DEBUG_WARNING("%s: Queue mismatch. " | 2782 | printk(KERN_WARNING DRV_NAME ": %s: Queue mismatch. " |
2754 | "Expecting DATA TBD but pulled " | 2783 | "Expecting DATA TBD but pulled " |
2755 | "something else: ids %d=%d.\n", | 2784 | "something else: ids %d=%d.\n", |
2756 | priv->net_dev->name, txq->oldest, packet->index); | 2785 | priv->net_dev->name, txq->oldest, packet->index); |
@@ -2797,7 +2826,7 @@ static inline int __ipw2100_tx_process(struct ipw2100_priv *priv) | |||
2797 | 2826 | ||
2798 | case COMMAND: | 2827 | case COMMAND: |
2799 | if (txq->drv[txq->oldest].status.info.fields.txType != 1) | 2828 | if (txq->drv[txq->oldest].status.info.fields.txType != 1) |
2800 | IPW_DEBUG_WARNING("%s: Queue mismatch. " | 2829 | printk(KERN_WARNING DRV_NAME ": %s: Queue mismatch. " |
2801 | "Expecting COMMAND TBD but pulled " | 2830 | "Expecting COMMAND TBD but pulled " |
2802 | "something else: ids %d=%d.\n", | 2831 | "something else: ids %d=%d.\n", |
2803 | priv->net_dev->name, txq->oldest, packet->index); | 2832 | priv->net_dev->name, txq->oldest, packet->index); |
@@ -2837,14 +2866,14 @@ static inline void __ipw2100_tx_complete(struct ipw2100_priv *priv) | |||
2837 | while (__ipw2100_tx_process(priv) && i < 200) i++; | 2866 | while (__ipw2100_tx_process(priv) && i < 200) i++; |
2838 | 2867 | ||
2839 | if (i == 200) { | 2868 | if (i == 200) { |
2840 | IPW_DEBUG_WARNING( | 2869 | printk(KERN_WARNING DRV_NAME ": " |
2841 | "%s: Driver is running slow (%d iters).\n", | 2870 | "%s: Driver is running slow (%d iters).\n", |
2842 | priv->net_dev->name, i); | 2871 | priv->net_dev->name, i); |
2843 | } | 2872 | } |
2844 | } | 2873 | } |
2845 | 2874 | ||
2846 | 2875 | ||
2847 | static void X__ipw2100_tx_send_commands(struct ipw2100_priv *priv) | 2876 | static void ipw2100_tx_send_commands(struct ipw2100_priv *priv) |
2848 | { | 2877 | { |
2849 | struct list_head *element; | 2878 | struct list_head *element; |
2850 | struct ipw2100_tx_packet *packet; | 2879 | struct ipw2100_tx_packet *packet; |
@@ -2912,10 +2941,10 @@ static void X__ipw2100_tx_send_commands(struct ipw2100_priv *priv) | |||
2912 | 2941 | ||
2913 | 2942 | ||
2914 | /* | 2943 | /* |
2915 | * X__ipw2100_tx_send_data | 2944 | * ipw2100_tx_send_data |
2916 | * | 2945 | * |
2917 | */ | 2946 | */ |
2918 | static void X__ipw2100_tx_send_data(struct ipw2100_priv *priv) | 2947 | static void ipw2100_tx_send_data(struct ipw2100_priv *priv) |
2919 | { | 2948 | { |
2920 | struct list_head *element; | 2949 | struct list_head *element; |
2921 | struct ipw2100_tx_packet *packet; | 2950 | struct ipw2100_tx_packet *packet; |
@@ -3081,7 +3110,7 @@ static void ipw2100_irq_tasklet(struct ipw2100_priv *priv) | |||
3081 | (unsigned long)inta & IPW_INTERRUPT_MASK); | 3110 | (unsigned long)inta & IPW_INTERRUPT_MASK); |
3082 | 3111 | ||
3083 | if (inta & IPW2100_INTA_FATAL_ERROR) { | 3112 | if (inta & IPW2100_INTA_FATAL_ERROR) { |
3084 | IPW_DEBUG_WARNING(DRV_NAME | 3113 | printk(KERN_WARNING DRV_NAME |
3085 | ": Fatal interrupt. Scheduling firmware restart.\n"); | 3114 | ": Fatal interrupt. Scheduling firmware restart.\n"); |
3086 | priv->inta_other++; | 3115 | priv->inta_other++; |
3087 | write_register( | 3116 | write_register( |
@@ -3101,7 +3130,7 @@ static void ipw2100_irq_tasklet(struct ipw2100_priv *priv) | |||
3101 | } | 3130 | } |
3102 | 3131 | ||
3103 | if (inta & IPW2100_INTA_PARITY_ERROR) { | 3132 | if (inta & IPW2100_INTA_PARITY_ERROR) { |
3104 | IPW_DEBUG_ERROR("***** PARITY ERROR INTERRUPT !!!! \n"); | 3133 | printk(KERN_ERR DRV_NAME ": ***** PARITY ERROR INTERRUPT !!!! \n"); |
3105 | priv->inta_other++; | 3134 | priv->inta_other++; |
3106 | write_register( | 3135 | write_register( |
3107 | dev, IPW_REG_INTA, | 3136 | dev, IPW_REG_INTA, |
@@ -3130,8 +3159,8 @@ static void ipw2100_irq_tasklet(struct ipw2100_priv *priv) | |||
3130 | IPW2100_INTA_TX_TRANSFER); | 3159 | IPW2100_INTA_TX_TRANSFER); |
3131 | 3160 | ||
3132 | __ipw2100_tx_complete(priv); | 3161 | __ipw2100_tx_complete(priv); |
3133 | X__ipw2100_tx_send_commands(priv); | 3162 | ipw2100_tx_send_commands(priv); |
3134 | X__ipw2100_tx_send_data(priv); | 3163 | ipw2100_tx_send_data(priv); |
3135 | } | 3164 | } |
3136 | 3165 | ||
3137 | if (inta & IPW2100_INTA_TX_COMPLETE) { | 3166 | if (inta & IPW2100_INTA_TX_COMPLETE) { |
@@ -3219,7 +3248,7 @@ static irqreturn_t ipw2100_interrupt(int irq, void *data, | |||
3219 | 3248 | ||
3220 | if (inta == 0xFFFFFFFF) { | 3249 | if (inta == 0xFFFFFFFF) { |
3221 | /* Hardware disappeared */ | 3250 | /* Hardware disappeared */ |
3222 | IPW_DEBUG_WARNING("IRQ INTA == 0xFFFFFFFF\n"); | 3251 | printk(KERN_WARNING DRV_NAME ": IRQ INTA == 0xFFFFFFFF\n"); |
3223 | goto none; | 3252 | goto none; |
3224 | } | 3253 | } |
3225 | 3254 | ||
@@ -3282,7 +3311,7 @@ static int ipw2100_tx(struct ieee80211_txb *txb, struct net_device *dev) | |||
3282 | list_add_tail(element, &priv->tx_pend_list); | 3311 | list_add_tail(element, &priv->tx_pend_list); |
3283 | INC_STAT(&priv->tx_pend_stat); | 3312 | INC_STAT(&priv->tx_pend_stat); |
3284 | 3313 | ||
3285 | X__ipw2100_tx_send_data(priv); | 3314 | ipw2100_tx_send_data(priv); |
3286 | 3315 | ||
3287 | spin_unlock_irqrestore(&priv->low_lock, flags); | 3316 | spin_unlock_irqrestore(&priv->low_lock, flags); |
3288 | return 0; | 3317 | return 0; |
@@ -3304,7 +3333,7 @@ static int ipw2100_msg_allocate(struct ipw2100_priv *priv) | |||
3304 | IPW_COMMAND_POOL_SIZE * sizeof(struct ipw2100_tx_packet), | 3333 | IPW_COMMAND_POOL_SIZE * sizeof(struct ipw2100_tx_packet), |
3305 | GFP_KERNEL); | 3334 | GFP_KERNEL); |
3306 | if (!priv->msg_buffers) { | 3335 | if (!priv->msg_buffers) { |
3307 | IPW_DEBUG_ERROR("%s: PCI alloc failed for msg " | 3336 | printk(KERN_ERR DRV_NAME ": %s: PCI alloc failed for msg " |
3308 | "buffers.\n", priv->net_dev->name); | 3337 | "buffers.\n", priv->net_dev->name); |
3309 | return -ENOMEM; | 3338 | return -ENOMEM; |
3310 | } | 3339 | } |
@@ -3315,7 +3344,7 @@ static int ipw2100_msg_allocate(struct ipw2100_priv *priv) | |||
3315 | sizeof(struct ipw2100_cmd_header), | 3344 | sizeof(struct ipw2100_cmd_header), |
3316 | &p); | 3345 | &p); |
3317 | if (!v) { | 3346 | if (!v) { |
3318 | IPW_DEBUG_ERROR( | 3347 | printk(KERN_ERR DRV_NAME ": " |
3319 | "%s: PCI alloc failed for msg " | 3348 | "%s: PCI alloc failed for msg " |
3320 | "buffers.\n", | 3349 | "buffers.\n", |
3321 | priv->net_dev->name); | 3350 | priv->net_dev->name); |
@@ -3427,7 +3456,7 @@ static DEVICE_ATTR(capability, S_IRUGO, show_capability, NULL); | |||
3427 | 3456 | ||
3428 | 3457 | ||
3429 | #define IPW2100_REG(x) { IPW_ ##x, #x } | 3458 | #define IPW2100_REG(x) { IPW_ ##x, #x } |
3430 | const struct { | 3459 | static const struct { |
3431 | u32 addr; | 3460 | u32 addr; |
3432 | const char *name; | 3461 | const char *name; |
3433 | } hw_data[] = { | 3462 | } hw_data[] = { |
@@ -3438,7 +3467,7 @@ const struct { | |||
3438 | IPW2100_REG(REG_RESET_REG), | 3467 | IPW2100_REG(REG_RESET_REG), |
3439 | }; | 3468 | }; |
3440 | #define IPW2100_NIC(x, s) { x, #x, s } | 3469 | #define IPW2100_NIC(x, s) { x, #x, s } |
3441 | const struct { | 3470 | static const struct { |
3442 | u32 addr; | 3471 | u32 addr; |
3443 | const char *name; | 3472 | const char *name; |
3444 | size_t size; | 3473 | size_t size; |
@@ -3448,7 +3477,7 @@ const struct { | |||
3448 | IPW2100_NIC(0x210000, 1), | 3477 | IPW2100_NIC(0x210000, 1), |
3449 | }; | 3478 | }; |
3450 | #define IPW2100_ORD(x, d) { IPW_ORD_ ##x, #x, d } | 3479 | #define IPW2100_ORD(x, d) { IPW_ORD_ ##x, #x, d } |
3451 | const struct { | 3480 | static const struct { |
3452 | u8 index; | 3481 | u8 index; |
3453 | const char *name; | 3482 | const char *name; |
3454 | const char *desc; | 3483 | const char *desc; |
@@ -3813,7 +3842,7 @@ static ssize_t show_stats(struct device *d, struct device_attribute *attr, | |||
3813 | static DEVICE_ATTR(stats, S_IRUGO, show_stats, NULL); | 3842 | static DEVICE_ATTR(stats, S_IRUGO, show_stats, NULL); |
3814 | 3843 | ||
3815 | 3844 | ||
3816 | int ipw2100_switch_mode(struct ipw2100_priv *priv, u32 mode) | 3845 | static int ipw2100_switch_mode(struct ipw2100_priv *priv, u32 mode) |
3817 | { | 3846 | { |
3818 | int err; | 3847 | int err; |
3819 | 3848 | ||
@@ -3822,7 +3851,7 @@ int ipw2100_switch_mode(struct ipw2100_priv *priv, u32 mode) | |||
3822 | 3851 | ||
3823 | err = ipw2100_disable_adapter(priv); | 3852 | err = ipw2100_disable_adapter(priv); |
3824 | if (err) { | 3853 | if (err) { |
3825 | IPW_DEBUG_ERROR("%s: Could not disable adapter %d\n", | 3854 | printk(KERN_ERR DRV_NAME ": %s: Could not disable adapter %d\n", |
3826 | priv->net_dev->name, err); | 3855 | priv->net_dev->name, err); |
3827 | return err; | 3856 | return err; |
3828 | } | 3857 | } |
@@ -4268,7 +4297,7 @@ static int ipw2100_tx_allocate(struct ipw2100_priv *priv) | |||
4268 | TX_PENDED_QUEUE_LENGTH * sizeof(struct ipw2100_tx_packet), | 4297 | TX_PENDED_QUEUE_LENGTH * sizeof(struct ipw2100_tx_packet), |
4269 | GFP_ATOMIC); | 4298 | GFP_ATOMIC); |
4270 | if (!priv->tx_buffers) { | 4299 | if (!priv->tx_buffers) { |
4271 | IPW_DEBUG_ERROR("%s: alloc failed form tx buffers.\n", | 4300 | printk(KERN_ERR DRV_NAME ": %s: alloc failed form tx buffers.\n", |
4272 | priv->net_dev->name); | 4301 | priv->net_dev->name); |
4273 | bd_queue_free(priv, &priv->tx_queue); | 4302 | bd_queue_free(priv, &priv->tx_queue); |
4274 | return -ENOMEM; | 4303 | return -ENOMEM; |
@@ -4278,7 +4307,7 @@ static int ipw2100_tx_allocate(struct ipw2100_priv *priv) | |||
4278 | v = pci_alloc_consistent( | 4307 | v = pci_alloc_consistent( |
4279 | priv->pci_dev, sizeof(struct ipw2100_data_header), &p); | 4308 | priv->pci_dev, sizeof(struct ipw2100_data_header), &p); |
4280 | if (!v) { | 4309 | if (!v) { |
4281 | IPW_DEBUG_ERROR("%s: PCI alloc failed for tx " | 4310 | printk(KERN_ERR DRV_NAME ": %s: PCI alloc failed for tx " |
4282 | "buffers.\n", priv->net_dev->name); | 4311 | "buffers.\n", priv->net_dev->name); |
4283 | err = -ENOMEM; | 4312 | err = -ENOMEM; |
4284 | break; | 4313 | break; |
@@ -4537,7 +4566,7 @@ static int ipw2100_read_mac_address(struct ipw2100_priv *priv) | |||
4537 | * | 4566 | * |
4538 | ********************************************************************/ | 4567 | ********************************************************************/ |
4539 | 4568 | ||
4540 | int ipw2100_set_mac_address(struct ipw2100_priv *priv, int batch_mode) | 4569 | static int ipw2100_set_mac_address(struct ipw2100_priv *priv, int batch_mode) |
4541 | { | 4570 | { |
4542 | struct host_command cmd = { | 4571 | struct host_command cmd = { |
4543 | .host_command = ADAPTER_ADDRESS, | 4572 | .host_command = ADAPTER_ADDRESS, |
@@ -4564,7 +4593,7 @@ int ipw2100_set_mac_address(struct ipw2100_priv *priv, int batch_mode) | |||
4564 | return err; | 4593 | return err; |
4565 | } | 4594 | } |
4566 | 4595 | ||
4567 | int ipw2100_set_port_type(struct ipw2100_priv *priv, u32 port_type, | 4596 | static int ipw2100_set_port_type(struct ipw2100_priv *priv, u32 port_type, |
4568 | int batch_mode) | 4597 | int batch_mode) |
4569 | { | 4598 | { |
4570 | struct host_command cmd = { | 4599 | struct host_command cmd = { |
@@ -4589,7 +4618,7 @@ int ipw2100_set_port_type(struct ipw2100_priv *priv, u32 port_type, | |||
4589 | if (!batch_mode) { | 4618 | if (!batch_mode) { |
4590 | err = ipw2100_disable_adapter(priv); | 4619 | err = ipw2100_disable_adapter(priv); |
4591 | if (err) { | 4620 | if (err) { |
4592 | IPW_DEBUG_ERROR("%s: Could not disable adapter %d\n", | 4621 | printk(KERN_ERR DRV_NAME ": %s: Could not disable adapter %d\n", |
4593 | priv->net_dev->name, err); | 4622 | priv->net_dev->name, err); |
4594 | return err; | 4623 | return err; |
4595 | } | 4624 | } |
@@ -4605,7 +4634,8 @@ int ipw2100_set_port_type(struct ipw2100_priv *priv, u32 port_type, | |||
4605 | } | 4634 | } |
4606 | 4635 | ||
4607 | 4636 | ||
4608 | int ipw2100_set_channel(struct ipw2100_priv *priv, u32 channel, int batch_mode) | 4637 | static int ipw2100_set_channel(struct ipw2100_priv *priv, u32 channel, |
4638 | int batch_mode) | ||
4609 | { | 4639 | { |
4610 | struct host_command cmd = { | 4640 | struct host_command cmd = { |
4611 | .host_command = CHANNEL, | 4641 | .host_command = CHANNEL, |
@@ -4655,7 +4685,7 @@ int ipw2100_set_channel(struct ipw2100_priv *priv, u32 channel, int batch_mode) | |||
4655 | return 0; | 4685 | return 0; |
4656 | } | 4686 | } |
4657 | 4687 | ||
4658 | int ipw2100_system_config(struct ipw2100_priv *priv, int batch_mode) | 4688 | static int ipw2100_system_config(struct ipw2100_priv *priv, int batch_mode) |
4659 | { | 4689 | { |
4660 | struct host_command cmd = { | 4690 | struct host_command cmd = { |
4661 | .host_command = SYSTEM_CONFIG, | 4691 | .host_command = SYSTEM_CONFIG, |
@@ -4717,7 +4747,8 @@ int ipw2100_system_config(struct ipw2100_priv *priv, int batch_mode) | |||
4717 | return 0; | 4747 | return 0; |
4718 | } | 4748 | } |
4719 | 4749 | ||
4720 | int ipw2100_set_tx_rates(struct ipw2100_priv *priv, u32 rate, int batch_mode) | 4750 | static int ipw2100_set_tx_rates(struct ipw2100_priv *priv, u32 rate, |
4751 | int batch_mode) | ||
4721 | { | 4752 | { |
4722 | struct host_command cmd = { | 4753 | struct host_command cmd = { |
4723 | .host_command = BASIC_TX_RATES, | 4754 | .host_command = BASIC_TX_RATES, |
@@ -4756,8 +4787,8 @@ int ipw2100_set_tx_rates(struct ipw2100_priv *priv, u32 rate, int batch_mode) | |||
4756 | return 0; | 4787 | return 0; |
4757 | } | 4788 | } |
4758 | 4789 | ||
4759 | int ipw2100_set_power_mode(struct ipw2100_priv *priv, | 4790 | static int ipw2100_set_power_mode(struct ipw2100_priv *priv, |
4760 | int power_level) | 4791 | int power_level) |
4761 | { | 4792 | { |
4762 | struct host_command cmd = { | 4793 | struct host_command cmd = { |
4763 | .host_command = POWER_MODE, | 4794 | .host_command = POWER_MODE, |
@@ -4794,7 +4825,7 @@ int ipw2100_set_power_mode(struct ipw2100_priv *priv, | |||
4794 | } | 4825 | } |
4795 | 4826 | ||
4796 | 4827 | ||
4797 | int ipw2100_set_rts_threshold(struct ipw2100_priv *priv, u32 threshold) | 4828 | static int ipw2100_set_rts_threshold(struct ipw2100_priv *priv, u32 threshold) |
4798 | { | 4829 | { |
4799 | struct host_command cmd = { | 4830 | struct host_command cmd = { |
4800 | .host_command = RTS_THRESHOLD, | 4831 | .host_command = RTS_THRESHOLD, |
@@ -4858,7 +4889,7 @@ int ipw2100_set_fragmentation_threshold(struct ipw2100_priv *priv, | |||
4858 | } | 4889 | } |
4859 | #endif | 4890 | #endif |
4860 | 4891 | ||
4861 | int ipw2100_set_short_retry(struct ipw2100_priv *priv, u32 retry) | 4892 | static int ipw2100_set_short_retry(struct ipw2100_priv *priv, u32 retry) |
4862 | { | 4893 | { |
4863 | struct host_command cmd = { | 4894 | struct host_command cmd = { |
4864 | .host_command = SHORT_RETRY_LIMIT, | 4895 | .host_command = SHORT_RETRY_LIMIT, |
@@ -4878,7 +4909,7 @@ int ipw2100_set_short_retry(struct ipw2100_priv *priv, u32 retry) | |||
4878 | return 0; | 4909 | return 0; |
4879 | } | 4910 | } |
4880 | 4911 | ||
4881 | int ipw2100_set_long_retry(struct ipw2100_priv *priv, u32 retry) | 4912 | static int ipw2100_set_long_retry(struct ipw2100_priv *priv, u32 retry) |
4882 | { | 4913 | { |
4883 | struct host_command cmd = { | 4914 | struct host_command cmd = { |
4884 | .host_command = LONG_RETRY_LIMIT, | 4915 | .host_command = LONG_RETRY_LIMIT, |
@@ -4899,8 +4930,8 @@ int ipw2100_set_long_retry(struct ipw2100_priv *priv, u32 retry) | |||
4899 | } | 4930 | } |
4900 | 4931 | ||
4901 | 4932 | ||
4902 | int ipw2100_set_mandatory_bssid(struct ipw2100_priv *priv, u8 *bssid, | 4933 | static int ipw2100_set_mandatory_bssid(struct ipw2100_priv *priv, u8 *bssid, |
4903 | int batch_mode) | 4934 | int batch_mode) |
4904 | { | 4935 | { |
4905 | struct host_command cmd = { | 4936 | struct host_command cmd = { |
4906 | .host_command = MANDATORY_BSSID, | 4937 | .host_command = MANDATORY_BSSID, |
@@ -5037,11 +5068,11 @@ struct security_info_params { | |||
5037 | u8 unicast_using_group; | 5068 | u8 unicast_using_group; |
5038 | } __attribute__ ((packed)); | 5069 | } __attribute__ ((packed)); |
5039 | 5070 | ||
5040 | int ipw2100_set_security_information(struct ipw2100_priv *priv, | 5071 | static int ipw2100_set_security_information(struct ipw2100_priv *priv, |
5041 | int auth_mode, | 5072 | int auth_mode, |
5042 | int security_level, | 5073 | int security_level, |
5043 | int unicast_using_group, | 5074 | int unicast_using_group, |
5044 | int batch_mode) | 5075 | int batch_mode) |
5045 | { | 5076 | { |
5046 | struct host_command cmd = { | 5077 | struct host_command cmd = { |
5047 | .host_command = SET_SECURITY_INFORMATION, | 5078 | .host_command = SET_SECURITY_INFORMATION, |
@@ -5103,8 +5134,8 @@ int ipw2100_set_security_information(struct ipw2100_priv *priv, | |||
5103 | return err; | 5134 | return err; |
5104 | } | 5135 | } |
5105 | 5136 | ||
5106 | int ipw2100_set_tx_power(struct ipw2100_priv *priv, | 5137 | static int ipw2100_set_tx_power(struct ipw2100_priv *priv, |
5107 | u32 tx_power) | 5138 | u32 tx_power) |
5108 | { | 5139 | { |
5109 | struct host_command cmd = { | 5140 | struct host_command cmd = { |
5110 | .host_command = TX_POWER_INDEX, | 5141 | .host_command = TX_POWER_INDEX, |
@@ -5123,8 +5154,8 @@ int ipw2100_set_tx_power(struct ipw2100_priv *priv, | |||
5123 | return 0; | 5154 | return 0; |
5124 | } | 5155 | } |
5125 | 5156 | ||
5126 | int ipw2100_set_ibss_beacon_interval(struct ipw2100_priv *priv, | 5157 | static int ipw2100_set_ibss_beacon_interval(struct ipw2100_priv *priv, |
5127 | u32 interval, int batch_mode) | 5158 | u32 interval, int batch_mode) |
5128 | { | 5159 | { |
5129 | struct host_command cmd = { | 5160 | struct host_command cmd = { |
5130 | .host_command = BEACON_INTERVAL, | 5161 | .host_command = BEACON_INTERVAL, |
@@ -5208,7 +5239,7 @@ static int ipw2100_set_wep_flags(struct ipw2100_priv *priv, u32 flags, | |||
5208 | if (!batch_mode) { | 5239 | if (!batch_mode) { |
5209 | err = ipw2100_disable_adapter(priv); | 5240 | err = ipw2100_disable_adapter(priv); |
5210 | if (err) { | 5241 | if (err) { |
5211 | IPW_DEBUG_ERROR("%s: Could not disable adapter %d\n", | 5242 | printk(KERN_ERR DRV_NAME ": %s: Could not disable adapter %d\n", |
5212 | priv->net_dev->name, err); | 5243 | priv->net_dev->name, err); |
5213 | return err; | 5244 | return err; |
5214 | } | 5245 | } |
@@ -5296,7 +5327,7 @@ static int ipw2100_set_key(struct ipw2100_priv *priv, | |||
5296 | err = ipw2100_disable_adapter(priv); | 5327 | err = ipw2100_disable_adapter(priv); |
5297 | /* FIXME: IPG: shouldn't this prink be in _disable_adapter()? */ | 5328 | /* FIXME: IPG: shouldn't this prink be in _disable_adapter()? */ |
5298 | if (err) { | 5329 | if (err) { |
5299 | IPW_DEBUG_ERROR("%s: Could not disable adapter %d\n", | 5330 | printk(KERN_ERR DRV_NAME ": %s: Could not disable adapter %d\n", |
5300 | priv->net_dev->name, err); | 5331 | priv->net_dev->name, err); |
5301 | return err; | 5332 | return err; |
5302 | } | 5333 | } |
@@ -5332,7 +5363,7 @@ static int ipw2100_set_key_index(struct ipw2100_priv *priv, | |||
5332 | if (!batch_mode) { | 5363 | if (!batch_mode) { |
5333 | err = ipw2100_disable_adapter(priv); | 5364 | err = ipw2100_disable_adapter(priv); |
5334 | if (err) { | 5365 | if (err) { |
5335 | IPW_DEBUG_ERROR("%s: Could not disable adapter %d\n", | 5366 | printk(KERN_ERR DRV_NAME ": %s: Could not disable adapter %d\n", |
5336 | priv->net_dev->name, err); | 5367 | priv->net_dev->name, err); |
5337 | return err; | 5368 | return err; |
5338 | } | 5369 | } |
@@ -5654,8 +5685,10 @@ static int ipw2100_open(struct net_device *dev) | |||
5654 | IPW_DEBUG_INFO("dev->open\n"); | 5685 | IPW_DEBUG_INFO("dev->open\n"); |
5655 | 5686 | ||
5656 | spin_lock_irqsave(&priv->low_lock, flags); | 5687 | spin_lock_irqsave(&priv->low_lock, flags); |
5657 | if (priv->status & STATUS_ASSOCIATED) | 5688 | if (priv->status & STATUS_ASSOCIATED) { |
5689 | netif_carrier_on(dev); | ||
5658 | netif_start_queue(dev); | 5690 | netif_start_queue(dev); |
5691 | } | ||
5659 | spin_unlock_irqrestore(&priv->low_lock, flags); | 5692 | spin_unlock_irqrestore(&priv->low_lock, flags); |
5660 | 5693 | ||
5661 | return 0; | 5694 | return 0; |
@@ -5880,7 +5913,7 @@ static int ipw2100_wpa_set_param(struct net_device *dev, u8 name, u32 value){ | |||
5880 | break; | 5913 | break; |
5881 | 5914 | ||
5882 | default: | 5915 | default: |
5883 | IPW_DEBUG_ERROR("%s: Unknown WPA param: %d\n", | 5916 | printk(KERN_ERR DRV_NAME ": %s: Unknown WPA param: %d\n", |
5884 | dev->name, name); | 5917 | dev->name, name); |
5885 | ret = -EOPNOTSUPP; | 5918 | ret = -EOPNOTSUPP; |
5886 | } | 5919 | } |
@@ -5903,7 +5936,7 @@ static int ipw2100_wpa_mlme(struct net_device *dev, int command, int reason){ | |||
5903 | break; | 5936 | break; |
5904 | 5937 | ||
5905 | default: | 5938 | default: |
5906 | IPW_DEBUG_ERROR("%s: Unknown MLME request: %d\n", | 5939 | printk(KERN_ERR DRV_NAME ": %s: Unknown MLME request: %d\n", |
5907 | dev->name, command); | 5940 | dev->name, command); |
5908 | ret = -EOPNOTSUPP; | 5941 | ret = -EOPNOTSUPP; |
5909 | } | 5942 | } |
@@ -6153,7 +6186,7 @@ static int ipw2100_wpa_supplicant(struct net_device *dev, struct iw_point *p){ | |||
6153 | break; | 6186 | break; |
6154 | 6187 | ||
6155 | default: | 6188 | default: |
6156 | IPW_DEBUG_ERROR("%s: Unknown WPA supplicant request: %d\n", | 6189 | printk(KERN_ERR DRV_NAME ": %s: Unknown WPA supplicant request: %d\n", |
6157 | dev->name, param->cmd); | 6190 | dev->name, param->cmd); |
6158 | ret = -EOPNOTSUPP; | 6191 | ret = -EOPNOTSUPP; |
6159 | 6192 | ||
@@ -6883,7 +6916,7 @@ module_exit(ipw2100_exit); | |||
6883 | 6916 | ||
6884 | #define WEXT_USECHANNELS 1 | 6917 | #define WEXT_USECHANNELS 1 |
6885 | 6918 | ||
6886 | const long ipw2100_frequencies[] = { | 6919 | static const long ipw2100_frequencies[] = { |
6887 | 2412, 2417, 2422, 2427, | 6920 | 2412, 2417, 2422, 2427, |
6888 | 2432, 2437, 2442, 2447, | 6921 | 2432, 2437, 2442, 2447, |
6889 | 2452, 2457, 2462, 2467, | 6922 | 2452, 2457, 2462, 2467, |
@@ -6893,7 +6926,7 @@ const long ipw2100_frequencies[] = { | |||
6893 | #define FREQ_COUNT (sizeof(ipw2100_frequencies) / \ | 6926 | #define FREQ_COUNT (sizeof(ipw2100_frequencies) / \ |
6894 | sizeof(ipw2100_frequencies[0])) | 6927 | sizeof(ipw2100_frequencies[0])) |
6895 | 6928 | ||
6896 | const long ipw2100_rates_11b[] = { | 6929 | static const long ipw2100_rates_11b[] = { |
6897 | 1000000, | 6930 | 1000000, |
6898 | 2000000, | 6931 | 2000000, |
6899 | 5500000, | 6932 | 5500000, |
@@ -7052,7 +7085,7 @@ static int ipw2100_wx_get_mode(struct net_device *dev, | |||
7052 | #define POWER_MODES 5 | 7085 | #define POWER_MODES 5 |
7053 | 7086 | ||
7054 | /* Values are in microsecond */ | 7087 | /* Values are in microsecond */ |
7055 | const s32 timeout_duration[POWER_MODES] = { | 7088 | static const s32 timeout_duration[POWER_MODES] = { |
7056 | 350000, | 7089 | 350000, |
7057 | 250000, | 7090 | 250000, |
7058 | 75000, | 7091 | 75000, |
@@ -7060,7 +7093,7 @@ const s32 timeout_duration[POWER_MODES] = { | |||
7060 | 25000, | 7093 | 25000, |
7061 | }; | 7094 | }; |
7062 | 7095 | ||
7063 | const s32 period_duration[POWER_MODES] = { | 7096 | static const s32 period_duration[POWER_MODES] = { |
7064 | 400000, | 7097 | 400000, |
7065 | 700000, | 7098 | 700000, |
7066 | 1000000, | 7099 | 1000000, |
@@ -8125,7 +8158,7 @@ static iw_handler ipw2100_private_handler[] = { | |||
8125 | ipw2100_wx_get_preamble, | 8158 | ipw2100_wx_get_preamble, |
8126 | }; | 8159 | }; |
8127 | 8160 | ||
8128 | struct iw_handler_def ipw2100_wx_handler_def = | 8161 | static struct iw_handler_def ipw2100_wx_handler_def = |
8129 | { | 8162 | { |
8130 | .standard = ipw2100_wx_handlers, | 8163 | .standard = ipw2100_wx_handlers, |
8131 | .num_standard = sizeof(ipw2100_wx_handlers) / sizeof(iw_handler), | 8164 | .num_standard = sizeof(ipw2100_wx_handlers) / sizeof(iw_handler), |
@@ -8141,7 +8174,7 @@ struct iw_handler_def ipw2100_wx_handler_def = | |||
8141 | * Called by /proc/net/wireless | 8174 | * Called by /proc/net/wireless |
8142 | * Also called by SIOCGIWSTATS | 8175 | * Also called by SIOCGIWSTATS |
8143 | */ | 8176 | */ |
8144 | struct iw_statistics *ipw2100_wx_wireless_stats(struct net_device * dev) | 8177 | static struct iw_statistics *ipw2100_wx_wireless_stats(struct net_device * dev) |
8145 | { | 8178 | { |
8146 | enum { | 8179 | enum { |
8147 | POOR = 30, | 8180 | POOR = 30, |
@@ -8277,7 +8310,7 @@ struct iw_statistics *ipw2100_wx_wireless_stats(struct net_device * dev) | |||
8277 | return (struct iw_statistics *) NULL; | 8310 | return (struct iw_statistics *) NULL; |
8278 | } | 8311 | } |
8279 | 8312 | ||
8280 | void ipw2100_wx_event_work(struct ipw2100_priv *priv) | 8313 | static void ipw2100_wx_event_work(struct ipw2100_priv *priv) |
8281 | { | 8314 | { |
8282 | union iwreq_data wrqu; | 8315 | union iwreq_data wrqu; |
8283 | int len = ETH_ALEN; | 8316 | int len = ETH_ALEN; |
@@ -8375,7 +8408,7 @@ static int ipw2100_mod_firmware_load(struct ipw2100_fw *fw) | |||
8375 | (struct ipw2100_fw_header *)fw->fw_entry->data; | 8408 | (struct ipw2100_fw_header *)fw->fw_entry->data; |
8376 | 8409 | ||
8377 | if (IPW2100_FW_MAJOR(h->version) != IPW2100_FW_MAJOR_VERSION) { | 8410 | if (IPW2100_FW_MAJOR(h->version) != IPW2100_FW_MAJOR_VERSION) { |
8378 | IPW_DEBUG_WARNING("Firmware image not compatible " | 8411 | printk(KERN_WARNING DRV_NAME ": Firmware image not compatible " |
8379 | "(detected version id of %u). " | 8412 | "(detected version id of %u). " |
8380 | "See Documentation/networking/README.ipw2100\n", | 8413 | "See Documentation/networking/README.ipw2100\n", |
8381 | h->version); | 8414 | h->version); |
@@ -8392,7 +8425,8 @@ static int ipw2100_mod_firmware_load(struct ipw2100_fw *fw) | |||
8392 | } | 8425 | } |
8393 | 8426 | ||
8394 | 8427 | ||
8395 | int ipw2100_get_firmware(struct ipw2100_priv *priv, struct ipw2100_fw *fw) | 8428 | static int ipw2100_get_firmware(struct ipw2100_priv *priv, |
8429 | struct ipw2100_fw *fw) | ||
8396 | { | 8430 | { |
8397 | char *fw_name; | 8431 | char *fw_name; |
8398 | int rc; | 8432 | int rc; |
@@ -8418,7 +8452,7 @@ int ipw2100_get_firmware(struct ipw2100_priv *priv, struct ipw2100_fw *fw) | |||
8418 | rc = request_firmware(&fw->fw_entry, fw_name, &priv->pci_dev->dev); | 8452 | rc = request_firmware(&fw->fw_entry, fw_name, &priv->pci_dev->dev); |
8419 | 8453 | ||
8420 | if (rc < 0) { | 8454 | if (rc < 0) { |
8421 | IPW_DEBUG_ERROR( | 8455 | printk(KERN_ERR DRV_NAME ": " |
8422 | "%s: Firmware '%s' not available or load failed.\n", | 8456 | "%s: Firmware '%s' not available or load failed.\n", |
8423 | priv->net_dev->name, fw_name); | 8457 | priv->net_dev->name, fw_name); |
8424 | return rc; | 8458 | return rc; |
@@ -8431,8 +8465,8 @@ int ipw2100_get_firmware(struct ipw2100_priv *priv, struct ipw2100_fw *fw) | |||
8431 | return 0; | 8465 | return 0; |
8432 | } | 8466 | } |
8433 | 8467 | ||
8434 | void ipw2100_release_firmware(struct ipw2100_priv *priv, | 8468 | static void ipw2100_release_firmware(struct ipw2100_priv *priv, |
8435 | struct ipw2100_fw *fw) | 8469 | struct ipw2100_fw *fw) |
8436 | { | 8470 | { |
8437 | fw->version = 0; | 8471 | fw->version = 0; |
8438 | if (fw->fw_entry) | 8472 | if (fw->fw_entry) |
@@ -8441,7 +8475,8 @@ void ipw2100_release_firmware(struct ipw2100_priv *priv, | |||
8441 | } | 8475 | } |
8442 | 8476 | ||
8443 | 8477 | ||
8444 | int ipw2100_get_fwversion(struct ipw2100_priv *priv, char *buf, size_t max) | 8478 | static int ipw2100_get_fwversion(struct ipw2100_priv *priv, char *buf, |
8479 | size_t max) | ||
8445 | { | 8480 | { |
8446 | char ver[MAX_FW_VERSION_LEN]; | 8481 | char ver[MAX_FW_VERSION_LEN]; |
8447 | u32 len = MAX_FW_VERSION_LEN; | 8482 | u32 len = MAX_FW_VERSION_LEN; |
@@ -8460,7 +8495,8 @@ int ipw2100_get_fwversion(struct ipw2100_priv *priv, char *buf, size_t max) | |||
8460 | return tmp; | 8495 | return tmp; |
8461 | } | 8496 | } |
8462 | 8497 | ||
8463 | int ipw2100_get_ucodeversion(struct ipw2100_priv *priv, char *buf, size_t max) | 8498 | static int ipw2100_get_ucodeversion(struct ipw2100_priv *priv, char *buf, |
8499 | size_t max) | ||
8464 | { | 8500 | { |
8465 | u32 ver; | 8501 | u32 ver; |
8466 | u32 len = sizeof(ver); | 8502 | u32 len = sizeof(ver); |
@@ -8474,7 +8510,8 @@ int ipw2100_get_ucodeversion(struct ipw2100_priv *priv, char *buf, size_t max) | |||
8474 | /* | 8510 | /* |
8475 | * On exit, the firmware will have been freed from the fw list | 8511 | * On exit, the firmware will have been freed from the fw list |
8476 | */ | 8512 | */ |
8477 | int ipw2100_fw_download(struct ipw2100_priv *priv, struct ipw2100_fw *fw) | 8513 | static int ipw2100_fw_download(struct ipw2100_priv *priv, |
8514 | struct ipw2100_fw *fw) | ||
8478 | { | 8515 | { |
8479 | /* firmware is constructed of N contiguous entries, each entry is | 8516 | /* firmware is constructed of N contiguous entries, each entry is |
8480 | * structured as: | 8517 | * structured as: |
@@ -8500,7 +8537,7 @@ int ipw2100_fw_download(struct ipw2100_priv *priv, struct ipw2100_fw *fw) | |||
8500 | firmware_data_left -= 2; | 8537 | firmware_data_left -= 2; |
8501 | 8538 | ||
8502 | if (len > 32) { | 8539 | if (len > 32) { |
8503 | IPW_DEBUG_ERROR( | 8540 | printk(KERN_ERR DRV_NAME ": " |
8504 | "Invalid firmware run-length of %d bytes\n", | 8541 | "Invalid firmware run-length of %d bytes\n", |
8505 | len); | 8542 | len); |
8506 | return -EINVAL; | 8543 | return -EINVAL; |
@@ -8531,7 +8568,8 @@ struct symbol_alive_response { | |||
8531 | u8 ucode_valid; | 8568 | u8 ucode_valid; |
8532 | }; | 8569 | }; |
8533 | 8570 | ||
8534 | int ipw2100_ucode_download(struct ipw2100_priv *priv, struct ipw2100_fw *fw) | 8571 | static int ipw2100_ucode_download(struct ipw2100_priv *priv, |
8572 | struct ipw2100_fw *fw) | ||
8535 | { | 8573 | { |
8536 | struct net_device *dev = priv->net_dev; | 8574 | struct net_device *dev = priv->net_dev; |
8537 | const unsigned char *microcode_data = fw->uc.data; | 8575 | const unsigned char *microcode_data = fw->uc.data; |
@@ -8610,7 +8648,7 @@ int ipw2100_ucode_download(struct ipw2100_priv *priv, struct ipw2100_fw *fw) | |||
8610 | } | 8648 | } |
8611 | 8649 | ||
8612 | if (i == 10) { | 8650 | if (i == 10) { |
8613 | IPW_DEBUG_ERROR("%s: Error initializing Symbol\n", | 8651 | printk(KERN_ERR DRV_NAME ": %s: Error initializing Symbol\n", |
8614 | dev->name); | 8652 | dev->name); |
8615 | return -EIO; | 8653 | return -EIO; |
8616 | } | 8654 | } |
@@ -8631,7 +8669,7 @@ int ipw2100_ucode_download(struct ipw2100_priv *priv, struct ipw2100_fw *fw) | |||
8631 | } | 8669 | } |
8632 | 8670 | ||
8633 | if (i == 30) { | 8671 | if (i == 30) { |
8634 | IPW_DEBUG_ERROR("%s: No response from Symbol - hw not alive\n", | 8672 | printk(KERN_ERR DRV_NAME ": %s: No response from Symbol - hw not alive\n", |
8635 | dev->name); | 8673 | dev->name); |
8636 | printk_buf(IPW_DL_ERROR, (u8*)&response, sizeof(response)); | 8674 | printk_buf(IPW_DL_ERROR, (u8*)&response, sizeof(response)); |
8637 | return -EIO; | 8675 | return -EIO; |
diff --git a/drivers/net/wireless/ipw2100.h b/drivers/net/wireless/ipw2100.h index 95a05b554c1a..2a3cdbd50168 100644 --- a/drivers/net/wireless/ipw2100.h +++ b/drivers/net/wireless/ipw2100.h | |||
@@ -48,22 +48,6 @@ struct ipw2100_priv; | |||
48 | struct ipw2100_tx_packet; | 48 | struct ipw2100_tx_packet; |
49 | struct ipw2100_rx_packet; | 49 | struct ipw2100_rx_packet; |
50 | 50 | ||
51 | #ifdef CONFIG_IPW_DEBUG | ||
52 | enum { IPW_DEBUG_ENABLED = 1 }; | ||
53 | extern u32 ipw2100_debug_level; | ||
54 | #define IPW_DEBUG(level, message...) \ | ||
55 | do { \ | ||
56 | if (ipw2100_debug_level & (level)) { \ | ||
57 | printk(KERN_DEBUG "ipw2100: %c %s ", \ | ||
58 | in_interrupt() ? 'I' : 'U', __FUNCTION__); \ | ||
59 | printk(message); \ | ||
60 | } \ | ||
61 | } while (0) | ||
62 | #else | ||
63 | enum { IPW_DEBUG_ENABLED = 0 }; | ||
64 | #define IPW_DEBUG(level, message...) do {} while (0) | ||
65 | #endif /* CONFIG_IPW_DEBUG */ | ||
66 | |||
67 | #define IPW_DL_UNINIT 0x80000000 | 51 | #define IPW_DL_UNINIT 0x80000000 |
68 | #define IPW_DL_NONE 0x00000000 | 52 | #define IPW_DL_NONE 0x00000000 |
69 | #define IPW_DL_ALL 0x7FFFFFFF | 53 | #define IPW_DL_ALL 0x7FFFFFFF |
@@ -1144,10 +1128,6 @@ typedef enum _ORDINAL_TABLE_2 { // NS - means Not Supported by FW | |||
1144 | #define WIRELESS_SPY // enable iwspy support | 1128 | #define WIRELESS_SPY // enable iwspy support |
1145 | #endif | 1129 | #endif |
1146 | 1130 | ||
1147 | extern struct iw_handler_def ipw2100_wx_handler_def; | ||
1148 | extern struct iw_statistics *ipw2100_wx_wireless_stats(struct net_device * dev); | ||
1149 | extern void ipw2100_wx_event_work(struct ipw2100_priv *priv); | ||
1150 | |||
1151 | #define IPW_HOST_FW_SHARED_AREA0 0x0002f200 | 1131 | #define IPW_HOST_FW_SHARED_AREA0 0x0002f200 |
1152 | #define IPW_HOST_FW_SHARED_AREA0_END 0x0002f510 // 0x310 bytes | 1132 | #define IPW_HOST_FW_SHARED_AREA0_END 0x0002f510 // 0x310 bytes |
1153 | 1133 | ||
@@ -1182,14 +1162,6 @@ struct ipw2100_fw { | |||
1182 | const struct firmware *fw_entry; | 1162 | const struct firmware *fw_entry; |
1183 | }; | 1163 | }; |
1184 | 1164 | ||
1185 | int ipw2100_get_firmware(struct ipw2100_priv *priv, struct ipw2100_fw *fw); | ||
1186 | void ipw2100_release_firmware(struct ipw2100_priv *priv, struct ipw2100_fw *fw); | ||
1187 | int ipw2100_fw_download(struct ipw2100_priv *priv, struct ipw2100_fw *fw); | ||
1188 | int ipw2100_ucode_download(struct ipw2100_priv *priv, struct ipw2100_fw *fw); | ||
1189 | |||
1190 | #define MAX_FW_VERSION_LEN 14 | 1165 | #define MAX_FW_VERSION_LEN 14 |
1191 | 1166 | ||
1192 | int ipw2100_get_fwversion(struct ipw2100_priv *priv, char *buf, size_t max); | ||
1193 | int ipw2100_get_ucodeversion(struct ipw2100_priv *priv, char *buf, size_t max); | ||
1194 | |||
1195 | #endif /* _IPW2100_H */ | 1167 | #endif /* _IPW2100_H */ |
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c index 6211438058de..6d0b6b1df4ca 100644 --- a/drivers/net/wireless/ipw2200.c +++ b/drivers/net/wireless/ipw2200.c | |||
@@ -4485,7 +4485,7 @@ static void ipw_debug_config(struct ipw_priv *priv) | |||
4485 | IPW_DEBUG_INFO("RATE MASK: 0x%08X\n", priv->rates_mask); | 4485 | IPW_DEBUG_INFO("RATE MASK: 0x%08X\n", priv->rates_mask); |
4486 | } | 4486 | } |
4487 | #else | 4487 | #else |
4488 | #define ipw_debug_config(x) do {} while (0); | 4488 | #define ipw_debug_config(x) do {} while (0) |
4489 | #endif | 4489 | #endif |
4490 | 4490 | ||
4491 | static inline void ipw_set_fixed_rate(struct ipw_priv *priv, | 4491 | static inline void ipw_set_fixed_rate(struct ipw_priv *priv, |
@@ -6617,11 +6617,7 @@ static int ipw_setup_deferred_work(struct ipw_priv *priv) | |||
6617 | { | 6617 | { |
6618 | int ret = 0; | 6618 | int ret = 0; |
6619 | 6619 | ||
6620 | #ifdef CONFIG_SOFTWARE_SUSPEND2 | ||
6621 | priv->workqueue = create_workqueue(DRV_NAME, 0); | ||
6622 | #else | ||
6623 | priv->workqueue = create_workqueue(DRV_NAME); | 6620 | priv->workqueue = create_workqueue(DRV_NAME); |
6624 | #endif | ||
6625 | init_waitqueue_head(&priv->wait_command_queue); | 6621 | init_waitqueue_head(&priv->wait_command_queue); |
6626 | 6622 | ||
6627 | INIT_WORK(&priv->adhoc_check, ipw_adhoc_check, priv); | 6623 | INIT_WORK(&priv->adhoc_check, ipw_adhoc_check, priv); |
@@ -7242,11 +7238,7 @@ static int ipw_pci_suspend(struct pci_dev *pdev, u32 state) | |||
7242 | /* Remove the PRESENT state of the device */ | 7238 | /* Remove the PRESENT state of the device */ |
7243 | netif_device_detach(dev); | 7239 | netif_device_detach(dev); |
7244 | 7240 | ||
7245 | #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10) | ||
7246 | pci_save_state(pdev, priv->pm_state); | ||
7247 | #else | ||
7248 | pci_save_state(pdev); | 7241 | pci_save_state(pdev); |
7249 | #endif | ||
7250 | pci_disable_device(pdev); | 7242 | pci_disable_device(pdev); |
7251 | pci_set_power_state(pdev, state); | 7243 | pci_set_power_state(pdev, state); |
7252 | 7244 | ||
diff --git a/drivers/net/wireless/ipw2200.h b/drivers/net/wireless/ipw2200.h index 78b5f444271d..3bff09d93154 100644 --- a/drivers/net/wireless/ipw2200.h +++ b/drivers/net/wireless/ipw2200.h | |||
@@ -53,26 +53,6 @@ | |||
53 | 53 | ||
54 | #include <linux/workqueue.h> | 54 | #include <linux/workqueue.h> |
55 | 55 | ||
56 | #ifndef IRQ_NONE | ||
57 | typedef void irqreturn_t; | ||
58 | #define IRQ_NONE | ||
59 | #define IRQ_HANDLED | ||
60 | #define IRQ_RETVAL(x) | ||
61 | #endif | ||
62 | |||
63 | #if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9) ) | ||
64 | #define __iomem | ||
65 | #endif | ||
66 | |||
67 | #if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,5) ) | ||
68 | #define pci_dma_sync_single_for_cpu pci_dma_sync_single | ||
69 | #define pci_dma_sync_single_for_device pci_dma_sync_single | ||
70 | #endif | ||
71 | |||
72 | #ifndef HAVE_FREE_NETDEV | ||
73 | #define free_netdev(x) kfree(x) | ||
74 | #endif | ||
75 | |||
76 | /* Authentication and Association States */ | 56 | /* Authentication and Association States */ |
77 | enum connection_manager_assoc_states | 57 | enum connection_manager_assoc_states |
78 | { | 58 | { |
@@ -93,8 +73,6 @@ enum connection_manager_assoc_states | |||
93 | }; | 73 | }; |
94 | 74 | ||
95 | 75 | ||
96 | #define IPW_NORMAL 0 | ||
97 | #define IPW_NOWAIT 0 | ||
98 | #define IPW_WAIT (1<<0) | 76 | #define IPW_WAIT (1<<0) |
99 | #define IPW_QUIET (1<<1) | 77 | #define IPW_QUIET (1<<1) |
100 | #define IPW_ROAMING (1<<2) | 78 | #define IPW_ROAMING (1<<2) |
@@ -200,7 +178,7 @@ enum connection_manager_assoc_states | |||
200 | 178 | ||
201 | /* even if MAC WEP set (allows pre-encrypt) */ | 179 | /* even if MAC WEP set (allows pre-encrypt) */ |
202 | #define DCT_FLAG_NO_WEP 0x20 | 180 | #define DCT_FLAG_NO_WEP 0x20 |
203 | #define IPW_ | 181 | |
204 | /* overwrite TSF field */ | 182 | /* overwrite TSF field */ |
205 | #define DCT_FLAG_TSF_REQD 0x40 | 183 | #define DCT_FLAG_TSF_REQD 0x40 |
206 | 184 | ||
@@ -533,12 +511,6 @@ struct notif_authenticate { | |||
533 | u16 status; | 511 | u16 status; |
534 | } __attribute__ ((packed)); | 512 | } __attribute__ ((packed)); |
535 | 513 | ||
536 | struct temperature | ||
537 | { | ||
538 | s32 measured; | ||
539 | s32 active; | ||
540 | } __attribute__ ((packed)); | ||
541 | |||
542 | struct notif_calibration { | 514 | struct notif_calibration { |
543 | u8 data[104]; | 515 | u8 data[104]; |
544 | } __attribute__ ((packed)); | 516 | } __attribute__ ((packed)); |
diff --git a/include/net/ieee80211.h b/include/net/ieee80211.h index 51a20b5f3b5d..8bc126938cd4 100644 --- a/include/net/ieee80211.h +++ b/include/net/ieee80211.h | |||
@@ -47,22 +47,22 @@ | |||
47 | #define IEEE80211_FRAME_LEN (IEEE80211_DATA_LEN + IEEE80211_HLEN) | 47 | #define IEEE80211_FRAME_LEN (IEEE80211_DATA_LEN + IEEE80211_HLEN) |
48 | 48 | ||
49 | struct ieee80211_hdr { | 49 | struct ieee80211_hdr { |
50 | u16 frame_ctl; | 50 | __le16 frame_ctl; |
51 | u16 duration_id; | 51 | __le16 duration_id; |
52 | u8 addr1[ETH_ALEN]; | 52 | u8 addr1[ETH_ALEN]; |
53 | u8 addr2[ETH_ALEN]; | 53 | u8 addr2[ETH_ALEN]; |
54 | u8 addr3[ETH_ALEN]; | 54 | u8 addr3[ETH_ALEN]; |
55 | u16 seq_ctl; | 55 | __le16 seq_ctl; |
56 | u8 addr4[ETH_ALEN]; | 56 | u8 addr4[ETH_ALEN]; |
57 | } __attribute__ ((packed)); | 57 | } __attribute__ ((packed)); |
58 | 58 | ||
59 | struct ieee80211_hdr_3addr { | 59 | struct ieee80211_hdr_3addr { |
60 | u16 frame_ctl; | 60 | __le16 frame_ctl; |
61 | u16 duration_id; | 61 | __le16 duration_id; |
62 | u8 addr1[ETH_ALEN]; | 62 | u8 addr1[ETH_ALEN]; |
63 | u8 addr2[ETH_ALEN]; | 63 | u8 addr2[ETH_ALEN]; |
64 | u8 addr3[ETH_ALEN]; | 64 | u8 addr3[ETH_ALEN]; |
65 | u16 seq_ctl; | 65 | __le16 seq_ctl; |
66 | } __attribute__ ((packed)); | 66 | } __attribute__ ((packed)); |
67 | 67 | ||
68 | enum eap_type { | 68 | enum eap_type { |
@@ -88,10 +88,10 @@ static inline const char *eap_get_type(int type) | |||
88 | 88 | ||
89 | struct eapol { | 89 | struct eapol { |
90 | u8 snap[6]; | 90 | u8 snap[6]; |
91 | u16 ethertype; | 91 | __be16 ethertype; |
92 | u8 version; | 92 | u8 version; |
93 | u8 type; | 93 | u8 type; |
94 | u16 length; | 94 | __be16 length; |
95 | } __attribute__ ((packed)); | 95 | } __attribute__ ((packed)); |
96 | 96 | ||
97 | #define IEEE80211_1ADDR_LEN 10 | 97 | #define IEEE80211_1ADDR_LEN 10 |
@@ -112,8 +112,8 @@ struct eapol { | |||
112 | #define IEEE80211_FCTL_MOREFRAGS 0x0400 | 112 | #define IEEE80211_FCTL_MOREFRAGS 0x0400 |
113 | #define IEEE80211_FCTL_RETRY 0x0800 | 113 | #define IEEE80211_FCTL_RETRY 0x0800 |
114 | #define IEEE80211_FCTL_PM 0x1000 | 114 | #define IEEE80211_FCTL_PM 0x1000 |
115 | #define IEEE80211_FCTL_MOREDATA 0x2000 | 115 | #define IEEE80211_FCTL_MOREDATA 0x2000 |
116 | #define IEEE80211_FCTL_WEP 0x4000 | 116 | #define IEEE80211_FCTL_PROTECTED 0x4000 |
117 | #define IEEE80211_FCTL_ORDER 0x8000 | 117 | #define IEEE80211_FCTL_ORDER 0x8000 |
118 | 118 | ||
119 | #define IEEE80211_FTYPE_MGMT 0x0000 | 119 | #define IEEE80211_FTYPE_MGMT 0x0000 |
@@ -132,6 +132,7 @@ struct eapol { | |||
132 | #define IEEE80211_STYPE_DISASSOC 0x00A0 | 132 | #define IEEE80211_STYPE_DISASSOC 0x00A0 |
133 | #define IEEE80211_STYPE_AUTH 0x00B0 | 133 | #define IEEE80211_STYPE_AUTH 0x00B0 |
134 | #define IEEE80211_STYPE_DEAUTH 0x00C0 | 134 | #define IEEE80211_STYPE_DEAUTH 0x00C0 |
135 | #define IEEE80211_STYPE_ACTION 0x00D0 | ||
135 | 136 | ||
136 | /* control */ | 137 | /* control */ |
137 | #define IEEE80211_STYPE_PSPOLL 0x00A0 | 138 | #define IEEE80211_STYPE_PSPOLL 0x00A0 |
@@ -167,8 +168,19 @@ do { if (ieee80211_debug_level & (level)) \ | |||
167 | #define IEEE80211_DEBUG(level, fmt, args...) do {} while (0) | 168 | #define IEEE80211_DEBUG(level, fmt, args...) do {} while (0) |
168 | #endif /* CONFIG_IEEE80211_DEBUG */ | 169 | #endif /* CONFIG_IEEE80211_DEBUG */ |
169 | 170 | ||
171 | |||
172 | /* debug macros not dependent on CONFIG_IEEE80211_DEBUG */ | ||
173 | |||
174 | #define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" | ||
175 | #define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5] | ||
176 | |||
177 | /* escape_essid() is intended to be used in debug (and possibly error) | ||
178 | * messages. It should never be used for passing essid to user space. */ | ||
179 | const char *escape_essid(const char *essid, u8 essid_len); | ||
180 | |||
181 | |||
170 | /* | 182 | /* |
171 | * To use the debug system; | 183 | * To use the debug system: |
172 | * | 184 | * |
173 | * If you are defining a new debug classification, simply add it to the #define | 185 | * If you are defining a new debug classification, simply add it to the #define |
174 | * list here in the form of: | 186 | * list here in the form of: |
@@ -223,9 +235,9 @@ do { if (ieee80211_debug_level & (level)) \ | |||
223 | #include <linux/if_arp.h> /* ARPHRD_ETHER */ | 235 | #include <linux/if_arp.h> /* ARPHRD_ETHER */ |
224 | 236 | ||
225 | #ifndef WIRELESS_SPY | 237 | #ifndef WIRELESS_SPY |
226 | #define WIRELESS_SPY // enable iwspy support | 238 | #define WIRELESS_SPY /* enable iwspy support */ |
227 | #endif | 239 | #endif |
228 | #include <net/iw_handler.h> // new driver API | 240 | #include <net/iw_handler.h> /* new driver API */ |
229 | 241 | ||
230 | #ifndef ETH_P_PAE | 242 | #ifndef ETH_P_PAE |
231 | #define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */ | 243 | #define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */ |
@@ -252,6 +264,7 @@ struct ieee80211_snap_hdr { | |||
252 | 264 | ||
253 | #define SNAP_SIZE sizeof(struct ieee80211_snap_hdr) | 265 | #define SNAP_SIZE sizeof(struct ieee80211_snap_hdr) |
254 | 266 | ||
267 | #define WLAN_FC_GET_VERS(fc) ((fc) & IEEE80211_FCTL_VERS) | ||
255 | #define WLAN_FC_GET_TYPE(fc) ((fc) & IEEE80211_FCTL_FTYPE) | 268 | #define WLAN_FC_GET_TYPE(fc) ((fc) & IEEE80211_FCTL_FTYPE) |
256 | #define WLAN_FC_GET_STYPE(fc) ((fc) & IEEE80211_FCTL_STYPE) | 269 | #define WLAN_FC_GET_STYPE(fc) ((fc) & IEEE80211_FCTL_STYPE) |
257 | 270 | ||
@@ -272,34 +285,72 @@ struct ieee80211_snap_hdr { | |||
272 | #define WLAN_CAPABILITY_SHORT_PREAMBLE (1<<5) | 285 | #define WLAN_CAPABILITY_SHORT_PREAMBLE (1<<5) |
273 | #define WLAN_CAPABILITY_PBCC (1<<6) | 286 | #define WLAN_CAPABILITY_PBCC (1<<6) |
274 | #define WLAN_CAPABILITY_CHANNEL_AGILITY (1<<7) | 287 | #define WLAN_CAPABILITY_CHANNEL_AGILITY (1<<7) |
288 | #define WLAN_CAPABILITY_SPECTRUM_MGMT (1<<8) | ||
289 | #define WLAN_CAPABILITY_SHORT_SLOT_TIME (1<<10) | ||
290 | #define WLAN_CAPABILITY_OSSS_OFDM (1<<13) | ||
275 | 291 | ||
276 | /* Status codes */ | 292 | /* Status codes */ |
277 | #define WLAN_STATUS_SUCCESS 0 | 293 | enum ieee80211_statuscode { |
278 | #define WLAN_STATUS_UNSPECIFIED_FAILURE 1 | 294 | WLAN_STATUS_SUCCESS = 0, |
279 | #define WLAN_STATUS_CAPS_UNSUPPORTED 10 | 295 | WLAN_STATUS_UNSPECIFIED_FAILURE = 1, |
280 | #define WLAN_STATUS_REASSOC_NO_ASSOC 11 | 296 | WLAN_STATUS_CAPS_UNSUPPORTED = 10, |
281 | #define WLAN_STATUS_ASSOC_DENIED_UNSPEC 12 | 297 | WLAN_STATUS_REASSOC_NO_ASSOC = 11, |
282 | #define WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG 13 | 298 | WLAN_STATUS_ASSOC_DENIED_UNSPEC = 12, |
283 | #define WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION 14 | 299 | WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG = 13, |
284 | #define WLAN_STATUS_CHALLENGE_FAIL 15 | 300 | WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION = 14, |
285 | #define WLAN_STATUS_AUTH_TIMEOUT 16 | 301 | WLAN_STATUS_CHALLENGE_FAIL = 15, |
286 | #define WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA 17 | 302 | WLAN_STATUS_AUTH_TIMEOUT = 16, |
287 | #define WLAN_STATUS_ASSOC_DENIED_RATES 18 | 303 | WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA = 17, |
288 | /* 802.11b */ | 304 | WLAN_STATUS_ASSOC_DENIED_RATES = 18, |
289 | #define WLAN_STATUS_ASSOC_DENIED_NOSHORT 19 | 305 | /* 802.11b */ |
290 | #define WLAN_STATUS_ASSOC_DENIED_NOPBCC 20 | 306 | WLAN_STATUS_ASSOC_DENIED_NOSHORTPREAMBLE = 19, |
291 | #define WLAN_STATUS_ASSOC_DENIED_NOAGILITY 21 | 307 | WLAN_STATUS_ASSOC_DENIED_NOPBCC = 20, |
308 | WLAN_STATUS_ASSOC_DENIED_NOAGILITY = 21, | ||
309 | /* 802.11h */ | ||
310 | WLAN_STATUS_ASSOC_DENIED_NOSPECTRUM = 22, | ||
311 | WLAN_STATUS_ASSOC_REJECTED_BAD_POWER = 23, | ||
312 | WLAN_STATUS_ASSOC_REJECTED_BAD_SUPP_CHAN = 24, | ||
313 | /* 802.11g */ | ||
314 | WLAN_STATUS_ASSOC_DENIED_NOSHORTTIME = 25, | ||
315 | WLAN_STATUS_ASSOC_DENIED_NODSSSOFDM = 26, | ||
316 | /* 802.11i */ | ||
317 | WLAN_STATUS_INVALID_IE = 40, | ||
318 | WLAN_STATUS_INVALID_GROUP_CIPHER = 41, | ||
319 | WLAN_STATUS_INVALID_PAIRWISE_CIPHER = 42, | ||
320 | WLAN_STATUS_INVALID_AKMP = 43, | ||
321 | WLAN_STATUS_UNSUPP_RSN_VERSION = 44, | ||
322 | WLAN_STATUS_INVALID_RSN_IE_CAP = 45, | ||
323 | WLAN_STATUS_CIPHER_SUITE_REJECTED = 46, | ||
324 | }; | ||
292 | 325 | ||
293 | /* Reason codes */ | 326 | /* Reason codes */ |
294 | #define WLAN_REASON_UNSPECIFIED 1 | 327 | enum ieee80211_reasoncode { |
295 | #define WLAN_REASON_PREV_AUTH_NOT_VALID 2 | 328 | WLAN_REASON_UNSPECIFIED = 1, |
296 | #define WLAN_REASON_DEAUTH_LEAVING 3 | 329 | WLAN_REASON_PREV_AUTH_NOT_VALID = 2, |
297 | #define WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY 4 | 330 | WLAN_REASON_DEAUTH_LEAVING = 3, |
298 | #define WLAN_REASON_DISASSOC_AP_BUSY 5 | 331 | WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY = 4, |
299 | #define WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA 6 | 332 | WLAN_REASON_DISASSOC_AP_BUSY = 5, |
300 | #define WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA 7 | 333 | WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA = 6, |
301 | #define WLAN_REASON_DISASSOC_STA_HAS_LEFT 8 | 334 | WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA = 7, |
302 | #define WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH 9 | 335 | WLAN_REASON_DISASSOC_STA_HAS_LEFT = 8, |
336 | WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH = 9, | ||
337 | /* 802.11h */ | ||
338 | WLAN_REASON_DISASSOC_BAD_POWER = 10, | ||
339 | WLAN_REASON_DISASSOC_BAD_SUPP_CHAN = 11, | ||
340 | /* 802.11i */ | ||
341 | WLAN_REASON_INVALID_IE = 13, | ||
342 | WLAN_REASON_MIC_FAILURE = 14, | ||
343 | WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT = 15, | ||
344 | WLAN_REASON_GROUP_KEY_HANDSHAKE_TIMEOUT = 16, | ||
345 | WLAN_REASON_IE_DIFFERENT = 17, | ||
346 | WLAN_REASON_INVALID_GROUP_CIPHER = 18, | ||
347 | WLAN_REASON_INVALID_PAIRWISE_CIPHER = 19, | ||
348 | WLAN_REASON_INVALID_AKMP = 20, | ||
349 | WLAN_REASON_UNSUPP_RSN_VERSION = 21, | ||
350 | WLAN_REASON_INVALID_RSN_IE_CAP = 22, | ||
351 | WLAN_REASON_IEEE8021X_FAILED = 23, | ||
352 | WLAN_REASON_CIPHER_SUITE_REJECTED = 24, | ||
353 | }; | ||
303 | 354 | ||
304 | 355 | ||
305 | #define IEEE80211_STATMASK_SIGNAL (1<<0) | 356 | #define IEEE80211_STATMASK_SIGNAL (1<<0) |
@@ -478,17 +529,34 @@ Total: 28-2340 bytes | |||
478 | #define BEACON_PROBE_SSID_ID_POSITION 12 | 529 | #define BEACON_PROBE_SSID_ID_POSITION 12 |
479 | 530 | ||
480 | /* Management Frame Information Element Types */ | 531 | /* Management Frame Information Element Types */ |
481 | #define MFIE_TYPE_SSID 0 | 532 | enum ieee80211_mfie { |
482 | #define MFIE_TYPE_RATES 1 | 533 | MFIE_TYPE_SSID = 0, |
483 | #define MFIE_TYPE_FH_SET 2 | 534 | MFIE_TYPE_RATES = 1, |
484 | #define MFIE_TYPE_DS_SET 3 | 535 | MFIE_TYPE_FH_SET = 2, |
485 | #define MFIE_TYPE_CF_SET 4 | 536 | MFIE_TYPE_DS_SET = 3, |
486 | #define MFIE_TYPE_TIM 5 | 537 | MFIE_TYPE_CF_SET = 4, |
487 | #define MFIE_TYPE_IBSS_SET 6 | 538 | MFIE_TYPE_TIM = 5, |
488 | #define MFIE_TYPE_CHALLENGE 16 | 539 | MFIE_TYPE_IBSS_SET = 6, |
489 | #define MFIE_TYPE_RSN 48 | 540 | MFIE_TYPE_COUNTRY = 7, |
490 | #define MFIE_TYPE_RATES_EX 50 | 541 | MFIE_TYPE_HOP_PARAMS = 8, |
491 | #define MFIE_TYPE_GENERIC 221 | 542 | MFIE_TYPE_HOP_TABLE = 9, |
543 | MFIE_TYPE_REQUEST = 10, | ||
544 | MFIE_TYPE_CHALLENGE = 16, | ||
545 | MFIE_TYPE_POWER_CONSTRAINT = 32, | ||
546 | MFIE_TYPE_POWER_CAPABILITY = 33, | ||
547 | MFIE_TYPE_TPC_REQUEST = 34, | ||
548 | MFIE_TYPE_TPC_REPORT = 35, | ||
549 | MFIE_TYPE_SUPP_CHANNELS = 36, | ||
550 | MFIE_TYPE_CSA = 37, | ||
551 | MFIE_TYPE_MEASURE_REQUEST = 38, | ||
552 | MFIE_TYPE_MEASURE_REPORT = 39, | ||
553 | MFIE_TYPE_QUIET = 40, | ||
554 | MFIE_TYPE_IBSS_DFS = 41, | ||
555 | MFIE_TYPE_ERP_INFO = 42, | ||
556 | MFIE_TYPE_RSN = 48, | ||
557 | MFIE_TYPE_RATES_EX = 50, | ||
558 | MFIE_TYPE_GENERIC = 221, | ||
559 | }; | ||
492 | 560 | ||
493 | struct ieee80211_info_element_hdr { | 561 | struct ieee80211_info_element_hdr { |
494 | u8 id; | 562 | u8 id; |
@@ -520,9 +588,9 @@ struct ieee80211_info_element { | |||
520 | 588 | ||
521 | struct ieee80211_authentication { | 589 | struct ieee80211_authentication { |
522 | struct ieee80211_hdr_3addr header; | 590 | struct ieee80211_hdr_3addr header; |
523 | u16 algorithm; | 591 | __le16 algorithm; |
524 | u16 transaction; | 592 | __le16 transaction; |
525 | u16 status; | 593 | __le16 status; |
526 | struct ieee80211_info_element info_element; | 594 | struct ieee80211_info_element info_element; |
527 | } __attribute__ ((packed)); | 595 | } __attribute__ ((packed)); |
528 | 596 | ||
@@ -530,23 +598,23 @@ struct ieee80211_authentication { | |||
530 | struct ieee80211_probe_response { | 598 | struct ieee80211_probe_response { |
531 | struct ieee80211_hdr_3addr header; | 599 | struct ieee80211_hdr_3addr header; |
532 | u32 time_stamp[2]; | 600 | u32 time_stamp[2]; |
533 | u16 beacon_interval; | 601 | __le16 beacon_interval; |
534 | u16 capability; | 602 | __le16 capability; |
535 | struct ieee80211_info_element info_element; | 603 | struct ieee80211_info_element info_element; |
536 | } __attribute__ ((packed)); | 604 | } __attribute__ ((packed)); |
537 | 605 | ||
538 | struct ieee80211_assoc_request_frame { | 606 | struct ieee80211_assoc_request_frame { |
539 | u16 capability; | 607 | __le16 capability; |
540 | u16 listen_interval; | 608 | __le16 listen_interval; |
541 | u8 current_ap[ETH_ALEN]; | 609 | u8 current_ap[ETH_ALEN]; |
542 | struct ieee80211_info_element info_element; | 610 | struct ieee80211_info_element info_element; |
543 | } __attribute__ ((packed)); | 611 | } __attribute__ ((packed)); |
544 | 612 | ||
545 | struct ieee80211_assoc_response_frame { | 613 | struct ieee80211_assoc_response_frame { |
546 | struct ieee80211_hdr_3addr header; | 614 | struct ieee80211_hdr_3addr header; |
547 | u16 capability; | 615 | __le16 capability; |
548 | u16 status; | 616 | __le16 status; |
549 | u16 aid; | 617 | __le16 aid; |
550 | struct ieee80211_info_element info_element; /* supported rates */ | 618 | struct ieee80211_info_element info_element; /* supported rates */ |
551 | } __attribute__ ((packed)); | 619 | } __attribute__ ((packed)); |
552 | 620 | ||
@@ -561,7 +629,7 @@ struct ieee80211_txb { | |||
561 | }; | 629 | }; |
562 | 630 | ||
563 | 631 | ||
564 | /* SWEEP TABLE ENTRIES NUMBER*/ | 632 | /* SWEEP TABLE ENTRIES NUMBER */ |
565 | #define MAX_SWEEP_TAB_ENTRIES 42 | 633 | #define MAX_SWEEP_TAB_ENTRIES 42 |
566 | #define MAX_SWEEP_TAB_ENTRIES_PER_PACKET 7 | 634 | #define MAX_SWEEP_TAB_ENTRIES_PER_PACKET 7 |
567 | /* MAX_RATES_LENGTH needs to be 12. The spec says 8, and many APs | 635 | /* MAX_RATES_LENGTH needs to be 12. The spec says 8, and many APs |
@@ -622,8 +690,6 @@ enum ieee80211_state { | |||
622 | 690 | ||
623 | #define DEFAULT_MAX_SCAN_AGE (15 * HZ) | 691 | #define DEFAULT_MAX_SCAN_AGE (15 * HZ) |
624 | #define DEFAULT_FTS 2346 | 692 | #define DEFAULT_FTS 2346 |
625 | #define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" | ||
626 | #define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5] | ||
627 | 693 | ||
628 | 694 | ||
629 | #define CFG_IEEE80211_RESERVE_FCS (1<<0) | 695 | #define CFG_IEEE80211_RESERVE_FCS (1<<0) |
@@ -791,8 +857,6 @@ extern struct net_device *alloc_ieee80211(int sizeof_priv); | |||
791 | extern int ieee80211_set_encryption(struct ieee80211_device *ieee); | 857 | extern int ieee80211_set_encryption(struct ieee80211_device *ieee); |
792 | 858 | ||
793 | /* ieee80211_tx.c */ | 859 | /* ieee80211_tx.c */ |
794 | |||
795 | |||
796 | extern int ieee80211_xmit(struct sk_buff *skb, | 860 | extern int ieee80211_xmit(struct sk_buff *skb, |
797 | struct net_device *dev); | 861 | struct net_device *dev); |
798 | extern void ieee80211_txb_free(struct ieee80211_txb *); | 862 | extern void ieee80211_txb_free(struct ieee80211_txb *); |
@@ -805,7 +869,7 @@ extern void ieee80211_rx_mgt(struct ieee80211_device *ieee, | |||
805 | struct ieee80211_hdr *header, | 869 | struct ieee80211_hdr *header, |
806 | struct ieee80211_rx_stats *stats); | 870 | struct ieee80211_rx_stats *stats); |
807 | 871 | ||
808 | /* iee80211_wx.c */ | 872 | /* ieee80211_wx.c */ |
809 | extern int ieee80211_wx_get_scan(struct ieee80211_device *ieee, | 873 | extern int ieee80211_wx_get_scan(struct ieee80211_device *ieee, |
810 | struct iw_request_info *info, | 874 | struct iw_request_info *info, |
811 | union iwreq_data *wrqu, char *key); | 875 | union iwreq_data *wrqu, char *key); |
@@ -827,27 +891,5 @@ extern inline int ieee80211_get_scans(struct ieee80211_device *ieee) | |||
827 | return ieee->scans; | 891 | return ieee->scans; |
828 | } | 892 | } |
829 | 893 | ||
830 | static inline const char *escape_essid(const char *essid, u8 essid_len) { | ||
831 | static char escaped[IW_ESSID_MAX_SIZE * 2 + 1]; | ||
832 | const char *s = essid; | ||
833 | char *d = escaped; | ||
834 | |||
835 | if (ieee80211_is_empty_essid(essid, essid_len)) { | ||
836 | memcpy(escaped, "<hidden>", sizeof("<hidden>")); | ||
837 | return escaped; | ||
838 | } | ||
839 | 894 | ||
840 | essid_len = min(essid_len, (u8)IW_ESSID_MAX_SIZE); | ||
841 | while (essid_len--) { | ||
842 | if (*s == '\0') { | ||
843 | *d++ = '\\'; | ||
844 | *d++ = '0'; | ||
845 | s++; | ||
846 | } else { | ||
847 | *d++ = *s++; | ||
848 | } | ||
849 | } | ||
850 | *d = '\0'; | ||
851 | return escaped; | ||
852 | } | ||
853 | #endif /* IEEE80211_H */ | 895 | #endif /* IEEE80211_H */ |
diff --git a/net/ieee80211/ieee80211_module.c b/net/ieee80211/ieee80211_module.c index e0802b8755a0..553acb2e93d5 100644 --- a/net/ieee80211/ieee80211_module.c +++ b/net/ieee80211/ieee80211_module.c | |||
@@ -269,5 +269,31 @@ module_exit(ieee80211_exit); | |||
269 | module_init(ieee80211_init); | 269 | module_init(ieee80211_init); |
270 | #endif | 270 | #endif |
271 | 271 | ||
272 | |||
273 | const char *escape_essid(const char *essid, u8 essid_len) { | ||
274 | static char escaped[IW_ESSID_MAX_SIZE * 2 + 1]; | ||
275 | const char *s = essid; | ||
276 | char *d = escaped; | ||
277 | |||
278 | if (ieee80211_is_empty_essid(essid, essid_len)) { | ||
279 | memcpy(escaped, "<hidden>", sizeof("<hidden>")); | ||
280 | return escaped; | ||
281 | } | ||
282 | |||
283 | essid_len = min(essid_len, (u8)IW_ESSID_MAX_SIZE); | ||
284 | while (essid_len--) { | ||
285 | if (*s == '\0') { | ||
286 | *d++ = '\\'; | ||
287 | *d++ = '0'; | ||
288 | s++; | ||
289 | } else { | ||
290 | *d++ = *s++; | ||
291 | } | ||
292 | } | ||
293 | *d = '\0'; | ||
294 | return escaped; | ||
295 | } | ||
296 | |||
272 | EXPORT_SYMBOL(alloc_ieee80211); | 297 | EXPORT_SYMBOL(alloc_ieee80211); |
273 | EXPORT_SYMBOL(free_ieee80211); | 298 | EXPORT_SYMBOL(free_ieee80211); |
299 | EXPORT_SYMBOL(escape_essid); | ||
diff --git a/net/ieee80211/ieee80211_rx.c b/net/ieee80211/ieee80211_rx.c index 0dd102993ef4..9505f3167aeb 100644 --- a/net/ieee80211/ieee80211_rx.c +++ b/net/ieee80211/ieee80211_rx.c | |||
@@ -439,7 +439,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
439 | crypt->ops->decrypt_mpdu == NULL)) | 439 | crypt->ops->decrypt_mpdu == NULL)) |
440 | crypt = NULL; | 440 | crypt = NULL; |
441 | 441 | ||
442 | if (!crypt && (fc & IEEE80211_FCTL_WEP)) { | 442 | if (!crypt && (fc & IEEE80211_FCTL_PROTECTED)) { |
443 | /* This seems to be triggered by some (multicast?) | 443 | /* This seems to be triggered by some (multicast?) |
444 | * frames from other than current BSS, so just drop the | 444 | * frames from other than current BSS, so just drop the |
445 | * frames silently instead of filling system log with | 445 | * frames silently instead of filling system log with |
@@ -455,7 +455,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
455 | #ifdef NOT_YET | 455 | #ifdef NOT_YET |
456 | if (type != WLAN_FC_TYPE_DATA) { | 456 | if (type != WLAN_FC_TYPE_DATA) { |
457 | if (type == WLAN_FC_TYPE_MGMT && stype == WLAN_FC_STYPE_AUTH && | 457 | if (type == WLAN_FC_TYPE_MGMT && stype == WLAN_FC_STYPE_AUTH && |
458 | fc & IEEE80211_FCTL_WEP && ieee->host_decrypt && | 458 | fc & IEEE80211_FCTL_PROTECTED && ieee->host_decrypt && |
459 | (keyidx = hostap_rx_frame_decrypt(ieee, skb, crypt)) < 0) | 459 | (keyidx = hostap_rx_frame_decrypt(ieee, skb, crypt)) < 0) |
460 | { | 460 | { |
461 | printk(KERN_DEBUG "%s: failed to decrypt mgmt::auth " | 461 | printk(KERN_DEBUG "%s: failed to decrypt mgmt::auth " |
@@ -556,7 +556,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
556 | 556 | ||
557 | /* skb: hdr + (possibly fragmented, possibly encrypted) payload */ | 557 | /* skb: hdr + (possibly fragmented, possibly encrypted) payload */ |
558 | 558 | ||
559 | if (ieee->host_decrypt && (fc & IEEE80211_FCTL_WEP) && | 559 | if (ieee->host_decrypt && (fc & IEEE80211_FCTL_PROTECTED) && |
560 | (keyidx = ieee80211_rx_frame_decrypt(ieee, skb, crypt)) < 0) | 560 | (keyidx = ieee80211_rx_frame_decrypt(ieee, skb, crypt)) < 0) |
561 | goto rx_dropped; | 561 | goto rx_dropped; |
562 | 562 | ||
@@ -564,7 +564,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
564 | 564 | ||
565 | /* skb: hdr + (possibly fragmented) plaintext payload */ | 565 | /* skb: hdr + (possibly fragmented) plaintext payload */ |
566 | // PR: FIXME: hostap has additional conditions in the "if" below: | 566 | // PR: FIXME: hostap has additional conditions in the "if" below: |
567 | // ieee->host_decrypt && (fc & IEEE80211_FCTL_WEP) && | 567 | // ieee->host_decrypt && (fc & IEEE80211_FCTL_PROTECTED) && |
568 | if ((frag != 0 || (fc & IEEE80211_FCTL_MOREFRAGS))) { | 568 | if ((frag != 0 || (fc & IEEE80211_FCTL_MOREFRAGS))) { |
569 | int flen; | 569 | int flen; |
570 | struct sk_buff *frag_skb = ieee80211_frag_cache_get(ieee, hdr); | 570 | struct sk_buff *frag_skb = ieee80211_frag_cache_get(ieee, hdr); |
@@ -620,12 +620,12 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
620 | 620 | ||
621 | /* skb: hdr + (possible reassembled) full MSDU payload; possibly still | 621 | /* skb: hdr + (possible reassembled) full MSDU payload; possibly still |
622 | * encrypted/authenticated */ | 622 | * encrypted/authenticated */ |
623 | if (ieee->host_decrypt && (fc & IEEE80211_FCTL_WEP) && | 623 | if (ieee->host_decrypt && (fc & IEEE80211_FCTL_PROTECTED) && |
624 | ieee80211_rx_frame_decrypt_msdu(ieee, skb, keyidx, crypt)) | 624 | ieee80211_rx_frame_decrypt_msdu(ieee, skb, keyidx, crypt)) |
625 | goto rx_dropped; | 625 | goto rx_dropped; |
626 | 626 | ||
627 | hdr = (struct ieee80211_hdr *) skb->data; | 627 | hdr = (struct ieee80211_hdr *) skb->data; |
628 | if (crypt && !(fc & IEEE80211_FCTL_WEP) && !ieee->open_wep) { | 628 | if (crypt && !(fc & IEEE80211_FCTL_PROTECTED) && !ieee->open_wep) { |
629 | if (/*ieee->ieee802_1x &&*/ | 629 | if (/*ieee->ieee802_1x &&*/ |
630 | ieee80211_is_eapol_frame(ieee, skb)) { | 630 | ieee80211_is_eapol_frame(ieee, skb)) { |
631 | #ifdef CONFIG_IEEE80211_DEBUG | 631 | #ifdef CONFIG_IEEE80211_DEBUG |
@@ -646,7 +646,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
646 | } | 646 | } |
647 | 647 | ||
648 | #ifdef CONFIG_IEEE80211_DEBUG | 648 | #ifdef CONFIG_IEEE80211_DEBUG |
649 | if (crypt && !(fc & IEEE80211_FCTL_WEP) && | 649 | if (crypt && !(fc & IEEE80211_FCTL_PROTECTED) && |
650 | ieee80211_is_eapol_frame(ieee, skb)) { | 650 | ieee80211_is_eapol_frame(ieee, skb)) { |
651 | struct eapol *eap = (struct eapol *)(skb->data + | 651 | struct eapol *eap = (struct eapol *)(skb->data + |
652 | 24); | 652 | 24); |
@@ -655,7 +655,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
655 | } | 655 | } |
656 | #endif | 656 | #endif |
657 | 657 | ||
658 | if (crypt && !(fc & IEEE80211_FCTL_WEP) && !ieee->open_wep && | 658 | if (crypt && !(fc & IEEE80211_FCTL_PROTECTED) && !ieee->open_wep && |
659 | !ieee80211_is_eapol_frame(ieee, skb)) { | 659 | !ieee80211_is_eapol_frame(ieee, skb)) { |
660 | IEEE80211_DEBUG_DROP( | 660 | IEEE80211_DEBUG_DROP( |
661 | "dropped unencrypted RX data " | 661 | "dropped unencrypted RX data " |
diff --git a/net/ieee80211/ieee80211_tx.c b/net/ieee80211/ieee80211_tx.c index d1049edcd14d..071d093f2989 100644 --- a/net/ieee80211/ieee80211_tx.c +++ b/net/ieee80211/ieee80211_tx.c | |||
@@ -313,7 +313,7 @@ int ieee80211_xmit(struct sk_buff *skb, | |||
313 | 313 | ||
314 | if (encrypt) | 314 | if (encrypt) |
315 | fc = IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA | | 315 | fc = IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA | |
316 | IEEE80211_FCTL_WEP; | 316 | IEEE80211_FCTL_PROTECTED; |
317 | else | 317 | else |
318 | fc = IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA; | 318 | fc = IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA; |
319 | 319 | ||