aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShanyu Zhao <shanyu.zhao@intel.com>2010-05-06 13:15:21 -0400
committerReinette Chatre <reinette.chatre@intel.com>2010-05-13 13:44:39 -0400
commit1808972f16adba592ceb10a47dee42ef8ee39cee (patch)
tree8494019b91c47a758400819b75f1b48862681bf0
parentb2e640d4851abfe6b03fc91597d0b8378c629907 (diff)
iwlwifi: enable remaining 6000 Gen2 devices
This patch enables all remaining 6000 series Gen2 devices. To work-around a firmware crash problem, we disable sending bt coex command for 6000g2b series devices. Signed-off-by: Jay Sternberg <jay.e.sternberg@intel.com> Signed-off-by: Shanyu Zhao <shanyu.zhao@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-6000.c252
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c17
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h7
5 files changed, 282 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index 9fbf54cd3e1a..924759487ad2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -71,6 +71,10 @@
71#define _IWL6000G2A_MODULE_FIRMWARE(api) IWL6000G2A_FW_PRE #api ".ucode" 71#define _IWL6000G2A_MODULE_FIRMWARE(api) IWL6000G2A_FW_PRE #api ".ucode"
72#define IWL6000G2A_MODULE_FIRMWARE(api) _IWL6000G2A_MODULE_FIRMWARE(api) 72#define IWL6000G2A_MODULE_FIRMWARE(api) _IWL6000G2A_MODULE_FIRMWARE(api)
73 73
74#define IWL6000G2B_FW_PRE "iwlwifi-6000g2b-"
75#define _IWL6000G2B_MODULE_FIRMWARE(api) IWL6000G2B_FW_PRE #api ".ucode"
76#define IWL6000G2B_MODULE_FIRMWARE(api) _IWL6000G2B_MODULE_FIRMWARE(api)
77
74 78
75static void iwl6000_set_ct_threshold(struct iwl_priv *priv) 79static void iwl6000_set_ct_threshold(struct iwl_priv *priv)
76{ 80{
@@ -335,6 +339,25 @@ static const struct iwl_ops iwl6000_ops = {
335 .led = &iwlagn_led_ops, 339 .led = &iwlagn_led_ops,
336}; 340};
337 341
342static void do_not_send_bt_config(struct iwl_priv *priv)
343{
344}
345
346static struct iwl_hcmd_ops iwl6000g2b_hcmd = {
347 .rxon_assoc = iwlagn_send_rxon_assoc,
348 .commit_rxon = iwl_commit_rxon,
349 .set_rxon_chain = iwl_set_rxon_chain,
350 .set_tx_ant = iwlagn_send_tx_ant_config,
351 .send_bt_config = do_not_send_bt_config,
352};
353
354static const struct iwl_ops iwl6000g2b_ops = {
355 .lib = &iwl6000_lib,
356 .hcmd = &iwl6000g2b_hcmd,
357 .utils = &iwlagn_hcmd_utils,
358 .led = &iwlagn_led_ops,
359};
360
338static struct iwl_lib_ops iwl6050_lib = { 361static struct iwl_lib_ops iwl6050_lib = {
339 .set_hw_params = iwl6050_hw_set_hw_params, 362 .set_hw_params = iwl6050_hw_set_hw_params,
340 .txq_update_byte_cnt_tbl = iwlagn_txq_update_byte_cnt_tbl, 363 .txq_update_byte_cnt_tbl = iwlagn_txq_update_byte_cnt_tbl,
@@ -445,6 +468,234 @@ struct iwl_cfg iwl6000g2a_2agn_cfg = {
445 .chain_noise_calib_by_driver = true, 468 .chain_noise_calib_by_driver = true,
446}; 469};
447 470
471struct iwl_cfg iwl6000g2a_2abg_cfg = {
472 .name = "6000 Series 2x2 ABG Gen2a",
473 .fw_name_pre = IWL6000G2A_FW_PRE,
474 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
475 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
476 .sku = IWL_SKU_A|IWL_SKU_G,
477 .ops = &iwl6000_ops,
478 .eeprom_size = OTP_LOW_IMAGE_SIZE,
479 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
480 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
481 .num_of_queues = IWLAGN_NUM_QUEUES,
482 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
483 .mod_params = &iwlagn_mod_params,
484 .valid_tx_ant = ANT_AB,
485 .valid_rx_ant = ANT_AB,
486 .pll_cfg_val = 0,
487 .set_l0s = true,
488 .use_bsm = false,
489 .pa_type = IWL_PA_SYSTEM,
490 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
491 .shadow_ram_support = true,
492 .led_compensation = 51,
493 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
494 .supports_idle = true,
495 .adv_thermal_throttle = true,
496 .support_ct_kill_exit = true,
497 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
498 .chain_noise_scale = 1000,
499 .monitor_recover_period = IWL_MONITORING_PERIOD,
500 .max_event_log_size = 512,
501};
502
503struct iwl_cfg iwl6000g2a_2bg_cfg = {
504 .name = "6000 Series 2x2 BG Gen2a",
505 .fw_name_pre = IWL6000G2A_FW_PRE,
506 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
507 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
508 .sku = IWL_SKU_G,
509 .ops = &iwl6000_ops,
510 .eeprom_size = OTP_LOW_IMAGE_SIZE,
511 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
512 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
513 .num_of_queues = IWLAGN_NUM_QUEUES,
514 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
515 .mod_params = &iwlagn_mod_params,
516 .valid_tx_ant = ANT_AB,
517 .valid_rx_ant = ANT_AB,
518 .pll_cfg_val = 0,
519 .set_l0s = true,
520 .use_bsm = false,
521 .pa_type = IWL_PA_SYSTEM,
522 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
523 .shadow_ram_support = true,
524 .led_compensation = 51,
525 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
526 .supports_idle = true,
527 .adv_thermal_throttle = true,
528 .support_ct_kill_exit = true,
529 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
530 .chain_noise_scale = 1000,
531 .monitor_recover_period = IWL_MONITORING_PERIOD,
532 .max_event_log_size = 512,
533};
534
535struct iwl_cfg iwl6000g2b_2agn_cfg = {
536 .name = "6000 Series 2x2 AGN Gen2b",
537 .fw_name_pre = IWL6000G2B_FW_PRE,
538 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
539 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
540 .sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
541 .ops = &iwl6000g2b_ops,
542 .eeprom_size = OTP_LOW_IMAGE_SIZE,
543 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
544 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
545 .num_of_queues = IWLAGN_NUM_QUEUES,
546 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
547 .mod_params = &iwlagn_mod_params,
548 .valid_tx_ant = ANT_AB,
549 .valid_rx_ant = ANT_AB,
550 .pll_cfg_val = 0,
551 .set_l0s = true,
552 .use_bsm = false,
553 .pa_type = IWL_PA_SYSTEM,
554 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
555 .shadow_ram_support = true,
556 .ht_greenfield_support = true,
557 .led_compensation = 51,
558 .use_rts_for_ht = true, /* use rts/cts protection */
559 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
560 .supports_idle = true,
561 .adv_thermal_throttle = true,
562 .support_ct_kill_exit = true,
563 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
564 .chain_noise_scale = 1000,
565 .monitor_recover_period = IWL_MONITORING_PERIOD,
566 .max_event_log_size = 512,
567};
568
569struct iwl_cfg iwl6000g2b_2abg_cfg = {
570 .name = "6000 Series 2x2 ABG Gen2b",
571 .fw_name_pre = IWL6000G2B_FW_PRE,
572 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
573 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
574 .sku = IWL_SKU_A|IWL_SKU_G,
575 .ops = &iwl6000g2b_ops,
576 .eeprom_size = OTP_LOW_IMAGE_SIZE,
577 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
578 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
579 .num_of_queues = IWLAGN_NUM_QUEUES,
580 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
581 .mod_params = &iwlagn_mod_params,
582 .valid_tx_ant = ANT_AB,
583 .valid_rx_ant = ANT_AB,
584 .pll_cfg_val = 0,
585 .set_l0s = true,
586 .use_bsm = false,
587 .pa_type = IWL_PA_SYSTEM,
588 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
589 .shadow_ram_support = true,
590 .led_compensation = 51,
591 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
592 .supports_idle = true,
593 .adv_thermal_throttle = true,
594 .support_ct_kill_exit = true,
595 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
596 .chain_noise_scale = 1000,
597 .monitor_recover_period = IWL_MONITORING_PERIOD,
598 .max_event_log_size = 512,
599};
600
601struct iwl_cfg iwl6000g2b_2bg_cfg = {
602 .name = "6000 Series 2x2 BG Gen2b",
603 .fw_name_pre = IWL6000G2B_FW_PRE,
604 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
605 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
606 .sku = IWL_SKU_G,
607 .ops = &iwl6000g2b_ops,
608 .eeprom_size = OTP_LOW_IMAGE_SIZE,
609 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
610 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
611 .num_of_queues = IWLAGN_NUM_QUEUES,
612 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
613 .mod_params = &iwlagn_mod_params,
614 .valid_tx_ant = ANT_AB,
615 .valid_rx_ant = ANT_AB,
616 .pll_cfg_val = 0,
617 .set_l0s = true,
618 .use_bsm = false,
619 .pa_type = IWL_PA_SYSTEM,
620 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
621 .shadow_ram_support = true,
622 .led_compensation = 51,
623 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
624 .supports_idle = true,
625 .adv_thermal_throttle = true,
626 .support_ct_kill_exit = true,
627 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
628 .chain_noise_scale = 1000,
629 .monitor_recover_period = IWL_MONITORING_PERIOD,
630 .max_event_log_size = 512,
631};
632
633struct iwl_cfg iwl6000g2b_bgn_cfg = {
634 .name = "6000 Series 1x2 BGN Gen2b",
635 .fw_name_pre = IWL6000G2B_FW_PRE,
636 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
637 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
638 .sku = IWL_SKU_G|IWL_SKU_N,
639 .ops = &iwl6000g2b_ops,
640 .eeprom_size = OTP_LOW_IMAGE_SIZE,
641 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
642 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
643 .num_of_queues = IWLAGN_NUM_QUEUES,
644 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
645 .mod_params = &iwlagn_mod_params,
646 .valid_tx_ant = ANT_A,
647 .valid_rx_ant = ANT_AB,
648 .pll_cfg_val = 0,
649 .set_l0s = true,
650 .use_bsm = false,
651 .pa_type = IWL_PA_SYSTEM,
652 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
653 .shadow_ram_support = true,
654 .ht_greenfield_support = true,
655 .led_compensation = 51,
656 .use_rts_for_ht = true, /* use rts/cts protection */
657 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
658 .supports_idle = true,
659 .adv_thermal_throttle = true,
660 .support_ct_kill_exit = true,
661 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
662 .chain_noise_scale = 1000,
663 .monitor_recover_period = IWL_MONITORING_PERIOD,
664 .max_event_log_size = 512,
665};
666
667struct iwl_cfg iwl6000g2b_bg_cfg = {
668 .name = "6000 Series 1x2 BG Gen2b",
669 .fw_name_pre = IWL6000G2B_FW_PRE,
670 .ucode_api_max = IWL6000G2_UCODE_API_MAX,
671 .ucode_api_min = IWL6000G2_UCODE_API_MIN,
672 .sku = IWL_SKU_G,
673 .ops = &iwl6000g2b_ops,
674 .eeprom_size = OTP_LOW_IMAGE_SIZE,
675 .eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
676 .eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
677 .num_of_queues = IWLAGN_NUM_QUEUES,
678 .num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
679 .mod_params = &iwlagn_mod_params,
680 .valid_tx_ant = ANT_A,
681 .valid_rx_ant = ANT_AB,
682 .pll_cfg_val = 0,
683 .set_l0s = true,
684 .use_bsm = false,
685 .pa_type = IWL_PA_SYSTEM,
686 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
687 .shadow_ram_support = true,
688 .led_compensation = 51,
689 .chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
690 .supports_idle = true,
691 .adv_thermal_throttle = true,
692 .support_ct_kill_exit = true,
693 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
694 .chain_noise_scale = 1000,
695 .monitor_recover_period = IWL_MONITORING_PERIOD,
696 .max_event_log_size = 512,
697};
698
448/* 699/*
449 * "i": Internal configuration, use internal Power Amplifier 700 * "i": Internal configuration, use internal Power Amplifier
450 */ 701 */
@@ -667,3 +918,4 @@ struct iwl_cfg iwl6000_3agn_cfg = {
667MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); 918MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX));
668MODULE_FIRMWARE(IWL6050_MODULE_FIRMWARE(IWL6050_UCODE_API_MAX)); 919MODULE_FIRMWARE(IWL6050_MODULE_FIRMWARE(IWL6050_UCODE_API_MAX));
669MODULE_FIRMWARE(IWL6000G2A_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX)); 920MODULE_FIRMWARE(IWL6000G2A_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX));
921MODULE_FIRMWARE(IWL6000G2B_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX));
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
index 44ef5d93befc..25851ec2ab10 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
@@ -37,7 +37,7 @@
37#include "iwl-io.h" 37#include "iwl-io.h"
38#include "iwl-agn.h" 38#include "iwl-agn.h"
39 39
40static int iwlagn_send_rxon_assoc(struct iwl_priv *priv) 40int iwlagn_send_rxon_assoc(struct iwl_priv *priv)
41{ 41{
42 int ret = 0; 42 int ret = 0;
43 struct iwl5000_rxon_assoc_cmd rxon_assoc; 43 struct iwl5000_rxon_assoc_cmd rxon_assoc;
@@ -84,7 +84,7 @@ static int iwlagn_send_rxon_assoc(struct iwl_priv *priv)
84 return ret; 84 return ret;
85} 85}
86 86
87static int iwlagn_send_tx_ant_config(struct iwl_priv *priv, u8 valid_tx_ant) 87int iwlagn_send_tx_ant_config(struct iwl_priv *priv, u8 valid_tx_ant)
88{ 88{
89 struct iwl_tx_ant_config_cmd tx_ant_cmd = { 89 struct iwl_tx_ant_config_cmd tx_ant_cmd = {
90 .valid = cpu_to_le32(valid_tx_ant), 90 .valid = cpu_to_le32(valid_tx_ant),
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 845d0eeb0c86..f91024616822 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -4059,6 +4059,23 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
4059 {IWL_PCI_DEVICE(0x0082, 0x1201, iwl6000g2a_2agn_cfg)}, 4059 {IWL_PCI_DEVICE(0x0082, 0x1201, iwl6000g2a_2agn_cfg)},
4060 {IWL_PCI_DEVICE(0x0085, 0x1211, iwl6000g2a_2agn_cfg)}, 4060 {IWL_PCI_DEVICE(0x0085, 0x1211, iwl6000g2a_2agn_cfg)},
4061 {IWL_PCI_DEVICE(0x0082, 0x1221, iwl6000g2a_2agn_cfg)}, 4061 {IWL_PCI_DEVICE(0x0082, 0x1221, iwl6000g2a_2agn_cfg)},
4062 {IWL_PCI_DEVICE(0x0082, 0x1206, iwl6000g2a_2abg_cfg)},
4063 {IWL_PCI_DEVICE(0x0085, 0x1216, iwl6000g2a_2abg_cfg)},
4064 {IWL_PCI_DEVICE(0x0082, 0x1226, iwl6000g2a_2abg_cfg)},
4065 {IWL_PCI_DEVICE(0x0082, 0x1207, iwl6000g2a_2bg_cfg)},
4066
4067/* 6x00 Series Gen2b */
4068 {IWL_PCI_DEVICE(0x008F, 0x5105, iwl6000g2b_bgn_cfg)},
4069 {IWL_PCI_DEVICE(0x0090, 0x5115, iwl6000g2b_bgn_cfg)},
4070 {IWL_PCI_DEVICE(0x008F, 0x5125, iwl6000g2b_bgn_cfg)},
4071 {IWL_PCI_DEVICE(0x008F, 0x5107, iwl6000g2b_bg_cfg)},
4072 {IWL_PCI_DEVICE(0x008F, 0x5201, iwl6000g2b_2agn_cfg)},
4073 {IWL_PCI_DEVICE(0x0090, 0x5211, iwl6000g2b_2agn_cfg)},
4074 {IWL_PCI_DEVICE(0x008F, 0x5221, iwl6000g2b_2agn_cfg)},
4075 {IWL_PCI_DEVICE(0x008F, 0x5206, iwl6000g2b_2abg_cfg)},
4076 {IWL_PCI_DEVICE(0x0090, 0x5216, iwl6000g2b_2abg_cfg)},
4077 {IWL_PCI_DEVICE(0x008F, 0x5226, iwl6000g2b_2abg_cfg)},
4078 {IWL_PCI_DEVICE(0x008F, 0x5207, iwl6000g2b_2bg_cfg)},
4062 4079
4063/* 6x50 WiFi/WiMax Series */ 4080/* 6x50 WiFi/WiMax Series */
4064 {IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_2agn_cfg)}, 4081 {IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_2agn_cfg)},
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.h b/drivers/net/wireless/iwlwifi/iwl-agn.h
index fbbefe1a3b49..12c198f29895 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.h
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.h
@@ -180,4 +180,8 @@ void iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif);
180int iwlagn_manage_ibss_station(struct iwl_priv *priv, 180int iwlagn_manage_ibss_station(struct iwl_priv *priv,
181 struct ieee80211_vif *vif, bool add); 181 struct ieee80211_vif *vif, bool add);
182 182
183/* hcmd */
184int iwlagn_send_rxon_assoc(struct iwl_priv *priv);
185int iwlagn_send_tx_ant_config(struct iwl_priv *priv, u8 valid_tx_ant);
186
183#endif /* __iwl_agn_h__ */ 187#endif /* __iwl_agn_h__ */
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index fdd043014ec2..04296fd50f18 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -58,6 +58,13 @@ extern struct iwl_cfg iwl5100_abg_cfg;
58extern struct iwl_cfg iwl5150_agn_cfg; 58extern struct iwl_cfg iwl5150_agn_cfg;
59extern struct iwl_cfg iwl5150_abg_cfg; 59extern struct iwl_cfg iwl5150_abg_cfg;
60extern struct iwl_cfg iwl6000g2a_2agn_cfg; 60extern struct iwl_cfg iwl6000g2a_2agn_cfg;
61extern struct iwl_cfg iwl6000g2a_2abg_cfg;
62extern struct iwl_cfg iwl6000g2a_2bg_cfg;
63extern struct iwl_cfg iwl6000g2b_bgn_cfg;
64extern struct iwl_cfg iwl6000g2b_bg_cfg;
65extern struct iwl_cfg iwl6000g2b_2agn_cfg;
66extern struct iwl_cfg iwl6000g2b_2abg_cfg;
67extern struct iwl_cfg iwl6000g2b_2bg_cfg;
61extern struct iwl_cfg iwl6000i_2agn_cfg; 68extern struct iwl_cfg iwl6000i_2agn_cfg;
62extern struct iwl_cfg iwl6000i_2abg_cfg; 69extern struct iwl_cfg iwl6000i_2abg_cfg;
63extern struct iwl_cfg iwl6000i_2bg_cfg; 70extern struct iwl_cfg iwl6000i_2bg_cfg;