From owner-svn-src-user@FreeBSD.ORG Tue Jan 20 22:04:31 2009 Return-Path: <owner-svn-src-user@FreeBSD.ORG> Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2CE0D10657D2; Tue, 20 Jan 2009 22:04:31 +0000 (UTC) (envelope-from sam@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0F8AF8FC23; Tue, 20 Jan 2009 22:04:31 +0000 (UTC) (envelope-from sam@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n0KM4UOT057990; Tue, 20 Jan 2009 22:04:30 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0KM4UR6057988; Tue, 20 Jan 2009 22:04:30 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200901202204.n0KM4UR6057988@svn.freebsd.org> From: Sam Leffler <sam@FreeBSD.org> Date: Tue, 20 Jan 2009 22:04:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187492 - user/sam/wifi/sys/net80211 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" <svn-src-user.freebsd.org> List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>, <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe> List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user> List-Post: <mailto:svn-src-user@freebsd.org> List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help> List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>, <mailto:svn-src-user-request@freebsd.org?subject=subscribe> X-List-Received-Date: Tue, 20 Jan 2009 22:04:35 -0000 Author: sam Date: Tue Jan 20 22:04:30 2009 New Revision: 187492 URL: http://svn.freebsd.org/changeset/base/187492 Log: Change ic_getradiocaps driver callback to include the max # channels so callers know the size of the array passed down (previously this was fixed to be IEEE80211_CHAN_MAX). Modified: user/sam/wifi/sys/net80211/ieee80211_regdomain.c user/sam/wifi/sys/net80211/ieee80211_var.h Modified: user/sam/wifi/sys/net80211/ieee80211_regdomain.c ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_regdomain.c Tue Jan 20 22:01:08 2009 (r187491) +++ user/sam/wifi/sys/net80211/ieee80211_regdomain.c Tue Jan 20 22:04:30 2009 (r187492) @@ -44,12 +44,14 @@ __FBSDID("$FreeBSD$"); #include <net80211/ieee80211_regdomain.h> static void -null_getradiocaps(struct ieee80211com *ic, int *n, struct ieee80211_channel *c) +null_getradiocaps(struct ieee80211com *ic, int maxchan, + int *n, struct ieee80211_channel *c) { /* just feed back the current channel list */ - *n = ic->ic_nchans; - memcpy(c, ic->ic_channels, - ic->ic_nchans*sizeof(struct ieee80211_channel)); + *n = ic->ic_nchans; /* XXX return count copied? */ + if (maxchan > ic->ic_nchans) + maxchan = ic->ic_nchans; + memcpy(c, ic->ic_channels, maxchan*sizeof(struct ieee80211_channel)); } static int @@ -69,7 +71,7 @@ ieee80211_regdomain_attach(struct ieee80 ic->ic_regdomain.location = ' '; /* both */ ic->ic_regdomain.isocc[0] = 'U'; /* XXX */ ic->ic_regdomain.isocc[1] = 'S'; /* XXX */ - /* XXX? too late to setup default channel list */ + /* NB: driver calls ieee80211_init_channels or similar */ } ic->ic_getradiocaps = null_getradiocaps; ic->ic_setregdomain = null_setregdomain; Modified: user/sam/wifi/sys/net80211/ieee80211_var.h ============================================================================== --- user/sam/wifi/sys/net80211/ieee80211_var.h Tue Jan 20 22:01:08 2009 (r187491) +++ user/sam/wifi/sys/net80211/ieee80211_var.h Tue Jan 20 22:04:30 2009 (r187492) @@ -208,7 +208,7 @@ struct ieee80211com { ieee80211vap_attach ic_vattach[IEEE80211_OPMODE_MAX]; /* return hardware/radio capabilities */ void (*ic_getradiocaps)(struct ieee80211com *, - int *, struct ieee80211_channel []); + int, int *, struct ieee80211_channel []); /* check and/or prepare regdomain state change */ int (*ic_setregdomain)(struct ieee80211com *, struct ieee80211_regdomain *,