p4-projects@freebsd.org
[Top] [All Lists]

PERFORCE change 115002 for review

Subject: PERFORCE change 115002 for review
From: Sam Leffler
Date: Sun, 25 Feb 2007 00:31:13 GMT
http://perforce.freebsd.org/chv.cgi?CH=115002

Change 115002 by sam@sam_ebb on 2007/02/25 00:30:36

        IFC sysctl fixes

Affected files ...

.. //depot/projects/wifi/sys/dev/ath/if_ath.c#135 integrate
.. //depot/projects/wifi/sys/dev/ath/if_athvar.h#54 integrate

Differences ...

==== //depot/projects/wifi/sys/dev/ath/if_ath.c#135 (text+ko) ====

@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.160 2007/01/21 19:32:50 
marius Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.162 2007/02/24 23:23:29 sam 
Exp $");
 
 /*
  * Driver for the Atheros Wireless LAN controller.
@@ -6001,6 +6001,29 @@
 }
 
 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)
 {
        struct ath_softc *sc = arg1;
@@ -6056,7 +6079,8 @@
        error = sysctl_handle_int(oidp, &scale, 0, req);
        if (error || !req->newptr)
                return error;
-       return !ath_hal_settpscale(sc->sc_ah, scale) ? EINVAL : ath_reset(ifp);
+       return !ath_hal_settpscale(sc->sc_ah, scale) ? EINVAL :
+           (ifp->if_drv_flags & IFF_DRV_RUNNING) ? ath_reset(ifp) : 0;
 }
 
 static int
@@ -6076,13 +6100,15 @@
 ath_sysctl_rfkill(SYSCTL_HANDLER_ARGS)
 {
        struct ath_softc *sc = arg1;
+       struct ifnet *ifp = sc->sc_ifp;
        u_int rfkill = ath_hal_getrfkill(sc->sc_ah);
        int error;
 
        error = sysctl_handle_int(oidp, &rfkill, 0, req);
        if (error || !req->newptr)
                return error;
-       return !ath_hal_setrfkill(sc->sc_ah, rfkill) ? EINVAL : 0;
+       return !ath_hal_setrfkill(sc->sc_ah, rfkill) ? EINVAL :
+           (ifp->if_drv_flags & IFF_DRV_RUNNING) ? ath_reset(ifp) : 0;
 }
 
 static int
@@ -6209,9 +6235,9 @@
        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");

==== //depot/projects/wifi/sys/dev/ath/if_athvar.h#54 (text+ko) ====

@@ -33,7 +33,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  * THE POSSIBILITY OF SUCH DAMAGES.
  *
- * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.58 2007/01/15 04:26:19 sam Exp $
+ * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.59 2007/02/24 23:12:58 sam Exp $
  */
 
 /*
@@ -507,6 +507,10 @@
        (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) \
_______________________________________________
p4-projects@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/p4-projects
To unsubscribe, send any mail to "p4-projects-unsubscribe@xxxxxxxxxxx"

<Prev in Thread] Current Thread [Next in Thread>
  • PERFORCE change 115002 for review, Sam Leffler <=