/* perform spectral scan if requested. */
if (test_bit(ATH_OP_SCANNING, &common->op_flags) &&
sc->spec_priv.spectral_mode == SPECTRAL_CHANSCAN)
- ath9k_spectral_scan_trigger(common);
+ ath9k_spectral_scan_trigger(common, &sc->spec_priv);
}
return 0;
ath_dbg(common, PS, "PowerSave disabled\n");
}
-void ath9k_spectral_scan_trigger(struct ath_common *common)
+void ath9k_spectral_scan_trigger(struct ath_common *common,
+ struct ath_spec_scan_priv *spec_priv)
{
- struct ath_softc *sc = common->priv;
- struct ath_hw *ah = sc->sc_ah;
+ struct ath_hw *ah = spec_priv->ah;
u32 rxfilter;
if (config_enabled(CONFIG_ATH9K_TX99))
* configuration, otherwise the register will have its values reset
* (on my ar9220 to value 0x01002310)
*/
- ath9k_spectral_scan_config(common, sc->spec_priv.spectral_mode);
+ ath9k_spectral_scan_config(common, spec_priv, spec_priv->spectral_mode);
ath9k_hw_ops(ah)->spectral_scan_trigger(ah);
ath_ps_ops(common)->restore(common);
}
int ath9k_spectral_scan_config(struct ath_common *common,
+ struct ath_spec_scan_priv *spec_priv,
enum spectral_mode spectral_mode)
{
- struct ath_softc *sc = common->priv;
- struct ath_hw *ah = sc->sc_ah;
+ struct ath_hw *ah = spec_priv->ah;
if (!ath9k_hw_ops(ah)->spectral_scan_trigger) {
ath_err(common, "spectrum analyzer not implemented on this hardware\n");
switch (spectral_mode) {
case SPECTRAL_DISABLED:
- sc->spec_priv.spec_config.enabled = 0;
+ spec_priv->spec_config.enabled = 0;
break;
case SPECTRAL_BACKGROUND:
/* send endless samples.
* TODO: is this really useful for "background"?
*/
- sc->spec_priv.spec_config.endless = 1;
- sc->spec_priv.spec_config.enabled = 1;
+ spec_priv->spec_config.endless = 1;
+ spec_priv->spec_config.enabled = 1;
break;
case SPECTRAL_CHANSCAN:
case SPECTRAL_MANUAL:
- sc->spec_priv.spec_config.endless = 0;
- sc->spec_priv.spec_config.enabled = 1;
+ spec_priv->spec_config.endless = 0;
+ spec_priv->spec_config.enabled = 1;
break;
default:
return -1;
}
ath_ps_ops(common)->wakeup(common);
- ath9k_hw_ops(ah)->spectral_scan_config(ah, &sc->spec_priv.spec_config);
+ ath9k_hw_ops(ah)->spectral_scan_config(ah, &spec_priv->spec_config);
ath_ps_ops(common)->restore(common);
- sc->spec_priv.spectral_mode = spectral_mode;
+ spec_priv->spectral_mode = spectral_mode;
return 0;
}
buf[len] = '\0';
if (strncmp("trigger", buf, 7) == 0) {
- ath9k_spectral_scan_trigger(common);
+ ath9k_spectral_scan_trigger(common, spec_priv);
} else if (strncmp("background", buf, 10) == 0) {
- ath9k_spectral_scan_config(common, SPECTRAL_BACKGROUND);
+ ath9k_spectral_scan_config(common, spec_priv, SPECTRAL_BACKGROUND);
ath_dbg(common, CONFIG, "spectral scan: background mode enabled\n");
} else if (strncmp("chanscan", buf, 8) == 0) {
- ath9k_spectral_scan_config(common, SPECTRAL_CHANSCAN);
+ ath9k_spectral_scan_config(common, spec_priv, SPECTRAL_CHANSCAN);
ath_dbg(common, CONFIG, "spectral scan: channel scan mode enabled\n");
} else if (strncmp("manual", buf, 6) == 0) {
- ath9k_spectral_scan_config(common, SPECTRAL_MANUAL);
+ ath9k_spectral_scan_config(common, spec_priv, SPECTRAL_MANUAL);
ath_dbg(common, CONFIG, "spectral scan: manual mode enabled\n");
} else if (strncmp("disable", buf, 7) == 0) {
- ath9k_spectral_scan_config(common, SPECTRAL_DISABLED);
+ ath9k_spectral_scan_config(common, spec_priv, SPECTRAL_DISABLED);
ath_dbg(common, CONFIG, "spectral scan: disabled\n");
} else {
return -EINVAL;
void ath9k_spectral_init_debug(struct ath_spec_scan_priv *spec_priv, struct dentry *debugfs_phy);
void ath9k_spectral_deinit_debug(struct ath_spec_scan_priv *spec_priv);
-void ath9k_spectral_scan_trigger(struct ath_common *common);
+void ath9k_spectral_scan_trigger(struct ath_common *common,
+ struct ath_spec_scan_priv *spec_priv);
int ath9k_spectral_scan_config(struct ath_common *common,
+ struct ath_spec_scan_priv *spec_priv,
enum spectral_mode spectral_mode);
#ifdef CONFIG_ATH9K_DEBUGFS