diff options
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-3945.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-6000.c | 20 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-ucode.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 70 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.h | 20 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-sta.c | 13 |
7 files changed, 79 insertions, 54 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c index d39f449a9bb0..cac9647da71c 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945.c +++ b/drivers/net/wireless/iwlwifi/iwl-3945.c | |||
@@ -1784,6 +1784,9 @@ int iwl3945_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx) | |||
1784 | int rc = 0; | 1784 | int rc = 0; |
1785 | bool new_assoc = !!(staging_rxon->filter_flags & RXON_FILTER_ASSOC_MSK); | 1785 | bool new_assoc = !!(staging_rxon->filter_flags & RXON_FILTER_ASSOC_MSK); |
1786 | 1786 | ||
1787 | if (test_bit(STATUS_EXIT_PENDING, &priv->status)) | ||
1788 | return -EINVAL; | ||
1789 | |||
1787 | if (!iwl_is_alive(priv)) | 1790 | if (!iwl_is_alive(priv)) |
1788 | return -1; | 1791 | return -1; |
1789 | 1792 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c index ec41f2725292..8018f38d5165 100644 --- a/drivers/net/wireless/iwlwifi/iwl-6000.c +++ b/drivers/net/wireless/iwlwifi/iwl-6000.c | |||
@@ -552,7 +552,7 @@ static struct iwl_bt_params iwl6000_bt_params = { | |||
552 | .bt_sco_disable = true, | 552 | .bt_sco_disable = true, |
553 | }; | 553 | }; |
554 | 554 | ||
555 | struct iwl_cfg iwl6000g2a_2agn_cfg = { | 555 | struct iwl_cfg iwl6005_2agn_cfg = { |
556 | .name = "Intel(R) Centrino(R) Advanced-N 6205 AGN", | 556 | .name = "Intel(R) Centrino(R) Advanced-N 6205 AGN", |
557 | .fw_name_pre = IWL6000G2A_FW_PRE, | 557 | .fw_name_pre = IWL6000G2A_FW_PRE, |
558 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, | 558 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, |
@@ -568,7 +568,7 @@ struct iwl_cfg iwl6000g2a_2agn_cfg = { | |||
568 | .led_mode = IWL_LED_RF_STATE, | 568 | .led_mode = IWL_LED_RF_STATE, |
569 | }; | 569 | }; |
570 | 570 | ||
571 | struct iwl_cfg iwl6000g2a_2abg_cfg = { | 571 | struct iwl_cfg iwl6005_2abg_cfg = { |
572 | .name = "Intel(R) Centrino(R) Advanced-N 6205 ABG", | 572 | .name = "Intel(R) Centrino(R) Advanced-N 6205 ABG", |
573 | .fw_name_pre = IWL6000G2A_FW_PRE, | 573 | .fw_name_pre = IWL6000G2A_FW_PRE, |
574 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, | 574 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, |
@@ -583,7 +583,7 @@ struct iwl_cfg iwl6000g2a_2abg_cfg = { | |||
583 | .led_mode = IWL_LED_RF_STATE, | 583 | .led_mode = IWL_LED_RF_STATE, |
584 | }; | 584 | }; |
585 | 585 | ||
586 | struct iwl_cfg iwl6000g2a_2bg_cfg = { | 586 | struct iwl_cfg iwl6005_2bg_cfg = { |
587 | .name = "Intel(R) Centrino(R) Advanced-N 6205 BG", | 587 | .name = "Intel(R) Centrino(R) Advanced-N 6205 BG", |
588 | .fw_name_pre = IWL6000G2A_FW_PRE, | 588 | .fw_name_pre = IWL6000G2A_FW_PRE, |
589 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, | 589 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, |
@@ -598,7 +598,7 @@ struct iwl_cfg iwl6000g2a_2bg_cfg = { | |||
598 | .led_mode = IWL_LED_RF_STATE, | 598 | .led_mode = IWL_LED_RF_STATE, |
599 | }; | 599 | }; |
600 | 600 | ||
601 | struct iwl_cfg iwl6000g2b_2agn_cfg = { | 601 | struct iwl_cfg iwl6030_2agn_cfg = { |
602 | .name = "Intel(R) Centrino(R) Advanced-N 6230 AGN", | 602 | .name = "Intel(R) Centrino(R) Advanced-N 6230 AGN", |
603 | .fw_name_pre = IWL6000G2B_FW_PRE, | 603 | .fw_name_pre = IWL6000G2B_FW_PRE, |
604 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, | 604 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, |
@@ -618,7 +618,7 @@ struct iwl_cfg iwl6000g2b_2agn_cfg = { | |||
618 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 618 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
619 | }; | 619 | }; |
620 | 620 | ||
621 | struct iwl_cfg iwl6000g2b_2abg_cfg = { | 621 | struct iwl_cfg iwl6030_2abg_cfg = { |
622 | .name = "Intel(R) Centrino(R) Advanced-N 6230 ABG", | 622 | .name = "Intel(R) Centrino(R) Advanced-N 6230 ABG", |
623 | .fw_name_pre = IWL6000G2B_FW_PRE, | 623 | .fw_name_pre = IWL6000G2B_FW_PRE, |
624 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, | 624 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, |
@@ -637,7 +637,7 @@ struct iwl_cfg iwl6000g2b_2abg_cfg = { | |||
637 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 637 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
638 | }; | 638 | }; |
639 | 639 | ||
640 | struct iwl_cfg iwl6000g2b_2bgn_cfg = { | 640 | struct iwl_cfg iwl6030_2bgn_cfg = { |
641 | .name = "Intel(R) Centrino(R) Advanced-N 6230 BGN", | 641 | .name = "Intel(R) Centrino(R) Advanced-N 6230 BGN", |
642 | .fw_name_pre = IWL6000G2B_FW_PRE, | 642 | .fw_name_pre = IWL6000G2B_FW_PRE, |
643 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, | 643 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, |
@@ -657,7 +657,7 @@ struct iwl_cfg iwl6000g2b_2bgn_cfg = { | |||
657 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 657 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
658 | }; | 658 | }; |
659 | 659 | ||
660 | struct iwl_cfg iwl6000g2b_2bg_cfg = { | 660 | struct iwl_cfg iwl6030_2bg_cfg = { |
661 | .name = "Intel(R) Centrino(R) Advanced-N 6230 BG", | 661 | .name = "Intel(R) Centrino(R) Advanced-N 6230 BG", |
662 | .fw_name_pre = IWL6000G2B_FW_PRE, | 662 | .fw_name_pre = IWL6000G2B_FW_PRE, |
663 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, | 663 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, |
@@ -676,7 +676,7 @@ struct iwl_cfg iwl6000g2b_2bg_cfg = { | |||
676 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 676 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
677 | }; | 677 | }; |
678 | 678 | ||
679 | struct iwl_cfg iwl6000g2b_bgn_cfg = { | 679 | struct iwl_cfg iwl1030_bgn_cfg = { |
680 | .name = "Intel(R) Centrino(R) Wireless-N 1030 BGN", | 680 | .name = "Intel(R) Centrino(R) Wireless-N 1030 BGN", |
681 | .fw_name_pre = IWL6000G2B_FW_PRE, | 681 | .fw_name_pre = IWL6000G2B_FW_PRE, |
682 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, | 682 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, |
@@ -696,7 +696,7 @@ struct iwl_cfg iwl6000g2b_bgn_cfg = { | |||
696 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 696 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
697 | }; | 697 | }; |
698 | 698 | ||
699 | struct iwl_cfg iwl6000g2b_bg_cfg = { | 699 | struct iwl_cfg iwl1030_bg_cfg = { |
700 | .name = "Intel(R) Centrino(R) Wireless-N 1030 BG", | 700 | .name = "Intel(R) Centrino(R) Wireless-N 1030 BG", |
701 | .fw_name_pre = IWL6000G2B_FW_PRE, | 701 | .fw_name_pre = IWL6000G2B_FW_PRE, |
702 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, | 702 | .ucode_api_max = IWL6000G2_UCODE_API_MAX, |
@@ -782,7 +782,7 @@ struct iwl_cfg iwl6050_2agn_cfg = { | |||
782 | .led_mode = IWL_LED_BLINK, | 782 | .led_mode = IWL_LED_BLINK, |
783 | }; | 783 | }; |
784 | 784 | ||
785 | struct iwl_cfg iwl6050g2_bgn_cfg = { | 785 | struct iwl_cfg iwl6150_bgn_cfg = { |
786 | .name = "Intel(R) Centrino(R) Wireless-N + WiMAX 6150 BGN", | 786 | .name = "Intel(R) Centrino(R) Wireless-N + WiMAX 6150 BGN", |
787 | .fw_name_pre = IWL6050_FW_PRE, | 787 | .fw_name_pre = IWL6050_FW_PRE, |
788 | .ucode_api_max = IWL6050_UCODE_API_MAX, | 788 | .ucode_api_max = IWL6050_UCODE_API_MAX, |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c index 203ee60a82b4..4865b82355d7 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | |||
@@ -130,6 +130,9 @@ int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx) | |||
130 | 130 | ||
131 | lockdep_assert_held(&priv->mutex); | 131 | lockdep_assert_held(&priv->mutex); |
132 | 132 | ||
133 | if (test_bit(STATUS_EXIT_PENDING, &priv->status)) | ||
134 | return -EINVAL; | ||
135 | |||
133 | if (!iwl_is_alive(priv)) | 136 | if (!iwl_is_alive(priv)) |
134 | return -EBUSY; | 137 | return -EBUSY; |
135 | 138 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c b/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c index 0bdd2bb0bbd3..24dabcd2a36c 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c | |||
@@ -531,6 +531,10 @@ int iwlagn_alive_notify(struct iwl_priv *priv) | |||
531 | 531 | ||
532 | spin_unlock_irqrestore(&priv->lock, flags); | 532 | spin_unlock_irqrestore(&priv->lock, flags); |
533 | 533 | ||
534 | /* Enable L1-Active */ | ||
535 | iwl_clear_bits_prph(priv, APMG_PCIDEV_STT_REG, | ||
536 | APMG_PCIDEV_STT_VAL_L1_ACT_DIS); | ||
537 | |||
534 | iwlagn_send_wimax_coex(priv); | 538 | iwlagn_send_wimax_coex(priv); |
535 | 539 | ||
536 | iwlagn_set_Xtal_calib(priv); | 540 | iwlagn_set_Xtal_calib(priv); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 50cee2b5a6b7..32ab4a0215a0 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -2502,7 +2502,7 @@ int iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log, | |||
2502 | return pos; | 2502 | return pos; |
2503 | } | 2503 | } |
2504 | 2504 | ||
2505 | /* enable/disable bt channel announcement */ | 2505 | /* enable/disable bt channel inhibition */ |
2506 | priv->bt_ch_announce = iwlagn_bt_ch_announce; | 2506 | priv->bt_ch_announce = iwlagn_bt_ch_announce; |
2507 | 2507 | ||
2508 | #ifdef CONFIG_IWLWIFI_DEBUG | 2508 | #ifdef CONFIG_IWLWIFI_DEBUG |
@@ -4044,8 +4044,10 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
4044 | (iwlagn_ant_coupling > IWL_BT_ANTENNA_COUPLING_THRESHOLD) ? | 4044 | (iwlagn_ant_coupling > IWL_BT_ANTENNA_COUPLING_THRESHOLD) ? |
4045 | true : false; | 4045 | true : false; |
4046 | 4046 | ||
4047 | /* enable/disable bt channel announcement */ | 4047 | /* enable/disable bt channel inhibition */ |
4048 | priv->bt_ch_announce = iwlagn_bt_ch_announce; | 4048 | priv->bt_ch_announce = iwlagn_bt_ch_announce; |
4049 | IWL_DEBUG_INFO(priv, "BT channel inhibition is %s\n", | ||
4050 | (priv->bt_ch_announce) ? "On" : "Off"); | ||
4049 | 4051 | ||
4050 | if (iwl_alloc_traffic_mem(priv)) | 4052 | if (iwl_alloc_traffic_mem(priv)) |
4051 | IWL_ERR(priv, "Not enough memory to generate traffic log\n"); | 4053 | IWL_ERR(priv, "Not enough memory to generate traffic log\n"); |
@@ -4419,31 +4421,31 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = { | |||
4419 | {IWL_PCI_DEVICE(0x4239, 0x1316, iwl6000i_2abg_cfg)}, | 4421 | {IWL_PCI_DEVICE(0x4239, 0x1316, iwl6000i_2abg_cfg)}, |
4420 | 4422 | ||
4421 | /* 6x00 Series Gen2a */ | 4423 | /* 6x00 Series Gen2a */ |
4422 | {IWL_PCI_DEVICE(0x0082, 0x1301, iwl6000g2a_2agn_cfg)}, | 4424 | {IWL_PCI_DEVICE(0x0082, 0x1301, iwl6005_2agn_cfg)}, |
4423 | {IWL_PCI_DEVICE(0x0082, 0x1306, iwl6000g2a_2abg_cfg)}, | 4425 | {IWL_PCI_DEVICE(0x0082, 0x1306, iwl6005_2abg_cfg)}, |
4424 | {IWL_PCI_DEVICE(0x0082, 0x1307, iwl6000g2a_2bg_cfg)}, | 4426 | {IWL_PCI_DEVICE(0x0082, 0x1307, iwl6005_2bg_cfg)}, |
4425 | {IWL_PCI_DEVICE(0x0082, 0x1321, iwl6000g2a_2agn_cfg)}, | 4427 | {IWL_PCI_DEVICE(0x0082, 0x1321, iwl6005_2agn_cfg)}, |
4426 | {IWL_PCI_DEVICE(0x0082, 0x1326, iwl6000g2a_2abg_cfg)}, | 4428 | {IWL_PCI_DEVICE(0x0082, 0x1326, iwl6005_2abg_cfg)}, |
4427 | {IWL_PCI_DEVICE(0x0085, 0x1311, iwl6000g2a_2agn_cfg)}, | 4429 | {IWL_PCI_DEVICE(0x0085, 0x1311, iwl6005_2agn_cfg)}, |
4428 | {IWL_PCI_DEVICE(0x0085, 0x1316, iwl6000g2a_2abg_cfg)}, | 4430 | {IWL_PCI_DEVICE(0x0085, 0x1316, iwl6005_2abg_cfg)}, |
4429 | 4431 | ||
4430 | /* 6x00 Series Gen2b */ | 4432 | /* 6x00 Series Gen2b */ |
4431 | {IWL_PCI_DEVICE(0x008A, 0x5305, iwl6000g2b_bgn_cfg)}, | 4433 | {IWL_PCI_DEVICE(0x008A, 0x5305, iwl1030_bgn_cfg)}, |
4432 | {IWL_PCI_DEVICE(0x008A, 0x5307, iwl6000g2b_bg_cfg)}, | 4434 | {IWL_PCI_DEVICE(0x008A, 0x5307, iwl1030_bg_cfg)}, |
4433 | {IWL_PCI_DEVICE(0x008A, 0x5325, iwl6000g2b_bgn_cfg)}, | 4435 | {IWL_PCI_DEVICE(0x008A, 0x5325, iwl1030_bgn_cfg)}, |
4434 | {IWL_PCI_DEVICE(0x008A, 0x5327, iwl6000g2b_bg_cfg)}, | 4436 | {IWL_PCI_DEVICE(0x008A, 0x5327, iwl1030_bg_cfg)}, |
4435 | {IWL_PCI_DEVICE(0x008B, 0x5315, iwl6000g2b_bgn_cfg)}, | 4437 | {IWL_PCI_DEVICE(0x008B, 0x5315, iwl1030_bgn_cfg)}, |
4436 | {IWL_PCI_DEVICE(0x008B, 0x5317, iwl6000g2b_bg_cfg)}, | 4438 | {IWL_PCI_DEVICE(0x008B, 0x5317, iwl1030_bg_cfg)}, |
4437 | {IWL_PCI_DEVICE(0x0090, 0x5211, iwl6000g2b_2agn_cfg)}, | 4439 | {IWL_PCI_DEVICE(0x0090, 0x5211, iwl6030_2agn_cfg)}, |
4438 | {IWL_PCI_DEVICE(0x0090, 0x5215, iwl6000g2b_2bgn_cfg)}, | 4440 | {IWL_PCI_DEVICE(0x0090, 0x5215, iwl6030_2bgn_cfg)}, |
4439 | {IWL_PCI_DEVICE(0x0090, 0x5216, iwl6000g2b_2abg_cfg)}, | 4441 | {IWL_PCI_DEVICE(0x0090, 0x5216, iwl6030_2abg_cfg)}, |
4440 | {IWL_PCI_DEVICE(0x0091, 0x5201, iwl6000g2b_2agn_cfg)}, | 4442 | {IWL_PCI_DEVICE(0x0091, 0x5201, iwl6030_2agn_cfg)}, |
4441 | {IWL_PCI_DEVICE(0x0091, 0x5205, iwl6000g2b_2bgn_cfg)}, | 4443 | {IWL_PCI_DEVICE(0x0091, 0x5205, iwl6030_2bgn_cfg)}, |
4442 | {IWL_PCI_DEVICE(0x0091, 0x5206, iwl6000g2b_2abg_cfg)}, | 4444 | {IWL_PCI_DEVICE(0x0091, 0x5206, iwl6030_2abg_cfg)}, |
4443 | {IWL_PCI_DEVICE(0x0091, 0x5207, iwl6000g2b_2bg_cfg)}, | 4445 | {IWL_PCI_DEVICE(0x0091, 0x5207, iwl6030_2bg_cfg)}, |
4444 | {IWL_PCI_DEVICE(0x0091, 0x5221, iwl6000g2b_2agn_cfg)}, | 4446 | {IWL_PCI_DEVICE(0x0091, 0x5221, iwl6030_2agn_cfg)}, |
4445 | {IWL_PCI_DEVICE(0x0091, 0x5225, iwl6000g2b_2bgn_cfg)}, | 4447 | {IWL_PCI_DEVICE(0x0091, 0x5225, iwl6030_2bgn_cfg)}, |
4446 | {IWL_PCI_DEVICE(0x0091, 0x5226, iwl6000g2b_2abg_cfg)}, | 4448 | {IWL_PCI_DEVICE(0x0091, 0x5226, iwl6030_2abg_cfg)}, |
4447 | 4449 | ||
4448 | /* 6x50 WiFi/WiMax Series */ | 4450 | /* 6x50 WiFi/WiMax Series */ |
4449 | {IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_2agn_cfg)}, | 4451 | {IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_2agn_cfg)}, |
@@ -4454,12 +4456,12 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = { | |||
4454 | {IWL_PCI_DEVICE(0x0089, 0x1316, iwl6050_2abg_cfg)}, | 4456 | {IWL_PCI_DEVICE(0x0089, 0x1316, iwl6050_2abg_cfg)}, |
4455 | 4457 | ||
4456 | /* 6x50 WiFi/WiMax Series Gen2 */ | 4458 | /* 6x50 WiFi/WiMax Series Gen2 */ |
4457 | {IWL_PCI_DEVICE(0x0885, 0x1305, iwl6050g2_bgn_cfg)}, | 4459 | {IWL_PCI_DEVICE(0x0885, 0x1305, iwl6150_bgn_cfg)}, |
4458 | {IWL_PCI_DEVICE(0x0885, 0x1306, iwl6050g2_bgn_cfg)}, | 4460 | {IWL_PCI_DEVICE(0x0885, 0x1306, iwl6150_bgn_cfg)}, |
4459 | {IWL_PCI_DEVICE(0x0885, 0x1325, iwl6050g2_bgn_cfg)}, | 4461 | {IWL_PCI_DEVICE(0x0885, 0x1325, iwl6150_bgn_cfg)}, |
4460 | {IWL_PCI_DEVICE(0x0885, 0x1326, iwl6050g2_bgn_cfg)}, | 4462 | {IWL_PCI_DEVICE(0x0885, 0x1326, iwl6150_bgn_cfg)}, |
4461 | {IWL_PCI_DEVICE(0x0886, 0x1315, iwl6050g2_bgn_cfg)}, | 4463 | {IWL_PCI_DEVICE(0x0886, 0x1315, iwl6150_bgn_cfg)}, |
4462 | {IWL_PCI_DEVICE(0x0886, 0x1316, iwl6050g2_bgn_cfg)}, | 4464 | {IWL_PCI_DEVICE(0x0886, 0x1316, iwl6150_bgn_cfg)}, |
4463 | 4465 | ||
4464 | /* 1000 Series WiFi */ | 4466 | /* 1000 Series WiFi */ |
4465 | {IWL_PCI_DEVICE(0x0083, 0x1205, iwl1000_bgn_cfg)}, | 4467 | {IWL_PCI_DEVICE(0x0083, 0x1205, iwl1000_bgn_cfg)}, |
@@ -4588,6 +4590,6 @@ module_param_named(antenna_coupling, iwlagn_ant_coupling, int, S_IRUGO); | |||
4588 | MODULE_PARM_DESC(antenna_coupling, | 4590 | MODULE_PARM_DESC(antenna_coupling, |
4589 | "specify antenna coupling in dB (defualt: 0 dB)"); | 4591 | "specify antenna coupling in dB (defualt: 0 dB)"); |
4590 | 4592 | ||
4591 | module_param_named(bt_ch_announce, iwlagn_bt_ch_announce, bool, S_IRUGO); | 4593 | module_param_named(bt_ch_inhibition, iwlagn_bt_ch_announce, bool, S_IRUGO); |
4592 | MODULE_PARM_DESC(bt_ch_announce, | 4594 | MODULE_PARM_DESC(bt_ch_inhibition, |
4593 | "Enable BT channel announcement mode (default: enable)"); | 4595 | "Disable BT channel inhibition (default: enable)"); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.h b/drivers/net/wireless/iwlwifi/iwl-agn.h index 28837a185a28..da303585f801 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.h +++ b/drivers/net/wireless/iwlwifi/iwl-agn.h | |||
@@ -74,22 +74,22 @@ extern struct iwl_cfg iwl5100_bgn_cfg; | |||
74 | extern struct iwl_cfg iwl5100_abg_cfg; | 74 | extern struct iwl_cfg iwl5100_abg_cfg; |
75 | extern struct iwl_cfg iwl5150_agn_cfg; | 75 | extern struct iwl_cfg iwl5150_agn_cfg; |
76 | extern struct iwl_cfg iwl5150_abg_cfg; | 76 | extern struct iwl_cfg iwl5150_abg_cfg; |
77 | extern struct iwl_cfg iwl6000g2a_2agn_cfg; | 77 | extern struct iwl_cfg iwl6005_2agn_cfg; |
78 | extern struct iwl_cfg iwl6000g2a_2abg_cfg; | 78 | extern struct iwl_cfg iwl6005_2abg_cfg; |
79 | extern struct iwl_cfg iwl6000g2a_2bg_cfg; | 79 | extern struct iwl_cfg iwl6005_2bg_cfg; |
80 | extern struct iwl_cfg iwl6000g2b_bgn_cfg; | 80 | extern struct iwl_cfg iwl1030_bgn_cfg; |
81 | extern struct iwl_cfg iwl6000g2b_bg_cfg; | 81 | extern struct iwl_cfg iwl1030_bg_cfg; |
82 | extern struct iwl_cfg iwl6000g2b_2agn_cfg; | 82 | extern struct iwl_cfg iwl6030_2agn_cfg; |
83 | extern struct iwl_cfg iwl6000g2b_2abg_cfg; | 83 | extern struct iwl_cfg iwl6030_2abg_cfg; |
84 | extern struct iwl_cfg iwl6000g2b_2bgn_cfg; | 84 | extern struct iwl_cfg iwl6030_2bgn_cfg; |
85 | extern struct iwl_cfg iwl6000g2b_2bg_cfg; | 85 | extern struct iwl_cfg iwl6030_2bg_cfg; |
86 | extern struct iwl_cfg iwl6000i_2agn_cfg; | 86 | extern struct iwl_cfg iwl6000i_2agn_cfg; |
87 | extern struct iwl_cfg iwl6000i_2abg_cfg; | 87 | extern struct iwl_cfg iwl6000i_2abg_cfg; |
88 | extern struct iwl_cfg iwl6000i_2bg_cfg; | 88 | extern struct iwl_cfg iwl6000i_2bg_cfg; |
89 | extern struct iwl_cfg iwl6000_3agn_cfg; | 89 | extern struct iwl_cfg iwl6000_3agn_cfg; |
90 | extern struct iwl_cfg iwl6050_2agn_cfg; | 90 | extern struct iwl_cfg iwl6050_2agn_cfg; |
91 | extern struct iwl_cfg iwl6050_2abg_cfg; | 91 | extern struct iwl_cfg iwl6050_2abg_cfg; |
92 | extern struct iwl_cfg iwl6050g2_bgn_cfg; | 92 | extern struct iwl_cfg iwl6150_bgn_cfg; |
93 | extern struct iwl_cfg iwl1000_bgn_cfg; | 93 | extern struct iwl_cfg iwl1000_bgn_cfg; |
94 | extern struct iwl_cfg iwl1000_bg_cfg; | 94 | extern struct iwl_cfg iwl1000_bg_cfg; |
95 | extern struct iwl_cfg iwl100_bgn_cfg; | 95 | extern struct iwl_cfg iwl100_bgn_cfg; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c index 0a67b2fa52a1..4776323b1eba 100644 --- a/drivers/net/wireless/iwlwifi/iwl-sta.c +++ b/drivers/net/wireless/iwlwifi/iwl-sta.c | |||
@@ -647,6 +647,7 @@ void iwl_reprogram_ap_sta(struct iwl_priv *priv, struct iwl_rxon_context *ctx) | |||
647 | memcpy(&lq, priv->stations[sta_id].lq, sizeof(lq)); | 647 | memcpy(&lq, priv->stations[sta_id].lq, sizeof(lq)); |
648 | 648 | ||
649 | active = priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE; | 649 | active = priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE; |
650 | priv->stations[sta_id].used &= ~IWL_STA_DRIVER_ACTIVE; | ||
650 | spin_unlock_irqrestore(&priv->sta_lock, flags); | 651 | spin_unlock_irqrestore(&priv->sta_lock, flags); |
651 | 652 | ||
652 | if (active) { | 653 | if (active) { |
@@ -657,6 +658,10 @@ void iwl_reprogram_ap_sta(struct iwl_priv *priv, struct iwl_rxon_context *ctx) | |||
657 | IWL_ERR(priv, "failed to remove STA %pM (%d)\n", | 658 | IWL_ERR(priv, "failed to remove STA %pM (%d)\n", |
658 | priv->stations[sta_id].sta.sta.addr, ret); | 659 | priv->stations[sta_id].sta.sta.addr, ret); |
659 | } | 660 | } |
661 | spin_lock_irqsave(&priv->sta_lock, flags); | ||
662 | priv->stations[sta_id].used |= IWL_STA_DRIVER_ACTIVE; | ||
663 | spin_unlock_irqrestore(&priv->sta_lock, flags); | ||
664 | |||
660 | ret = iwl_send_add_sta(priv, &sta_cmd, CMD_SYNC); | 665 | ret = iwl_send_add_sta(priv, &sta_cmd, CMD_SYNC); |
661 | if (ret) | 666 | if (ret) |
662 | IWL_ERR(priv, "failed to re-add STA %pM (%d)\n", | 667 | IWL_ERR(priv, "failed to re-add STA %pM (%d)\n", |
@@ -777,6 +782,14 @@ int iwl_send_lq_cmd(struct iwl_priv *priv, struct iwl_rxon_context *ctx, | |||
777 | if (WARN_ON(lq->sta_id == IWL_INVALID_STATION)) | 782 | if (WARN_ON(lq->sta_id == IWL_INVALID_STATION)) |
778 | return -EINVAL; | 783 | return -EINVAL; |
779 | 784 | ||
785 | |||
786 | spin_lock_irqsave(&priv->sta_lock, flags_spin); | ||
787 | if (!(priv->stations[lq->sta_id].used & IWL_STA_DRIVER_ACTIVE)) { | ||
788 | spin_unlock_irqrestore(&priv->sta_lock, flags_spin); | ||
789 | return -EINVAL; | ||
790 | } | ||
791 | spin_unlock_irqrestore(&priv->sta_lock, flags_spin); | ||
792 | |||
780 | iwl_dump_lq_cmd(priv, lq); | 793 | iwl_dump_lq_cmd(priv, lq); |
781 | BUG_ON(init && (cmd.flags & CMD_ASYNC)); | 794 | BUG_ON(init && (cmd.flags & CMD_ASYNC)); |
782 | 795 | ||