Loading Documentation/DocBook/80211.tmpl +17 −4 Original line number Original line Diff line number Diff line Loading @@ -268,10 +268,6 @@ !Finclude/net/mac80211.h ieee80211_ops !Finclude/net/mac80211.h ieee80211_ops !Finclude/net/mac80211.h ieee80211_alloc_hw !Finclude/net/mac80211.h ieee80211_alloc_hw !Finclude/net/mac80211.h ieee80211_register_hw !Finclude/net/mac80211.h ieee80211_register_hw !Finclude/net/mac80211.h ieee80211_get_tx_led_name !Finclude/net/mac80211.h ieee80211_get_rx_led_name !Finclude/net/mac80211.h ieee80211_get_assoc_led_name !Finclude/net/mac80211.h ieee80211_get_radio_led_name !Finclude/net/mac80211.h ieee80211_unregister_hw !Finclude/net/mac80211.h ieee80211_unregister_hw !Finclude/net/mac80211.h ieee80211_free_hw !Finclude/net/mac80211.h ieee80211_free_hw </chapter> </chapter> Loading Loading @@ -382,6 +378,23 @@ </para> </para> </partintro> </partintro> <chapter id="led-support"> <title>LED support</title> <para> Mac80211 supports various ways of blinking LEDs. Wherever possible, device LEDs should be exposed as LED class devices and hooked up to the appropriate trigger, which will then be triggered appropriately by mac80211. </para> !Finclude/net/mac80211.h ieee80211_get_tx_led_name !Finclude/net/mac80211.h ieee80211_get_rx_led_name !Finclude/net/mac80211.h ieee80211_get_assoc_led_name !Finclude/net/mac80211.h ieee80211_get_radio_led_name !Finclude/net/mac80211.h ieee80211_tpt_blink !Finclude/net/mac80211.h ieee80211_tpt_led_trigger_flags !Finclude/net/mac80211.h ieee80211_create_tpt_led_trigger </chapter> <chapter id="hardware-crypto-offload"> <chapter id="hardware-crypto-offload"> <title>Hardware crypto acceleration</title> <title>Hardware crypto acceleration</title> !Pinclude/net/mac80211.h Hardware crypto acceleration !Pinclude/net/mac80211.h Hardware crypto acceleration Loading drivers/net/wireless/ath/ath9k/ar9002_calib.c +3 −0 Original line number Original line Diff line number Diff line Loading @@ -954,6 +954,9 @@ static void ar9002_hw_init_cal_settings(struct ath_hw *ah) &adc_dc_cal_multi_sample; &adc_dc_cal_multi_sample; } } ah->supp_cals = ADC_GAIN_CAL | ADC_DC_CAL | IQ_MISMATCH_CAL; ah->supp_cals = ADC_GAIN_CAL | ADC_DC_CAL | IQ_MISMATCH_CAL; if (AR_SREV_9287(ah)) ah->supp_cals &= ~ADC_GAIN_CAL; } } } } Loading drivers/net/wireless/ath/ath9k/eeprom_def.c +4 −0 Original line number Original line Diff line number Diff line Loading @@ -226,6 +226,10 @@ static int ath9k_hw_def_check_eeprom(struct ath_hw *ah) eep->baseEepHeader.pwdclkind == 0) eep->baseEepHeader.pwdclkind == 0) ah->need_an_top2_fixup = 1; ah->need_an_top2_fixup = 1; if ((common->bus_ops->ath_bus_type == ATH_USB) && (AR_SREV_9280(ah))) eep->modalHeader[0].xpaBiasLvl = 0; return 0; return 0; } } Loading drivers/net/wireless/ath/ath9k/htc.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -433,6 +433,7 @@ void ath9k_htc_txep(void *priv, struct sk_buff *skb, enum htc_endpoint_id ep_id, void ath9k_htc_beaconep(void *drv_priv, struct sk_buff *skb, void ath9k_htc_beaconep(void *drv_priv, struct sk_buff *skb, enum htc_endpoint_id ep_id, bool txok); enum htc_endpoint_id ep_id, bool txok); int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv); void ath9k_htc_station_work(struct work_struct *work); void ath9k_htc_station_work(struct work_struct *work); void ath9k_htc_aggr_work(struct work_struct *work); void ath9k_htc_aggr_work(struct work_struct *work); void ath9k_ani_work(struct work_struct *work);; void ath9k_ani_work(struct work_struct *work);; Loading drivers/net/wireless/ath/ath9k/htc_drv_main.c +26 −11 Original line number Original line Diff line number Diff line Loading @@ -301,6 +301,16 @@ static int ath9k_htc_add_monitor_interface(struct ath9k_htc_priv *priv) priv->nstations++; priv->nstations++; /* * Set chainmask etc. on the target. */ ret = ath9k_htc_update_cap_target(priv); if (ret) ath_dbg(common, ATH_DBG_CONFIG, "Failed to update capability in target\n"); priv->ah->is_monitoring = true; return 0; return 0; err_vif: err_vif: Loading Loading @@ -328,6 +338,7 @@ static int ath9k_htc_remove_monitor_interface(struct ath9k_htc_priv *priv) } } priv->nstations--; priv->nstations--; priv->ah->is_monitoring = false; return 0; return 0; } } Loading Loading @@ -419,7 +430,7 @@ static int ath9k_htc_remove_station(struct ath9k_htc_priv *priv, return 0; return 0; } } static int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv) int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv) { { struct ath9k_htc_cap_target tcap; struct ath9k_htc_cap_target tcap; int ret; int ret; Loading Loading @@ -1186,6 +1197,20 @@ static int ath9k_htc_config(struct ieee80211_hw *hw, u32 changed) } } } } /* * Monitor interface should be added before * IEEE80211_CONF_CHANGE_CHANNEL is handled. */ if (changed & IEEE80211_CONF_CHANGE_MONITOR) { if (conf->flags & IEEE80211_CONF_MONITOR) { if (ath9k_htc_add_monitor_interface(priv)) ath_err(common, "Failed to set monitor mode\n"); else ath_dbg(common, ATH_DBG_CONFIG, "HW opmode set to Monitor mode\n"); } } if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { struct ieee80211_channel *curchan = hw->conf.channel; struct ieee80211_channel *curchan = hw->conf.channel; int pos = curchan->hw_value; int pos = curchan->hw_value; Loading Loading @@ -1221,16 +1246,6 @@ static int ath9k_htc_config(struct ieee80211_hw *hw, u32 changed) ath_update_txpow(priv); ath_update_txpow(priv); } } if (changed & IEEE80211_CONF_CHANGE_MONITOR) { if (conf->flags & IEEE80211_CONF_MONITOR) { if (ath9k_htc_add_monitor_interface(priv)) ath_err(common, "Failed to set monitor mode\n"); else ath_dbg(common, ATH_DBG_CONFIG, "HW opmode set to Monitor mode\n"); } } if (changed & IEEE80211_CONF_CHANGE_IDLE) { if (changed & IEEE80211_CONF_CHANGE_IDLE) { mutex_lock(&priv->htc_pm_lock); mutex_lock(&priv->htc_pm_lock); if (!priv->ps_idle) { if (!priv->ps_idle) { Loading Loading
Documentation/DocBook/80211.tmpl +17 −4 Original line number Original line Diff line number Diff line Loading @@ -268,10 +268,6 @@ !Finclude/net/mac80211.h ieee80211_ops !Finclude/net/mac80211.h ieee80211_ops !Finclude/net/mac80211.h ieee80211_alloc_hw !Finclude/net/mac80211.h ieee80211_alloc_hw !Finclude/net/mac80211.h ieee80211_register_hw !Finclude/net/mac80211.h ieee80211_register_hw !Finclude/net/mac80211.h ieee80211_get_tx_led_name !Finclude/net/mac80211.h ieee80211_get_rx_led_name !Finclude/net/mac80211.h ieee80211_get_assoc_led_name !Finclude/net/mac80211.h ieee80211_get_radio_led_name !Finclude/net/mac80211.h ieee80211_unregister_hw !Finclude/net/mac80211.h ieee80211_unregister_hw !Finclude/net/mac80211.h ieee80211_free_hw !Finclude/net/mac80211.h ieee80211_free_hw </chapter> </chapter> Loading Loading @@ -382,6 +378,23 @@ </para> </para> </partintro> </partintro> <chapter id="led-support"> <title>LED support</title> <para> Mac80211 supports various ways of blinking LEDs. Wherever possible, device LEDs should be exposed as LED class devices and hooked up to the appropriate trigger, which will then be triggered appropriately by mac80211. </para> !Finclude/net/mac80211.h ieee80211_get_tx_led_name !Finclude/net/mac80211.h ieee80211_get_rx_led_name !Finclude/net/mac80211.h ieee80211_get_assoc_led_name !Finclude/net/mac80211.h ieee80211_get_radio_led_name !Finclude/net/mac80211.h ieee80211_tpt_blink !Finclude/net/mac80211.h ieee80211_tpt_led_trigger_flags !Finclude/net/mac80211.h ieee80211_create_tpt_led_trigger </chapter> <chapter id="hardware-crypto-offload"> <chapter id="hardware-crypto-offload"> <title>Hardware crypto acceleration</title> <title>Hardware crypto acceleration</title> !Pinclude/net/mac80211.h Hardware crypto acceleration !Pinclude/net/mac80211.h Hardware crypto acceleration Loading
drivers/net/wireless/ath/ath9k/ar9002_calib.c +3 −0 Original line number Original line Diff line number Diff line Loading @@ -954,6 +954,9 @@ static void ar9002_hw_init_cal_settings(struct ath_hw *ah) &adc_dc_cal_multi_sample; &adc_dc_cal_multi_sample; } } ah->supp_cals = ADC_GAIN_CAL | ADC_DC_CAL | IQ_MISMATCH_CAL; ah->supp_cals = ADC_GAIN_CAL | ADC_DC_CAL | IQ_MISMATCH_CAL; if (AR_SREV_9287(ah)) ah->supp_cals &= ~ADC_GAIN_CAL; } } } } Loading
drivers/net/wireless/ath/ath9k/eeprom_def.c +4 −0 Original line number Original line Diff line number Diff line Loading @@ -226,6 +226,10 @@ static int ath9k_hw_def_check_eeprom(struct ath_hw *ah) eep->baseEepHeader.pwdclkind == 0) eep->baseEepHeader.pwdclkind == 0) ah->need_an_top2_fixup = 1; ah->need_an_top2_fixup = 1; if ((common->bus_ops->ath_bus_type == ATH_USB) && (AR_SREV_9280(ah))) eep->modalHeader[0].xpaBiasLvl = 0; return 0; return 0; } } Loading
drivers/net/wireless/ath/ath9k/htc.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -433,6 +433,7 @@ void ath9k_htc_txep(void *priv, struct sk_buff *skb, enum htc_endpoint_id ep_id, void ath9k_htc_beaconep(void *drv_priv, struct sk_buff *skb, void ath9k_htc_beaconep(void *drv_priv, struct sk_buff *skb, enum htc_endpoint_id ep_id, bool txok); enum htc_endpoint_id ep_id, bool txok); int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv); void ath9k_htc_station_work(struct work_struct *work); void ath9k_htc_station_work(struct work_struct *work); void ath9k_htc_aggr_work(struct work_struct *work); void ath9k_htc_aggr_work(struct work_struct *work); void ath9k_ani_work(struct work_struct *work);; void ath9k_ani_work(struct work_struct *work);; Loading
drivers/net/wireless/ath/ath9k/htc_drv_main.c +26 −11 Original line number Original line Diff line number Diff line Loading @@ -301,6 +301,16 @@ static int ath9k_htc_add_monitor_interface(struct ath9k_htc_priv *priv) priv->nstations++; priv->nstations++; /* * Set chainmask etc. on the target. */ ret = ath9k_htc_update_cap_target(priv); if (ret) ath_dbg(common, ATH_DBG_CONFIG, "Failed to update capability in target\n"); priv->ah->is_monitoring = true; return 0; return 0; err_vif: err_vif: Loading Loading @@ -328,6 +338,7 @@ static int ath9k_htc_remove_monitor_interface(struct ath9k_htc_priv *priv) } } priv->nstations--; priv->nstations--; priv->ah->is_monitoring = false; return 0; return 0; } } Loading Loading @@ -419,7 +430,7 @@ static int ath9k_htc_remove_station(struct ath9k_htc_priv *priv, return 0; return 0; } } static int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv) int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv) { { struct ath9k_htc_cap_target tcap; struct ath9k_htc_cap_target tcap; int ret; int ret; Loading Loading @@ -1186,6 +1197,20 @@ static int ath9k_htc_config(struct ieee80211_hw *hw, u32 changed) } } } } /* * Monitor interface should be added before * IEEE80211_CONF_CHANGE_CHANNEL is handled. */ if (changed & IEEE80211_CONF_CHANGE_MONITOR) { if (conf->flags & IEEE80211_CONF_MONITOR) { if (ath9k_htc_add_monitor_interface(priv)) ath_err(common, "Failed to set monitor mode\n"); else ath_dbg(common, ATH_DBG_CONFIG, "HW opmode set to Monitor mode\n"); } } if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { struct ieee80211_channel *curchan = hw->conf.channel; struct ieee80211_channel *curchan = hw->conf.channel; int pos = curchan->hw_value; int pos = curchan->hw_value; Loading Loading @@ -1221,16 +1246,6 @@ static int ath9k_htc_config(struct ieee80211_hw *hw, u32 changed) ath_update_txpow(priv); ath_update_txpow(priv); } } if (changed & IEEE80211_CONF_CHANGE_MONITOR) { if (conf->flags & IEEE80211_CONF_MONITOR) { if (ath9k_htc_add_monitor_interface(priv)) ath_err(common, "Failed to set monitor mode\n"); else ath_dbg(common, ATH_DBG_CONFIG, "HW opmode set to Monitor mode\n"); } } if (changed & IEEE80211_CONF_CHANGE_IDLE) { if (changed & IEEE80211_CONF_CHANGE_IDLE) { mutex_lock(&priv->htc_pm_lock); mutex_lock(&priv->htc_pm_lock); if (!priv->ps_idle) { if (!priv->ps_idle) { Loading