aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-1000.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-6000.c12
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c88
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-lib.c6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-eeprom.h25
-rw-r--r--drivers/net/wireless/libertas/cfg.c2
-rw-r--r--drivers/net/wireless/p54/p54usb.c6
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
316struct iwl_cfg iwl100_bg_cfg = { 317struct 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
329MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX)); 331MODULE_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
569struct iwl_cfg iwl6005_2abg_cfg = { 570struct 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
584struct iwl_cfg iwl6005_2bg_cfg = { 586struct 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
599struct iwl_cfg iwl6030_2agn_cfg = { 602struct 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
619struct iwl_cfg iwl6030_2abg_cfg = { 623struct 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
638struct iwl_cfg iwl6030_2bgn_cfg = { 643struct 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
658struct iwl_cfg iwl6030_2bg_cfg = { 664struct 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
677struct iwl_cfg iwl1030_bgn_cfg = { 684struct 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
697struct iwl_cfg iwl1030_bg_cfg = { 705struct 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
798struct iwl_cfg iwl6050_2abg_cfg = { 808struct 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
846struct iwl_cfg iwl130_bg_cfg = { 857struct 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
864MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); 876MODULE_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 */
436void iwlcore_eeprom_enhanced_txpower(struct iwl_priv *priv) 436static 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
498static void
499iwlcore_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
536static 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
573void 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
132enum 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 */
148struct iwl_eeprom_enhanced_txpwr { 160struct 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
44static struct usb_device_id p54u_table[] __devinitdata = { 44static 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 */