diff options
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-1000.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-6000.c | 12 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c | 88 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-eeprom.h | 25 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/cfg.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/p54/p54usb.c | 6 |
8 files changed, 135 insertions, 7 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c index 3c983e426f25..af85458401a4 100644 --- a/drivers/net/wireless/iwlwifi/iwl-1000.c +++ b/drivers/net/wireless/iwlwifi/iwl-1000.c | |||
@@ -311,6 +311,7 @@ struct iwl_cfg iwl100_bgn_cfg = { | |||
311 | .base_params = &iwl1000_base_params, | 311 | .base_params = &iwl1000_base_params, |
312 | .ht_params = &iwl1000_ht_params, | 312 | .ht_params = &iwl1000_ht_params, |
313 | .led_mode = IWL_LED_RF_STATE, | 313 | .led_mode = IWL_LED_RF_STATE, |
314 | .use_new_eeprom_reading = true, | ||
314 | }; | 315 | }; |
315 | 316 | ||
316 | struct iwl_cfg iwl100_bg_cfg = { | 317 | struct iwl_cfg iwl100_bg_cfg = { |
@@ -324,6 +325,7 @@ struct iwl_cfg iwl100_bg_cfg = { | |||
324 | .mod_params = &iwlagn_mod_params, | 325 | .mod_params = &iwlagn_mod_params, |
325 | .base_params = &iwl1000_base_params, | 326 | .base_params = &iwl1000_base_params, |
326 | .led_mode = IWL_LED_RF_STATE, | 327 | .led_mode = IWL_LED_RF_STATE, |
328 | .use_new_eeprom_reading = true, | ||
327 | }; | 329 | }; |
328 | 330 | ||
329 | MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX)); | 331 | MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX)); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c index 808942cc2991..a848ca06dc6f 100644 --- a/drivers/net/wireless/iwlwifi/iwl-6000.c +++ b/drivers/net/wireless/iwlwifi/iwl-6000.c | |||
@@ -564,6 +564,7 @@ struct iwl_cfg iwl6005_2agn_cfg = { | |||
564 | .need_dc_calib = true, | 564 | .need_dc_calib = true, |
565 | .need_temp_offset_calib = true, | 565 | .need_temp_offset_calib = true, |
566 | .led_mode = IWL_LED_RF_STATE, | 566 | .led_mode = IWL_LED_RF_STATE, |
567 | .use_new_eeprom_reading = true, | ||
567 | }; | 568 | }; |
568 | 569 | ||
569 | struct iwl_cfg iwl6005_2abg_cfg = { | 570 | struct iwl_cfg iwl6005_2abg_cfg = { |
@@ -579,6 +580,7 @@ struct iwl_cfg iwl6005_2abg_cfg = { | |||
579 | .need_dc_calib = true, | 580 | .need_dc_calib = true, |
580 | .need_temp_offset_calib = true, | 581 | .need_temp_offset_calib = true, |
581 | .led_mode = IWL_LED_RF_STATE, | 582 | .led_mode = IWL_LED_RF_STATE, |
583 | .use_new_eeprom_reading = true, | ||
582 | }; | 584 | }; |
583 | 585 | ||
584 | struct iwl_cfg iwl6005_2bg_cfg = { | 586 | struct iwl_cfg iwl6005_2bg_cfg = { |
@@ -594,6 +596,7 @@ struct iwl_cfg iwl6005_2bg_cfg = { | |||
594 | .need_dc_calib = true, | 596 | .need_dc_calib = true, |
595 | .need_temp_offset_calib = true, | 597 | .need_temp_offset_calib = true, |
596 | .led_mode = IWL_LED_RF_STATE, | 598 | .led_mode = IWL_LED_RF_STATE, |
599 | .use_new_eeprom_reading = true, | ||
597 | }; | 600 | }; |
598 | 601 | ||
599 | struct iwl_cfg iwl6030_2agn_cfg = { | 602 | struct iwl_cfg iwl6030_2agn_cfg = { |
@@ -614,6 +617,7 @@ struct iwl_cfg iwl6030_2agn_cfg = { | |||
614 | .adv_pm = true, | 617 | .adv_pm = true, |
615 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ | 618 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ |
616 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 619 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
620 | .use_new_eeprom_reading = true, | ||
617 | }; | 621 | }; |
618 | 622 | ||
619 | struct iwl_cfg iwl6030_2abg_cfg = { | 623 | struct iwl_cfg iwl6030_2abg_cfg = { |
@@ -633,6 +637,7 @@ struct iwl_cfg iwl6030_2abg_cfg = { | |||
633 | .adv_pm = true, | 637 | .adv_pm = true, |
634 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ | 638 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ |
635 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 639 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
640 | .use_new_eeprom_reading = true, | ||
636 | }; | 641 | }; |
637 | 642 | ||
638 | struct iwl_cfg iwl6030_2bgn_cfg = { | 643 | struct iwl_cfg iwl6030_2bgn_cfg = { |
@@ -653,6 +658,7 @@ struct iwl_cfg iwl6030_2bgn_cfg = { | |||
653 | .adv_pm = true, | 658 | .adv_pm = true, |
654 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ | 659 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ |
655 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 660 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
661 | .use_new_eeprom_reading = true, | ||
656 | }; | 662 | }; |
657 | 663 | ||
658 | struct iwl_cfg iwl6030_2bg_cfg = { | 664 | struct iwl_cfg iwl6030_2bg_cfg = { |
@@ -672,6 +678,7 @@ struct iwl_cfg iwl6030_2bg_cfg = { | |||
672 | .adv_pm = true, | 678 | .adv_pm = true, |
673 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ | 679 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ |
674 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 680 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
681 | .use_new_eeprom_reading = true, | ||
675 | }; | 682 | }; |
676 | 683 | ||
677 | struct iwl_cfg iwl1030_bgn_cfg = { | 684 | struct iwl_cfg iwl1030_bgn_cfg = { |
@@ -692,6 +699,7 @@ struct iwl_cfg iwl1030_bgn_cfg = { | |||
692 | .adv_pm = true, | 699 | .adv_pm = true, |
693 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ | 700 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ |
694 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 701 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
702 | .use_new_eeprom_reading = true, | ||
695 | }; | 703 | }; |
696 | 704 | ||
697 | struct iwl_cfg iwl1030_bg_cfg = { | 705 | struct iwl_cfg iwl1030_bg_cfg = { |
@@ -711,6 +719,7 @@ struct iwl_cfg iwl1030_bg_cfg = { | |||
711 | .adv_pm = true, | 719 | .adv_pm = true, |
712 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ | 720 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ |
713 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 721 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
722 | .use_new_eeprom_reading = true, | ||
714 | }; | 723 | }; |
715 | 724 | ||
716 | /* | 725 | /* |
@@ -793,6 +802,7 @@ struct iwl_cfg iwl6150_bgn_cfg = { | |||
793 | .ht_params = &iwl6000_ht_params, | 802 | .ht_params = &iwl6000_ht_params, |
794 | .need_dc_calib = true, | 803 | .need_dc_calib = true, |
795 | .led_mode = IWL_LED_RF_STATE, | 804 | .led_mode = IWL_LED_RF_STATE, |
805 | .use_new_eeprom_reading = true, | ||
796 | }; | 806 | }; |
797 | 807 | ||
798 | struct iwl_cfg iwl6050_2abg_cfg = { | 808 | struct iwl_cfg iwl6050_2abg_cfg = { |
@@ -841,6 +851,7 @@ struct iwl_cfg iwl130_bgn_cfg = { | |||
841 | .adv_pm = true, | 851 | .adv_pm = true, |
842 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ | 852 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ |
843 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 853 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
854 | .use_new_eeprom_reading = true, | ||
844 | }; | 855 | }; |
845 | 856 | ||
846 | struct iwl_cfg iwl130_bg_cfg = { | 857 | struct iwl_cfg iwl130_bg_cfg = { |
@@ -859,6 +870,7 @@ struct iwl_cfg iwl130_bg_cfg = { | |||
859 | .adv_pm = true, | 870 | .adv_pm = true, |
860 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ | 871 | /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ |
861 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, | 872 | .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, |
873 | .use_new_eeprom_reading = true, | ||
862 | }; | 874 | }; |
863 | 875 | ||
864 | MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); | 876 | MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c b/drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c index dbada761624d..cf9194baadac 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c | |||
@@ -433,7 +433,7 @@ static s8 iwl_update_channel_txpower(struct iwl_priv *priv, | |||
433 | /** | 433 | /** |
434 | * iwlcore_eeprom_enhanced_txpower: process enhanced tx power info | 434 | * iwlcore_eeprom_enhanced_txpower: process enhanced tx power info |
435 | */ | 435 | */ |
436 | void iwlcore_eeprom_enhanced_txpower(struct iwl_priv *priv) | 436 | static void iwlcore_eeprom_enhanced_txpower_old(struct iwl_priv *priv) |
437 | { | 437 | { |
438 | int eeprom_section_count = 0; | 438 | int eeprom_section_count = 0; |
439 | int section, element; | 439 | int section, element; |
@@ -460,7 +460,8 @@ void iwlcore_eeprom_enhanced_txpower(struct iwl_priv *priv) | |||
460 | * always check for valid entry before process | 460 | * always check for valid entry before process |
461 | * the information | 461 | * the information |
462 | */ | 462 | */ |
463 | if (!enhanced_txpower->common || enhanced_txpower->reserved) | 463 | if (!(enhanced_txpower->flags || enhanced_txpower->channel) || |
464 | enhanced_txpower->delta_20_in_40) | ||
464 | continue; | 465 | continue; |
465 | 466 | ||
466 | for (element = 0; element < eeprom_section_count; element++) { | 467 | for (element = 0; element < eeprom_section_count; element++) { |
@@ -493,3 +494,86 @@ void iwlcore_eeprom_enhanced_txpower(struct iwl_priv *priv) | |||
493 | } | 494 | } |
494 | } | 495 | } |
495 | } | 496 | } |
497 | |||
498 | static void | ||
499 | iwlcore_eeprom_enh_txp_read_element(struct iwl_priv *priv, | ||
500 | struct iwl_eeprom_enhanced_txpwr *txp, | ||
501 | s8 max_txpower_avg) | ||
502 | { | ||
503 | int ch_idx; | ||
504 | bool is_ht40 = txp->flags & IWL_EEPROM_ENH_TXP_FL_40MHZ; | ||
505 | enum ieee80211_band band; | ||
506 | |||
507 | band = txp->flags & IWL_EEPROM_ENH_TXP_FL_BAND_52G ? | ||
508 | IEEE80211_BAND_5GHZ : IEEE80211_BAND_2GHZ; | ||
509 | |||
510 | for (ch_idx = 0; ch_idx < priv->channel_count; ch_idx++) { | ||
511 | struct iwl_channel_info *ch_info = &priv->channel_info[ch_idx]; | ||
512 | |||
513 | /* update matching channel or from common data only */ | ||
514 | if (txp->channel != 0 && ch_info->channel != txp->channel) | ||
515 | continue; | ||
516 | |||
517 | /* update matching band only */ | ||
518 | if (band != ch_info->band) | ||
519 | continue; | ||
520 | |||
521 | if (ch_info->max_power_avg < max_txpower_avg && !is_ht40) { | ||
522 | ch_info->max_power_avg = max_txpower_avg; | ||
523 | ch_info->curr_txpow = max_txpower_avg; | ||
524 | ch_info->scan_power = max_txpower_avg; | ||
525 | } | ||
526 | |||
527 | if (is_ht40 && ch_info->ht40_max_power_avg < max_txpower_avg) | ||
528 | ch_info->ht40_max_power_avg = max_txpower_avg; | ||
529 | } | ||
530 | } | ||
531 | |||
532 | #define EEPROM_TXP_OFFS (0x00 | INDIRECT_ADDRESS | INDIRECT_TXP_LIMIT) | ||
533 | #define EEPROM_TXP_ENTRY_LEN sizeof(struct iwl_eeprom_enhanced_txpwr) | ||
534 | #define EEPROM_TXP_SZ_OFFS (0x00 | INDIRECT_ADDRESS | INDIRECT_TXP_LIMIT_SIZE) | ||
535 | |||
536 | static void iwlcore_eeprom_enhanced_txpower_new(struct iwl_priv *priv) | ||
537 | { | ||
538 | struct iwl_eeprom_enhanced_txpwr *txp_array, *txp; | ||
539 | int idx, entries; | ||
540 | __le16 *txp_len; | ||
541 | s8 max_txp_avg, max_txp_avg_halfdbm; | ||
542 | |||
543 | BUILD_BUG_ON(sizeof(struct iwl_eeprom_enhanced_txpwr) != 8); | ||
544 | |||
545 | /* the length is in 16-bit words, but we want entries */ | ||
546 | txp_len = (__le16 *) iwlagn_eeprom_query_addr(priv, EEPROM_TXP_SZ_OFFS); | ||
547 | entries = le16_to_cpup(txp_len) * 2 / EEPROM_TXP_ENTRY_LEN; | ||
548 | |||
549 | txp_array = (void *) iwlagn_eeprom_query_addr(priv, EEPROM_TXP_OFFS); | ||
550 | for (idx = 0; idx < entries; idx++) { | ||
551 | txp = &txp_array[idx]; | ||
552 | |||
553 | /* skip invalid entries */ | ||
554 | if (!(txp->flags & IWL_EEPROM_ENH_TXP_FL_VALID)) | ||
555 | continue; | ||
556 | |||
557 | max_txp_avg = iwl_get_max_txpower_avg(priv, txp_array, idx, | ||
558 | &max_txp_avg_halfdbm); | ||
559 | |||
560 | /* | ||
561 | * Update the user limit values values to the highest | ||
562 | * power supported by any channel | ||
563 | */ | ||
564 | if (max_txp_avg > priv->tx_power_user_lmt) | ||
565 | priv->tx_power_user_lmt = max_txp_avg; | ||
566 | if (max_txp_avg_halfdbm > priv->tx_power_lmt_in_half_dbm) | ||
567 | priv->tx_power_lmt_in_half_dbm = max_txp_avg_halfdbm; | ||
568 | |||
569 | iwlcore_eeprom_enh_txp_read_element(priv, txp, max_txp_avg); | ||
570 | } | ||
571 | } | ||
572 | |||
573 | void iwlcore_eeprom_enhanced_txpower(struct iwl_priv *priv) | ||
574 | { | ||
575 | if (priv->cfg->use_new_eeprom_reading) | ||
576 | iwlcore_eeprom_enhanced_txpower_new(priv); | ||
577 | else | ||
578 | iwlcore_eeprom_enhanced_txpower_old(priv); | ||
579 | } | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c index d941910e7ef4..7c8010f7ce56 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c | |||
@@ -568,6 +568,12 @@ static u32 eeprom_indirect_address(const struct iwl_priv *priv, u32 address) | |||
568 | case INDIRECT_REGULATORY: | 568 | case INDIRECT_REGULATORY: |
569 | offset = iwl_eeprom_query16(priv, EEPROM_LINK_REGULATORY); | 569 | offset = iwl_eeprom_query16(priv, EEPROM_LINK_REGULATORY); |
570 | break; | 570 | break; |
571 | case INDIRECT_TXP_LIMIT: | ||
572 | offset = iwl_eeprom_query16(priv, EEPROM_LINK_TXP_LIMIT); | ||
573 | break; | ||
574 | case INDIRECT_TXP_LIMIT_SIZE: | ||
575 | offset = iwl_eeprom_query16(priv, EEPROM_LINK_TXP_LIMIT_SIZE); | ||
576 | break; | ||
571 | case INDIRECT_CALIBRATION: | 577 | case INDIRECT_CALIBRATION: |
572 | offset = iwl_eeprom_query16(priv, EEPROM_LINK_CALIBRATION); | 578 | offset = iwl_eeprom_query16(priv, EEPROM_LINK_CALIBRATION); |
573 | break; | 579 | break; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h index 568920ac982d..9df33d6af8bb 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.h +++ b/drivers/net/wireless/iwlwifi/iwl-core.h | |||
@@ -412,6 +412,7 @@ struct iwl_cfg { | |||
412 | u8 scan_tx_antennas[IEEE80211_NUM_BANDS]; | 412 | u8 scan_tx_antennas[IEEE80211_NUM_BANDS]; |
413 | enum iwl_led_mode led_mode; | 413 | enum iwl_led_mode led_mode; |
414 | const bool adv_pm; | 414 | const bool adv_pm; |
415 | const bool use_new_eeprom_reading; /* temporary, remove later */ | ||
415 | }; | 416 | }; |
416 | 417 | ||
417 | /*************************** | 418 | /*************************** |
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.h b/drivers/net/wireless/iwlwifi/iwl-eeprom.h index 583916db46e4..8994b5b23593 100644 --- a/drivers/net/wireless/iwlwifi/iwl-eeprom.h +++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.h | |||
@@ -129,6 +129,17 @@ struct iwl_eeprom_channel { | |||
129 | s8 max_power_avg; /* max power (dBm) on this chnl, limit 31 */ | 129 | s8 max_power_avg; /* max power (dBm) on this chnl, limit 31 */ |
130 | } __packed; | 130 | } __packed; |
131 | 131 | ||
132 | enum iwl_eeprom_enhanced_txpwr_flags { | ||
133 | IWL_EEPROM_ENH_TXP_FL_VALID = BIT(0), | ||
134 | IWL_EEPROM_ENH_TXP_FL_BAND_52G = BIT(1), | ||
135 | IWL_EEPROM_ENH_TXP_FL_OFDM = BIT(2), | ||
136 | IWL_EEPROM_ENH_TXP_FL_40MHZ = BIT(3), | ||
137 | IWL_EEPROM_ENH_TXP_FL_HT_AP = BIT(4), | ||
138 | IWL_EEPROM_ENH_TXP_FL_RES1 = BIT(5), | ||
139 | IWL_EEPROM_ENH_TXP_FL_RES2 = BIT(6), | ||
140 | IWL_EEPROM_ENH_TXP_FL_COMMON_TYPE = BIT(7), | ||
141 | }; | ||
142 | |||
132 | /** | 143 | /** |
133 | * iwl_eeprom_enhanced_txpwr structure | 144 | * iwl_eeprom_enhanced_txpwr structure |
134 | * This structure presents the enhanced regulatory tx power limit layout | 145 | * This structure presents the enhanced regulatory tx power limit layout |
@@ -136,21 +147,23 @@ struct iwl_eeprom_channel { | |||
136 | * Enhanced regulatory tx power portion of eeprom image can be broken down | 147 | * Enhanced regulatory tx power portion of eeprom image can be broken down |
137 | * into individual structures; each one is 8 bytes in size and contain the | 148 | * into individual structures; each one is 8 bytes in size and contain the |
138 | * following information | 149 | * following information |
139 | * @common: (desc + channel) not used by driver, should _NOT_ be "zero" | 150 | * @flags: entry flags |
151 | * @channel: channel number | ||
140 | * @chain_a_max_pwr: chain a max power in 1/2 dBm | 152 | * @chain_a_max_pwr: chain a max power in 1/2 dBm |
141 | * @chain_b_max_pwr: chain b max power in 1/2 dBm | 153 | * @chain_b_max_pwr: chain b max power in 1/2 dBm |
142 | * @chain_c_max_pwr: chain c max power in 1/2 dBm | 154 | * @chain_c_max_pwr: chain c max power in 1/2 dBm |
143 | * @reserved: not used, should be "zero" | 155 | * @delta_20_in_40: 20-in-40 deltas (hi/lo) |
144 | * @mimo2_max_pwr: mimo2 max power in 1/2 dBm | 156 | * @mimo2_max_pwr: mimo2 max power in 1/2 dBm |
145 | * @mimo3_max_pwr: mimo3 max power in 1/2 dBm | 157 | * @mimo3_max_pwr: mimo3 max power in 1/2 dBm |
146 | * | 158 | * |
147 | */ | 159 | */ |
148 | struct iwl_eeprom_enhanced_txpwr { | 160 | struct iwl_eeprom_enhanced_txpwr { |
149 | __le16 common; | 161 | u8 flags; |
162 | u8 channel; | ||
150 | s8 chain_a_max; | 163 | s8 chain_a_max; |
151 | s8 chain_b_max; | 164 | s8 chain_b_max; |
152 | s8 chain_c_max; | 165 | s8 chain_c_max; |
153 | s8 reserved; | 166 | u8 delta_20_in_40; |
154 | s8 mimo2_max; | 167 | s8 mimo2_max; |
155 | s8 mimo3_max; | 168 | s8 mimo3_max; |
156 | } __packed; | 169 | } __packed; |
@@ -195,6 +208,8 @@ struct iwl_eeprom_enhanced_txpwr { | |||
195 | #define EEPROM_LINK_CALIBRATION (2*0x67) | 208 | #define EEPROM_LINK_CALIBRATION (2*0x67) |
196 | #define EEPROM_LINK_PROCESS_ADJST (2*0x68) | 209 | #define EEPROM_LINK_PROCESS_ADJST (2*0x68) |
197 | #define EEPROM_LINK_OTHERS (2*0x69) | 210 | #define EEPROM_LINK_OTHERS (2*0x69) |
211 | #define EEPROM_LINK_TXP_LIMIT (2*0x6a) | ||
212 | #define EEPROM_LINK_TXP_LIMIT_SIZE (2*0x6b) | ||
198 | 213 | ||
199 | /* agn regulatory - indirect access */ | 214 | /* agn regulatory - indirect access */ |
200 | #define EEPROM_REG_BAND_1_CHANNELS ((0x08)\ | 215 | #define EEPROM_REG_BAND_1_CHANNELS ((0x08)\ |
@@ -398,6 +413,8 @@ struct iwl_eeprom_calib_info { | |||
398 | #define INDIRECT_CALIBRATION 0x00040000 | 413 | #define INDIRECT_CALIBRATION 0x00040000 |
399 | #define INDIRECT_PROCESS_ADJST 0x00050000 | 414 | #define INDIRECT_PROCESS_ADJST 0x00050000 |
400 | #define INDIRECT_OTHERS 0x00060000 | 415 | #define INDIRECT_OTHERS 0x00060000 |
416 | #define INDIRECT_TXP_LIMIT 0x00070000 | ||
417 | #define INDIRECT_TXP_LIMIT_SIZE 0x00080000 | ||
401 | #define INDIRECT_ADDRESS 0x00100000 | 418 | #define INDIRECT_ADDRESS 0x00100000 |
402 | 419 | ||
403 | /* General */ | 420 | /* General */ |
diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c index dee32d3681a5..632c9211e634 100644 --- a/drivers/net/wireless/libertas/cfg.c +++ b/drivers/net/wireless/libertas/cfg.c | |||
@@ -617,7 +617,7 @@ static int lbs_ret_scan(struct lbs_private *priv, unsigned long dummy, | |||
617 | print_ssid(ssid_buf, ssid, ssid_len), | 617 | print_ssid(ssid_buf, ssid, ssid_len), |
618 | LBS_SCAN_RSSI_TO_MBM(rssi)/100); | 618 | LBS_SCAN_RSSI_TO_MBM(rssi)/100); |
619 | 619 | ||
620 | if (channel || | 620 | if (channel && |
621 | !(channel->flags & IEEE80211_CHAN_DISABLED)) | 621 | !(channel->flags & IEEE80211_CHAN_DISABLED)) |
622 | cfg80211_inform_bss(wiphy, channel, | 622 | cfg80211_inform_bss(wiphy, channel, |
623 | bssid, le64_to_cpu(*(__le64 *)tsfdesc), | 623 | bssid, le64_to_cpu(*(__le64 *)tsfdesc), |
diff --git a/drivers/net/wireless/p54/p54usb.c b/drivers/net/wireless/p54/p54usb.c index dd4d8fc9ad7a..21713a7638c4 100644 --- a/drivers/net/wireless/p54/p54usb.c +++ b/drivers/net/wireless/p54/p54usb.c | |||
@@ -43,6 +43,7 @@ MODULE_FIRMWARE("isl3887usb"); | |||
43 | 43 | ||
44 | static struct usb_device_id p54u_table[] __devinitdata = { | 44 | static struct usb_device_id p54u_table[] __devinitdata = { |
45 | /* Version 1 devices (pci chip + net2280) */ | 45 | /* Version 1 devices (pci chip + net2280) */ |
46 | {USB_DEVICE(0x0411, 0x0050)}, /* Buffalo WLI2-USB2-G54 */ | ||
46 | {USB_DEVICE(0x045e, 0x00c2)}, /* Microsoft MN-710 */ | 47 | {USB_DEVICE(0x045e, 0x00c2)}, /* Microsoft MN-710 */ |
47 | {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ | 48 | {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ |
48 | {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */ | 49 | {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */ |
@@ -56,9 +57,13 @@ static struct usb_device_id p54u_table[] __devinitdata = { | |||
56 | {USB_DEVICE(0x0846, 0x4220)}, /* Netgear WG111 */ | 57 | {USB_DEVICE(0x0846, 0x4220)}, /* Netgear WG111 */ |
57 | {USB_DEVICE(0x09aa, 0x1000)}, /* Spinnaker Proto board */ | 58 | {USB_DEVICE(0x09aa, 0x1000)}, /* Spinnaker Proto board */ |
58 | {USB_DEVICE(0x0cde, 0x0006)}, /* Medion 40900, Roper Europe */ | 59 | {USB_DEVICE(0x0cde, 0x0006)}, /* Medion 40900, Roper Europe */ |
60 | {USB_DEVICE(0x0db0, 0x6826)}, /* MSI UB54G (MS-6826) */ | ||
59 | {USB_DEVICE(0x107b, 0x55f2)}, /* Gateway WGU-210 (Gemtek) */ | 61 | {USB_DEVICE(0x107b, 0x55f2)}, /* Gateway WGU-210 (Gemtek) */ |
60 | {USB_DEVICE(0x124a, 0x4023)}, /* Shuttle PN15, Airvast WM168g, IOGear GWU513 */ | 62 | {USB_DEVICE(0x124a, 0x4023)}, /* Shuttle PN15, Airvast WM168g, IOGear GWU513 */ |
63 | {USB_DEVICE(0x1435, 0x0210)}, /* Inventel UR054G */ | ||
64 | {USB_DEVICE(0x15a9, 0x0002)}, /* Gemtek WUBI-100GW 802.11g */ | ||
61 | {USB_DEVICE(0x1630, 0x0005)}, /* 2Wire 802.11g USB (v1) / Z-Com */ | 65 | {USB_DEVICE(0x1630, 0x0005)}, /* 2Wire 802.11g USB (v1) / Z-Com */ |
66 | {USB_DEVICE(0x182d, 0x096b)}, /* Sitecom WL-107 */ | ||
62 | {USB_DEVICE(0x1915, 0x2234)}, /* Linksys WUSB54G OEM */ | 67 | {USB_DEVICE(0x1915, 0x2234)}, /* Linksys WUSB54G OEM */ |
63 | {USB_DEVICE(0x1915, 0x2235)}, /* Linksys WUSB54G Portable OEM */ | 68 | {USB_DEVICE(0x1915, 0x2235)}, /* Linksys WUSB54G Portable OEM */ |
64 | {USB_DEVICE(0x2001, 0x3701)}, /* DLink DWL-G120 Spinnaker */ | 69 | {USB_DEVICE(0x2001, 0x3701)}, /* DLink DWL-G120 Spinnaker */ |
@@ -94,6 +99,7 @@ static struct usb_device_id p54u_table[] __devinitdata = { | |||
94 | {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ | 99 | {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ |
95 | {USB_DEVICE(0x1668, 0x1050)}, /* Actiontec 802UIG-1 */ | 100 | {USB_DEVICE(0x1668, 0x1050)}, /* Actiontec 802UIG-1 */ |
96 | {USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */ | 101 | {USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */ |
102 | {USB_DEVICE(0x2001, 0x3705)}, /* D-Link DWL-G120 rev C1 */ | ||
97 | {USB_DEVICE(0x413c, 0x5513)}, /* Dell WLA3310 USB Wireless Adapter */ | 103 | {USB_DEVICE(0x413c, 0x5513)}, /* Dell WLA3310 USB Wireless Adapter */ |
98 | {USB_DEVICE(0x413c, 0x8102)}, /* Spinnaker DUT */ | 104 | {USB_DEVICE(0x413c, 0x8102)}, /* Spinnaker DUT */ |
99 | {USB_DEVICE(0x413c, 0x8104)}, /* Cohiba Proto board */ | 105 | {USB_DEVICE(0x413c, 0x8104)}, /* Cohiba Proto board */ |