Date: Sat, 18 Jun 2011 11:19:12 +0000 (UTC) From: Bernhard Schmidt <bschmidt@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r223230 - stable/8/sys/dev/iwn Message-ID: <201106181119.p5IBJCBr037778@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: bschmidt Date: Sat Jun 18 11:19:12 2011 New Revision: 223230 URL: http://svn.freebsd.org/changeset/base/223230 Log: MFC r220634: Reuse net80211 code: - IWN_TXOP_TO_US is equal to IEEE80211_TXOP_TO_US - use IEEE80211_DUR_TU - ieee80211_add_rates/ieee80211_add_xrates are public, use em - copied ieee80211_add_ssid it is not public Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:17:13 2011 (r223229) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:19:12 2011 (r223230) @@ -198,6 +198,7 @@ static void iwn_tune_sensitivity(struct static int iwn_send_sensitivity(struct iwn_softc *); static int iwn_set_pslevel(struct iwn_softc *, int, int, int); static int iwn_config(struct iwn_softc *); +static uint8_t *ieee80211_add_ssid(uint8_t *, const uint8_t *, u_int); static int iwn_scan(struct iwn_softc *); static int iwn_auth(struct iwn_softc *, struct ieee80211vap *vap); static int iwn_run(struct iwn_softc *, struct ieee80211vap *vap); @@ -3636,7 +3637,6 @@ static int iwn_wme_update(struct ieee80211com *ic) { #define IWN_EXP2(x) ((1 << (x)) - 1) /* CWmin = 2^ECWmin - 1 */ -#define IWN_TXOP_TO_US(v) (v<<5) struct iwn_softc *sc = ic->ic_ifp->if_softc; struct iwn_edca_params cmd; int i; @@ -3650,7 +3650,7 @@ iwn_wme_update(struct ieee80211com *ic) cmd.ac[i].cwmin = htole16(IWN_EXP2(wmep->wmep_logcwmin)); cmd.ac[i].cwmax = htole16(IWN_EXP2(wmep->wmep_logcwmax)); cmd.ac[i].txoplimit = - htole16(IWN_TXOP_TO_US(wmep->wmep_txopLimit)); + htole16(IEEE80211_TXOP_TO_US(wmep->wmep_txopLimit)); } IEEE80211_UNLOCK(ic); IWN_LOCK(sc); @@ -3658,7 +3658,6 @@ iwn_wme_update(struct ieee80211com *ic) IWN_UNLOCK(sc); IEEE80211_LOCK(ic); return 0; -#undef IWN_TXOP_TO_US #undef IWN_EXP2 } @@ -3720,7 +3719,7 @@ iwn_set_timing(struct iwn_softc *sc, str cmd.lintval = htole16(10); /* Compute remaining time until next beacon. */ - val = (uint64_t)ni->ni_intval * 1024; /* msecs -> usecs */ + val = (uint64_t)ni->ni_intval * IEEE80211_DUR_TU; mod = le64toh(cmd.tstamp) % val; cmd.binitval = htole32((uint32_t)(val - mod)); @@ -4270,7 +4269,7 @@ iwn_tune_sensitivity(struct iwn_softc *s /* Compute number of false alarms since last call for OFDM. */ fa = le32toh(stats->ofdm.bad_plcp) - calib->bad_plcp_ofdm; fa += le32toh(stats->ofdm.fa) - calib->fa_ofdm; - fa *= 200 * 1024; /* 200TU */ + fa *= 200 * IEEE80211_DUR_TU; /* 200TU */ /* Save counters values for next call. */ calib->bad_plcp_ofdm = le32toh(stats->ofdm.bad_plcp); @@ -4327,7 +4326,7 @@ iwn_tune_sensitivity(struct iwn_softc *s /* Compute number of false alarms since last call for CCK. */ fa = le32toh(stats->cck.bad_plcp) - calib->bad_plcp_cck; fa += le32toh(stats->cck.fa) - calib->fa_cck; - fa *= 200 * 1024; /* 200TU */ + fa *= 200 * IEEE80211_DUR_TU; /* 200TU */ /* Save counters values for next call. */ calib->bad_plcp_cck = le32toh(stats->cck.bad_plcp); @@ -4586,6 +4585,18 @@ iwn_config(struct iwn_softc *sc) return 0; } +/* + * Add an ssid element to a frame. + */ +static uint8_t * +ieee80211_add_ssid(uint8_t *frm, const uint8_t *ssid, u_int len) +{ + *frm++ = IEEE80211_ELEMID_SSID; + *frm++ = len; + memcpy(frm, ssid, len); + return frm + len; +} + static int iwn_scan(struct iwn_softc *sc) { @@ -4599,7 +4610,7 @@ iwn_scan(struct iwn_softc *sc) struct ieee80211_frame *wh; struct ieee80211_rateset *rs; struct ieee80211_channel *c; - int buflen, error, nrates; + int buflen, error; uint16_t rxchain; uint8_t *buf, *frm, txant; @@ -4675,30 +4686,14 @@ iwn_scan(struct iwn_softc *sc) *(uint16_t *)&wh->i_seq[0] = 0; /* filled by HW */ frm = (uint8_t *)(wh + 1); - - /* Add SSID IE. */ - *frm++ = IEEE80211_ELEMID_SSID; - *frm++ = ss->ss_ssid[0].len; - memcpy(frm, ss->ss_ssid[0].ssid, ss->ss_ssid[0].len); - frm += ss->ss_ssid[0].len; - - /* Add supported rates IE. */ - *frm++ = IEEE80211_ELEMID_RATES; - nrates = rs->rs_nrates; - if (nrates > IEEE80211_RATE_SIZE) - nrates = IEEE80211_RATE_SIZE; - *frm++ = nrates; - memcpy(frm, rs->rs_rates, nrates); - frm += nrates; - - /* Add supported xrates IE. */ - if (rs->rs_nrates > IEEE80211_RATE_SIZE) { - nrates = rs->rs_nrates - IEEE80211_RATE_SIZE; - *frm++ = IEEE80211_ELEMID_XRATES; - *frm++ = (uint8_t)nrates; - memcpy(frm, rs->rs_rates + IEEE80211_RATE_SIZE, nrates); - frm += nrates; - } + frm = ieee80211_add_ssid(frm, NULL, 0); + frm = ieee80211_add_rates(frm, rs); + if (rs->rs_nrates > IEEE80211_RATE_SIZE) + frm = ieee80211_add_xrates(frm, rs); +#if 0 /* HT */ + if (ic->ic_flags & IEEE80211_F_HTON) + frm = ieee80211_add_htcaps(frm, ic); +#endif /* Set length of probe request. */ tx->len = htole16(frm - (uint8_t *)wh);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201106181119.p5IBJCBr037778>