set the antenna switch when fixing the tx antenna using the
dev.ath.X.txantenna sysctl; this is typically what folks want but beware this has the side effect of disabling rx diversity MFC after: 2 weeks
This commit is contained in:
parent
eb29c8f465
commit
8debcae44f
@ -5342,6 +5342,29 @@ ath_sysctl_softled(SYSCTL_HANDLER_ARGS)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
ath_sysctl_txantenna(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
struct ath_softc *sc = arg1;
|
||||
u_int txantenna = ath_hal_getantennaswitch(sc->sc_ah);
|
||||
int error;
|
||||
|
||||
error = sysctl_handle_int(oidp, &txantenna, 0, req);
|
||||
if (!error && req->newptr) {
|
||||
/* XXX assumes 2 antenna ports */
|
||||
if (txantenna < HAL_ANT_VARIABLE || txantenna > HAL_ANT_FIXED_B)
|
||||
return EINVAL;
|
||||
ath_hal_setantennaswitch(sc->sc_ah, txantenna);
|
||||
/*
|
||||
* NB: with the switch locked this isn't meaningful,
|
||||
* but set it anyway so things like radiotap get
|
||||
* consistent info in their data.
|
||||
*/
|
||||
sc->sc_txantenna = txantenna;
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
static int
|
||||
ath_sysctl_rxantenna(SYSCTL_HANDLER_ARGS)
|
||||
{
|
||||
@ -5561,9 +5584,9 @@ ath_sysctlattach(struct ath_softc *sc)
|
||||
SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
|
||||
"ledidle", CTLFLAG_RW, &sc->sc_ledidle, 0,
|
||||
"idle time for inactivity LED (ticks)");
|
||||
SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
|
||||
"txantenna", CTLFLAG_RW, &sc->sc_txantenna, 0,
|
||||
"tx antenna (0=auto)");
|
||||
SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
|
||||
"txantenna", CTLTYPE_INT | CTLFLAG_RW, sc, 0,
|
||||
ath_sysctl_txantenna, "I", "antenna switch");
|
||||
SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
|
||||
"rxantenna", CTLTYPE_INT | CTLFLAG_RW, sc, 0,
|
||||
ath_sysctl_rxantenna, "I", "default/rx antenna");
|
||||
|
@ -484,6 +484,10 @@ void ath_intr(void *);
|
||||
(ath_hal_getcapability(_ah, HAL_CAP_DIVERSITY, 1, NULL) == HAL_OK)
|
||||
#define ath_hal_setdiversity(_ah, _v) \
|
||||
ath_hal_setcapability(_ah, HAL_CAP_DIVERSITY, 1, _v, NULL)
|
||||
#define ath_hal_getantennaswitch(_ah) \
|
||||
((*(_ah)->ah_getAntennaSwitch)((_ah)))
|
||||
#define ath_hal_setantennaswitch(_ah, _v) \
|
||||
((*(_ah)->ah_setAntennaSwitch)((_ah), (_v)))
|
||||
#define ath_hal_getdiag(_ah, _pv) \
|
||||
(ath_hal_getcapability(_ah, HAL_CAP_DIAG, 0, _pv) == HAL_OK)
|
||||
#define ath_hal_setdiag(_ah, _v) \
|
||||
|
Loading…
Reference in New Issue
Block a user