summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2012-08-24 17:39:57 +0000
committeradrian <adrian@FreeBSD.org>2012-08-24 17:39:57 +0000
commitd8c02526b32ddae1df625f0f9082ee1db503a954 (patch)
tree517f8e07d67d8033e77016057dde7b47a0b15db1
parent0a128d78227e9cd4fbe1b0a6b10bac271c2b386b (diff)
downloadFreeBSD-src-d8c02526b32ddae1df625f0f9082ee1db503a954.zip
FreeBSD-src-d8c02526b32ddae1df625f0f9082ee1db503a954.tar.gz
Remove the hard-coded AR5416-series parameters and instead use the
DFS parameters fetched from the HAL. Check whether the specific chipset supports RADAR reporting before enabling DFS; or some of the (unset) DFS methods may fail. Tested: * AR5210 (correctly didn't enable radar PHY reporting) * AR5212 (correctly enabled radar PHY reporting w/ the correct default parameters.) TODO: * Now that I have this capability check in place, I could remove the (empty) DFS methods from AR5210/AR5211. * Test on AR5416, AR9160, AR9280. PR: kern/170904
-rw-r--r--sys/dev/ath/ath_dfs/null/dfs_null.c51
1 files changed, 13 insertions, 38 deletions
diff --git a/sys/dev/ath/ath_dfs/null/dfs_null.c b/sys/dev/ath/ath_dfs/null/dfs_null.c
index c2d7f5e..f443b7c 100644
--- a/sys/dev/ath/ath_dfs/null/dfs_null.c
+++ b/sys/dev/ath/ath_dfs/null/dfs_null.c
@@ -72,28 +72,6 @@ __FBSDID("$FreeBSD$");
#include <dev/ath/ath_hal/ah_desc.h>
/*
- * These are default parameters for the AR5416 and
- * later 802.11n NICs. They simply enable some
- * radar pulse event generation.
- *
- * These are very likely not valid for the AR5212 era
- * NICs.
- *
- * Since these define signal sizing and threshold
- * parameters, they may need changing based on the
- * specific antenna and receive amplifier
- * configuration.
- */
-#define AR5416_DFS_FIRPWR -33
-#define AR5416_DFS_RRSSI 20
-#define AR5416_DFS_HEIGHT 10
-#define AR5416_DFS_PRSSI 15
-#define AR5416_DFS_INBAND 15
-#define AR5416_DFS_RELPWR 8
-#define AR5416_DFS_RELSTEP 12
-#define AR5416_DFS_MAXLEN 255
-
-/*
* Methods which are required
*/
@@ -125,30 +103,27 @@ ath_dfs_radar_enable(struct ath_softc *sc, struct ieee80211_channel *chan)
#if 0
HAL_PHYERR_PARAM pe;
+ /* Check if the hardware supports radar reporting */
+ /* XXX TODO: migrate HAL_CAP_RADAR/HAL_CAP_AR to somewhere public! */
+ if (ath_hal_getcapability(sc->sc_ah,
+ HAL_CAP_PHYDIAG, 0, NULL) != HAL_OK)
+ return (0);
+
/* Check if the current channel is radar-enabled */
if (! IEEE80211_IS_CHAN_DFS(chan))
return (0);
+ /* Fetch the default parameters */
+ memset(&pe, '\0', sizeof(pe));
+ if (! ath_hal_getdfsdefaultthresh(sc->sc_ah, &pe))
+ return (0);
+
/* Enable radar PHY error reporting */
sc->sc_dodfs = 1;
- /*
- * These are general examples of the parameter values
- * to use when configuring radar pulse detection for
- * the AR5416, AR91xx, AR92xx NICs. They are only
- * for testing and do require tuning depending upon the
- * hardware and deployment specifics.
- */
- pe.pe_firpwr = AR5416_DFS_FIRPWR;
- pe.pe_rrssi = AR5416_DFS_RRSSI;
- pe.pe_height = AR5416_DFS_HEIGHT;
- pe.pe_prssi = AR5416_DFS_PRSSI;
- pe.pe_inband = AR5416_DFS_INBAND;
- pe.pe_relpwr = AR5416_DFS_RELPWR;
- pe.pe_relstep = AR5416_DFS_RELSTEP;
- pe.pe_maxlen = AR5416_DFS_MAXLEN;
+ /* Tell the hardware to enable radar reporting */
pe.pe_enabled = 1;
-
+
/* Flip on extension channel events only if doing HT40 */
if (IEEE80211_IS_CHAN_HT40(chan))
pe.pe_extchannel = 1;
OpenPOWER on IntegriCloud