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

Andre Albsmeier Andre.Albsmeier at siemens.com
Tue Mar 13 11:19:45 UTC 2012


On Mon, 12-Mar-2012 at 17:27:10 +0100, Adrian Chadd wrote:
> Hi!
> 
> Would you please create a PR and let me know what the PR number is?

Well, there is a high probability that it might not work on
non-5212 cards end even here it might fail (I can just test
it with this Wistron CM9 card). Maybe someone with more
knowledge about ath(4) (Sam?) might have quick look at it
before...

	-Andre

> 
> I'll test it out on my local ath(4) NICs and commit it to -HEAD if
> there aren't any issues with it.
> 
> Thanks!
> 
> 
> Adrian
> 
> 
> On 12 March 2012 08:13, Andre Albsmeier <Andre.Albsmeier at siemens.com> wrote:
> > 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,
> > _______________________________________________
> > freebsd-mobile at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
> > To unsubscribe, send any mail to "freebsd-mobile-unsubscribe at freebsd.org"

-- 
FreeBSD: We eat penguins for breakfast


More information about the freebsd-mobile mailing list