Loading drivers/net/wireless/Kconfig +1 −84 Original line number Diff line number Diff line Loading @@ -210,90 +210,7 @@ config USB_NET_RNDIS_WLAN If you choose to build a module, it'll be called rndis_wlan. config RTL8180 tristate "Realtek 8180/8185 PCI support" depends on MAC80211 && PCI && EXPERIMENTAL select EEPROM_93CX6 ---help--- This is a driver for RTL8180 and RTL8185 based cards. These are PCI based chips found in cards such as: (RTL8185 802.11g) A-Link WL54PC (RTL8180 802.11b) Belkin F5D6020 v3 Belkin F5D6020 v3 Dlink DWL-610 Dlink DWL-510 Netgear MA521 Level-One WPC-0101 Acer Aspire 1357 LMi VCTnet PC-11B1 Ovislink AirLive WL-1120PCM Mentor WL-PCI Linksys WPC11 v4 TrendNET TEW-288PI D-Link DWL-520 Rev D Repotec RP-WP7126 TP-Link TL-WN250/251 Zonet ZEW1000 Longshine LCS-8031-R HomeLine HLW-PCC200 GigaFast WF721-AEX Planet WL-3553 Encore ENLWI-PCI1-NT TrendNET TEW-266PC Gigabyte GN-WLMR101 Siemens-fujitsu Amilo D1840W Edimax EW-7126 PheeNet WL-11PCIR Tonze PC-2100T Planet WL-8303 Dlink DWL-650 v M1 Edimax EW-7106 Q-Tec 770WC Topcom Skyr@cer 4011b Roper FreeLan 802.11b (edition 2004) Wistron Neweb Corp CB-200B Pentagram HorNET QTec 775WC TwinMOS Booming B Series Micronet SP906BB Sweex LC700010 Surecom EP-9428 Safecom SWLCR-1100 Thanks to Realtek for their support! config RTL8187 tristate "Realtek 8187 and 8187B USB support" depends on MAC80211 && USB select EEPROM_93CX6 ---help--- This is a driver for RTL8187 and RTL8187B based cards. These are USB based chips found in devices such as: Netgear WG111v2 Level 1 WNC-0301USB Micronet SP907GK V5 Encore ENUWI-G2 Trendnet TEW-424UB ASUS P5B Deluxe/P5K Premium motherboards Toshiba Satellite Pro series of laptops Asus Wireless Link Linksys WUSB54GC-EU v2 (v1 = rt73usb; v3 is rt2070-based, use staging/rt3070 or try rt2800usb) Thanks to Realtek for their support! # If possible, automatically enable LEDs for RTL8187. config RTL8187_LEDS bool depends on RTL8187 && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = RTL8187) default y source "drivers/net/wireless/rtl818x/Kconfig" config ADM8211 tristate "ADMtek ADM8211 support" Loading drivers/net/wireless/ath/ath.h +13 −1 Original line number Diff line number Diff line Loading @@ -71,9 +71,21 @@ struct ath_regulatory { struct reg_dmn_pair_mapping *regpair; }; /** * struct ath_ops - Register read/write operations * * @read: Register read * @write: Register write * @enable_write_buffer: Enable multiple register writes * @disable_write_buffer: Disable multiple register writes * @write_flush: Flush buffered register writes */ struct ath_ops { unsigned int (*read)(void *, u32 reg_offset); void (*write)(void *, u32 val, u32 reg_offset); void (*enable_write_buffer)(void *); void (*disable_write_buffer)(void *); void (*write_flush) (void *); }; struct ath_common; Loading drivers/net/wireless/ath/ath5k/base.c +19 −0 Original line number Diff line number Diff line Loading @@ -242,6 +242,8 @@ static int ath5k_set_key(struct ieee80211_hw *hw, struct ieee80211_key_conf *key); static int ath5k_get_stats(struct ieee80211_hw *hw, struct ieee80211_low_level_stats *stats); static int ath5k_get_survey(struct ieee80211_hw *hw, int idx, struct survey_info *survey); static u64 ath5k_get_tsf(struct ieee80211_hw *hw); static void ath5k_set_tsf(struct ieee80211_hw *hw, u64 tsf); static void ath5k_reset_tsf(struct ieee80211_hw *hw); Loading @@ -267,6 +269,7 @@ static const struct ieee80211_ops ath5k_hw_ops = { .configure_filter = ath5k_configure_filter, .set_key = ath5k_set_key, .get_stats = ath5k_get_stats, .get_survey = ath5k_get_survey, .conf_tx = NULL, .get_tsf = ath5k_get_tsf, .set_tsf = ath5k_set_tsf, Loading Loading @@ -3292,6 +3295,22 @@ ath5k_get_stats(struct ieee80211_hw *hw, return 0; } static int ath5k_get_survey(struct ieee80211_hw *hw, int idx, struct survey_info *survey) { struct ath5k_softc *sc = hw->priv; struct ieee80211_conf *conf = &hw->conf; if (idx != 0) return -ENOENT; survey->channel = conf->channel; survey->filled = SURVEY_INFO_NOISE_DBM; survey->noise = sc->ah->ah_noise_floor; return 0; } static u64 ath5k_get_tsf(struct ieee80211_hw *hw) { Loading drivers/net/wireless/ath/ath5k/pcu.c +29 −2 Original line number Diff line number Diff line Loading @@ -496,6 +496,8 @@ void ath5k_hw_set_rx_filter(struct ath5k_hw *ah, u32 filter) * Beacon control * \****************/ #define ATH5K_MAX_TSF_READ 10 /** * ath5k_hw_get_tsf64 - Get the full 64bit TSF * Loading @@ -505,10 +507,35 @@ void ath5k_hw_set_rx_filter(struct ath5k_hw *ah, u32 filter) */ u64 ath5k_hw_get_tsf64(struct ath5k_hw *ah) { u64 tsf = ath5k_hw_reg_read(ah, AR5K_TSF_U32); u32 tsf_lower, tsf_upper1, tsf_upper2; int i; /* * While reading TSF upper and then lower part, the clock is still * counting (or jumping in case of IBSS merge) so we might get * inconsistent values. To avoid this, we read the upper part again * and check it has not been changed. We make the hypothesis that a * maximum of 3 changes can happens in a row (we use 10 as a safe * value). * * Impact on performance is pretty small, since in most cases, only * 3 register reads are needed. */ tsf_upper1 = ath5k_hw_reg_read(ah, AR5K_TSF_U32); for (i = 0; i < ATH5K_MAX_TSF_READ; i++) { tsf_lower = ath5k_hw_reg_read(ah, AR5K_TSF_L32); tsf_upper2 = ath5k_hw_reg_read(ah, AR5K_TSF_U32); if (tsf_upper2 == tsf_upper1) break; tsf_upper1 = tsf_upper2; } WARN_ON( i == ATH5K_MAX_TSF_READ ); ATH5K_TRACE(ah->ah_sc); return ath5k_hw_reg_read(ah, AR5K_TSF_L32) | (tsf << 32); return (((u64)tsf_upper1 << 32) | tsf_lower); } /** Loading drivers/net/wireless/ath/ath9k/Makefile +13 −3 Original line number Diff line number Diff line Loading @@ -13,16 +13,26 @@ ath9k-$(CONFIG_ATH9K_DEBUGFS) += debug.o obj-$(CONFIG_ATH9K) += ath9k.o ath9k_hw-y:= hw.o \ ath9k_hw-y:= \ ar9002_hw.o \ ar9003_hw.o \ hw.o \ ar9003_phy.o \ ar9002_phy.o \ ar5008_phy.o \ ar9002_calib.o \ ar9003_calib.o \ calib.o \ eeprom.o \ eeprom_def.o \ eeprom_4k.o \ eeprom_9287.o \ calib.o \ ani.o \ phy.o \ btcoex.o \ mac.o \ ar9002_mac.o \ ar9003_mac.o \ ar9003_eeprom.o obj-$(CONFIG_ATH9K_HW) += ath9k_hw.o Loading Loading
drivers/net/wireless/Kconfig +1 −84 Original line number Diff line number Diff line Loading @@ -210,90 +210,7 @@ config USB_NET_RNDIS_WLAN If you choose to build a module, it'll be called rndis_wlan. config RTL8180 tristate "Realtek 8180/8185 PCI support" depends on MAC80211 && PCI && EXPERIMENTAL select EEPROM_93CX6 ---help--- This is a driver for RTL8180 and RTL8185 based cards. These are PCI based chips found in cards such as: (RTL8185 802.11g) A-Link WL54PC (RTL8180 802.11b) Belkin F5D6020 v3 Belkin F5D6020 v3 Dlink DWL-610 Dlink DWL-510 Netgear MA521 Level-One WPC-0101 Acer Aspire 1357 LMi VCTnet PC-11B1 Ovislink AirLive WL-1120PCM Mentor WL-PCI Linksys WPC11 v4 TrendNET TEW-288PI D-Link DWL-520 Rev D Repotec RP-WP7126 TP-Link TL-WN250/251 Zonet ZEW1000 Longshine LCS-8031-R HomeLine HLW-PCC200 GigaFast WF721-AEX Planet WL-3553 Encore ENLWI-PCI1-NT TrendNET TEW-266PC Gigabyte GN-WLMR101 Siemens-fujitsu Amilo D1840W Edimax EW-7126 PheeNet WL-11PCIR Tonze PC-2100T Planet WL-8303 Dlink DWL-650 v M1 Edimax EW-7106 Q-Tec 770WC Topcom Skyr@cer 4011b Roper FreeLan 802.11b (edition 2004) Wistron Neweb Corp CB-200B Pentagram HorNET QTec 775WC TwinMOS Booming B Series Micronet SP906BB Sweex LC700010 Surecom EP-9428 Safecom SWLCR-1100 Thanks to Realtek for their support! config RTL8187 tristate "Realtek 8187 and 8187B USB support" depends on MAC80211 && USB select EEPROM_93CX6 ---help--- This is a driver for RTL8187 and RTL8187B based cards. These are USB based chips found in devices such as: Netgear WG111v2 Level 1 WNC-0301USB Micronet SP907GK V5 Encore ENUWI-G2 Trendnet TEW-424UB ASUS P5B Deluxe/P5K Premium motherboards Toshiba Satellite Pro series of laptops Asus Wireless Link Linksys WUSB54GC-EU v2 (v1 = rt73usb; v3 is rt2070-based, use staging/rt3070 or try rt2800usb) Thanks to Realtek for their support! # If possible, automatically enable LEDs for RTL8187. config RTL8187_LEDS bool depends on RTL8187 && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = RTL8187) default y source "drivers/net/wireless/rtl818x/Kconfig" config ADM8211 tristate "ADMtek ADM8211 support" Loading
drivers/net/wireless/ath/ath.h +13 −1 Original line number Diff line number Diff line Loading @@ -71,9 +71,21 @@ struct ath_regulatory { struct reg_dmn_pair_mapping *regpair; }; /** * struct ath_ops - Register read/write operations * * @read: Register read * @write: Register write * @enable_write_buffer: Enable multiple register writes * @disable_write_buffer: Disable multiple register writes * @write_flush: Flush buffered register writes */ struct ath_ops { unsigned int (*read)(void *, u32 reg_offset); void (*write)(void *, u32 val, u32 reg_offset); void (*enable_write_buffer)(void *); void (*disable_write_buffer)(void *); void (*write_flush) (void *); }; struct ath_common; Loading
drivers/net/wireless/ath/ath5k/base.c +19 −0 Original line number Diff line number Diff line Loading @@ -242,6 +242,8 @@ static int ath5k_set_key(struct ieee80211_hw *hw, struct ieee80211_key_conf *key); static int ath5k_get_stats(struct ieee80211_hw *hw, struct ieee80211_low_level_stats *stats); static int ath5k_get_survey(struct ieee80211_hw *hw, int idx, struct survey_info *survey); static u64 ath5k_get_tsf(struct ieee80211_hw *hw); static void ath5k_set_tsf(struct ieee80211_hw *hw, u64 tsf); static void ath5k_reset_tsf(struct ieee80211_hw *hw); Loading @@ -267,6 +269,7 @@ static const struct ieee80211_ops ath5k_hw_ops = { .configure_filter = ath5k_configure_filter, .set_key = ath5k_set_key, .get_stats = ath5k_get_stats, .get_survey = ath5k_get_survey, .conf_tx = NULL, .get_tsf = ath5k_get_tsf, .set_tsf = ath5k_set_tsf, Loading Loading @@ -3292,6 +3295,22 @@ ath5k_get_stats(struct ieee80211_hw *hw, return 0; } static int ath5k_get_survey(struct ieee80211_hw *hw, int idx, struct survey_info *survey) { struct ath5k_softc *sc = hw->priv; struct ieee80211_conf *conf = &hw->conf; if (idx != 0) return -ENOENT; survey->channel = conf->channel; survey->filled = SURVEY_INFO_NOISE_DBM; survey->noise = sc->ah->ah_noise_floor; return 0; } static u64 ath5k_get_tsf(struct ieee80211_hw *hw) { Loading
drivers/net/wireless/ath/ath5k/pcu.c +29 −2 Original line number Diff line number Diff line Loading @@ -496,6 +496,8 @@ void ath5k_hw_set_rx_filter(struct ath5k_hw *ah, u32 filter) * Beacon control * \****************/ #define ATH5K_MAX_TSF_READ 10 /** * ath5k_hw_get_tsf64 - Get the full 64bit TSF * Loading @@ -505,10 +507,35 @@ void ath5k_hw_set_rx_filter(struct ath5k_hw *ah, u32 filter) */ u64 ath5k_hw_get_tsf64(struct ath5k_hw *ah) { u64 tsf = ath5k_hw_reg_read(ah, AR5K_TSF_U32); u32 tsf_lower, tsf_upper1, tsf_upper2; int i; /* * While reading TSF upper and then lower part, the clock is still * counting (or jumping in case of IBSS merge) so we might get * inconsistent values. To avoid this, we read the upper part again * and check it has not been changed. We make the hypothesis that a * maximum of 3 changes can happens in a row (we use 10 as a safe * value). * * Impact on performance is pretty small, since in most cases, only * 3 register reads are needed. */ tsf_upper1 = ath5k_hw_reg_read(ah, AR5K_TSF_U32); for (i = 0; i < ATH5K_MAX_TSF_READ; i++) { tsf_lower = ath5k_hw_reg_read(ah, AR5K_TSF_L32); tsf_upper2 = ath5k_hw_reg_read(ah, AR5K_TSF_U32); if (tsf_upper2 == tsf_upper1) break; tsf_upper1 = tsf_upper2; } WARN_ON( i == ATH5K_MAX_TSF_READ ); ATH5K_TRACE(ah->ah_sc); return ath5k_hw_reg_read(ah, AR5K_TSF_L32) | (tsf << 32); return (((u64)tsf_upper1 << 32) | tsf_lower); } /** Loading
drivers/net/wireless/ath/ath9k/Makefile +13 −3 Original line number Diff line number Diff line Loading @@ -13,16 +13,26 @@ ath9k-$(CONFIG_ATH9K_DEBUGFS) += debug.o obj-$(CONFIG_ATH9K) += ath9k.o ath9k_hw-y:= hw.o \ ath9k_hw-y:= \ ar9002_hw.o \ ar9003_hw.o \ hw.o \ ar9003_phy.o \ ar9002_phy.o \ ar5008_phy.o \ ar9002_calib.o \ ar9003_calib.o \ calib.o \ eeprom.o \ eeprom_def.o \ eeprom_4k.o \ eeprom_9287.o \ calib.o \ ani.o \ phy.o \ btcoex.o \ mac.o \ ar9002_mac.o \ ar9003_mac.o \ ar9003_eeprom.o obj-$(CONFIG_ATH9K_HW) += ath9k_hw.o Loading