From owner-svn-src-head@FreeBSD.ORG Thu Feb 19 04:37:44 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9B8151065673; Thu, 19 Feb 2009 04:37:44 +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 89BE88FC15; Thu, 19 Feb 2009 04:37:44 +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 n1J4biD8084266; Thu, 19 Feb 2009 04:37:44 GMT (envelope-from sam@svn.freebsd.org) Received: (from sam@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n1J4bixJ084265; Thu, 19 Feb 2009 04:37:44 GMT (envelope-from sam@svn.freebsd.org) Message-Id: <200902190437.n1J4bixJ084265@svn.freebsd.org> From: Sam Leffler Date: Thu, 19 Feb 2009 04:37:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r188776 - head/sys/net80211 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Feb 2009 04:37:45 -0000 Author: sam Date: Thu Feb 19 04:37:44 2009 New Revision: 188776 URL: http://svn.freebsd.org/changeset/base/188776 Log: simplify setting up the roaming parameters; writing default parameters only for active modes hasn't turned out to be useful so just define a const table and copy it in place Modified: head/sys/net80211/ieee80211_scan.c Modified: head/sys/net80211/ieee80211_scan.c ============================================================================== --- head/sys/net80211/ieee80211_scan.c Thu Feb 19 04:34:22 2009 (r188775) +++ head/sys/net80211/ieee80211_scan.c Thu Feb 19 04:37:44 2009 (r188776) @@ -73,16 +73,18 @@ struct scan_state { /* * Roaming-related defaults. RSSI thresholds are as returned by the - * driver (dBm). Transmit rate thresholds are IEEE rate codes (i.e + * driver (.5dBm). Transmit rate thresholds are IEEE rate codes (i.e * .5M units) or MCS. */ -#define ROAM_RSSI_11A_DEFAULT 14 /* rssi threshold for 11a bss */ -#define ROAM_RSSI_11B_DEFAULT 14 /* rssi threshold for 11b bss */ -#define ROAM_RSSI_11BONLY_DEFAULT 14 /* rssi threshold for 11b-only bss */ -#define ROAM_RATE_11A_DEFAULT 2*12 /* tx rate thresh for 11a bss */ -#define ROAM_RATE_11B_DEFAULT 2*5 /* tx rate thresh for 11b bss */ -#define ROAM_RATE_11BONLY_DEFAULT 2*1 /* tx rate thresh for 11b-only bss */ -#define ROAM_MCS_11N_DEFAULT 1 /* tx MCS thresh for 11n bss*/ +/* rssi thresholds */ +#define ROAM_RSSI_11A_DEFAULT 14 /* 11a bss */ +#define ROAM_RSSI_11B_DEFAULT 14 /* 11b bss */ +#define ROAM_RSSI_11BONLY_DEFAULT 14 /* 11b-only bss */ +/* transmit rate thresholds */ +#define ROAM_RATE_11A_DEFAULT 2*12 /* 11a bss */ +#define ROAM_RATE_11B_DEFAULT 2*5 /* 11b bss */ +#define ROAM_RATE_11BONLY_DEFAULT 2*1 /* 11b-only bss */ +#define ROAM_MCS_11N_DEFAULT (1 | IEEE80211_RATE_MCS) /* 11n bss */ static void scan_restart_pwrsav(void *); static void scan_curchan(struct ieee80211_scan_state *, unsigned long); @@ -126,50 +128,34 @@ ieee80211_scan_detach(struct ieee80211co } } -static __inline void -setparams(struct ieee80211_roamparam *rp, int8_t rssi, uint8_t txrate) -{ - rp->rssi = rssi; - rp->rate = txrate; -} +static const struct ieee80211_roamparam defroam[IEEE80211_MODE_MAX] = { + [IEEE80211_MODE_11A] = { .rssi = ROAM_RSSI_11A_DEFAULT, + .rate = ROAM_RATE_11A_DEFAULT }, + [IEEE80211_MODE_11G] = { .rssi = ROAM_RSSI_11B_DEFAULT, + .rate = ROAM_RATE_11B_DEFAULT }, + [IEEE80211_MODE_11B] = { .rssi = ROAM_RSSI_11BONLY_DEFAULT, + .rate = ROAM_RATE_11BONLY_DEFAULT }, + [IEEE80211_MODE_TURBO_A]= { .rssi = ROAM_RSSI_11A_DEFAULT, + .rate = ROAM_RATE_11A_DEFAULT }, + [IEEE80211_MODE_TURBO_G]= { .rssi = ROAM_RSSI_11A_DEFAULT, + .rate = ROAM_RATE_11A_DEFAULT }, + [IEEE80211_MODE_STURBO_A]={ .rssi = ROAM_RSSI_11A_DEFAULT, + .rate = ROAM_RATE_11A_DEFAULT }, + [IEEE80211_MODE_11NA] = { .rssi = ROAM_RSSI_11A_DEFAULT, + .rate = ROAM_MCS_11N_DEFAULT }, + [IEEE80211_MODE_11NG] = { .rssi = ROAM_RSSI_11B_DEFAULT, + .rate = ROAM_MCS_11N_DEFAULT }, +}; void ieee80211_scan_vattach(struct ieee80211vap *vap) { - struct ieee80211com *ic = vap->iv_ic; - vap->iv_bgscanidle = (IEEE80211_BGSCAN_IDLE_DEFAULT*1000)/hz; vap->iv_bgscanintvl = IEEE80211_BGSCAN_INTVAL_DEFAULT*hz; vap->iv_scanvalid = IEEE80211_SCAN_VALID_DEFAULT*hz; vap->iv_roaming = IEEE80211_ROAMING_AUTO; - - /* NB: only set supported modes so user apps can identify */ - if (isset(ic->ic_modecaps, IEEE80211_MODE_11A)) - setparams(&vap->iv_roamparms[IEEE80211_MODE_11A], - ROAM_RSSI_11A_DEFAULT, ROAM_RATE_11A_DEFAULT); - if (isset(ic->ic_modecaps, IEEE80211_MODE_11G)) - setparams(&vap->iv_roamparms[IEEE80211_MODE_11G], - ROAM_RSSI_11B_DEFAULT, ROAM_RATE_11B_DEFAULT); - if (isset(ic->ic_modecaps, IEEE80211_MODE_11B)) - setparams(&vap->iv_roamparms[IEEE80211_MODE_11B], - ROAM_RSSI_11BONLY_DEFAULT, ROAM_RATE_11BONLY_DEFAULT); - /* NB: default turbo controls to be the same as !turbo */ - if (isset(ic->ic_modecaps, IEEE80211_MODE_TURBO_A)) - vap->iv_roamparms[IEEE80211_MODE_TURBO_A] = - vap->iv_roamparms[IEEE80211_MODE_11A]; - if (isset(ic->ic_modecaps, IEEE80211_MODE_TURBO_G)) - vap->iv_roamparms[IEEE80211_MODE_TURBO_G] = - vap->iv_roamparms[IEEE80211_MODE_11G]; - if (isset(ic->ic_modecaps, IEEE80211_MODE_STURBO_A)) - vap->iv_roamparms[IEEE80211_MODE_STURBO_A] = - vap->iv_roamparms[IEEE80211_MODE_11A]; - if (isset(ic->ic_modecaps, IEEE80211_MODE_11NA)) - setparams(&vap->iv_roamparms[IEEE80211_MODE_11NA], - ROAM_RSSI_11A_DEFAULT, ROAM_MCS_11N_DEFAULT | 0x80); - if (isset(ic->ic_modecaps, IEEE80211_MODE_11NG)) - setparams(&vap->iv_roamparms[IEEE80211_MODE_11NG], - ROAM_RSSI_11B_DEFAULT, ROAM_MCS_11N_DEFAULT | 0x80); + memcpy(vap->iv_roamparms, defroam, sizeof(defroam)); } void