[Patch] Reflect state of rfkill switch in a sysctl for ath based card

Andre Albsmeier <[email protected]>
Newsgroups gmane.os.freebsd.devel.mobile
Message-ID <20120312151358.GA26109@bali>
Hello all,

my laptop (FSC S7020) got this rfkill switch for the normally
used Intel 2200 WLAN card. The state of this switch can be
seen through the dev.iwi.0.radio sysctl.

With my new Atheros based card (Wistron CM9) this never worked
although the state of the switch was properly honoured by the
card.

In case anyone is interested: The following patch brings this
functionality to the ath driver of 7.4-STABLE and works at least
on the above mentioned hardware. Comments and suggestions (apart
from style fixes;-)) are welcome...

	-Andre

--- sys/dev/ath/if_ath.c.ORI	2010-11-17 18:30:14.000000000 +0100
+++ sys/dev/ath/if_ath.c	2012-03-02 13:47:26.000000000 +0100
@@ -6074,6 +6074,15 @@
 	return !ath_hal_settpcts(sc->sc_ah, tpcts) ? EINVAL : 0;
 }
 
+static int ath_sysctl_radio( SYSCTL_HANDLER_ARGS )
+{
+  struct ath_softc* sc = arg1;
+  int val;
+
+  val = ath_hal_gpioget( sc->sc_ah, sc->sc_rfsilentpin ) ^ sc->sc_rfsilentpol;
+  return sysctl_handle_int( oidp, &val, 0, req );
+}
+
 static void
 ath_sysctlattach(struct ath_softc *sc)
 {
@@ -6162,6 +6171,7 @@
 		SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
 			"rfkill", CTLTYPE_INT | CTLFLAG_RW, sc, 0,
 			ath_sysctl_rfkill, "I", "enable/disable RF kill switch");
+  SYSCTL_ADD_PROC( ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "radio", CTLTYPE_INT | CTLFLAG_RD, sc, 0, ath_sysctl_radio, "I", "radio transmitter switch state (0=off, 1=on)");
 	}
 	sc->sc_monpass = HAL_RXERR_DECRYPT | HAL_RXERR_MIC;
 	SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.