Author: adrian Date: Sun Mar 15 20:51:06 2015 New Revision: 280083 URL: https://svnweb.freebsd.org/changeset/base/280083
Log: Move beacon initialisation to wpi_init_beacon() PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3er...@gmail.com> Modified: head/sys/dev/wpi/if_wpi.c Modified: head/sys/dev/wpi/if_wpi.c ============================================================================== --- head/sys/dev/wpi/if_wpi.c Sun Mar 15 20:50:23 2015 (r280082) +++ head/sys/dev/wpi/if_wpi.c Sun Mar 15 20:51:06 2015 (r280083) @@ -130,6 +130,7 @@ static int wpi_probe(device_t); static int wpi_attach(device_t); static void wpi_radiotap_attach(struct wpi_softc *); static void wpi_sysctlattach(struct wpi_softc *); +static void wpi_init_beacon(struct wpi_vap *); static struct ieee80211vap *wpi_vap_create(struct ieee80211com *, const char [IFNAMSIZ], int, enum ieee80211_opmode, int, const uint8_t [IEEE80211_ADDR_LEN], @@ -579,6 +580,23 @@ wpi_sysctlattach(struct wpi_softc *sc) #endif } +static void +wpi_init_beacon(struct wpi_vap *wvp) +{ + struct wpi_buf *bcn = &wvp->wv_bcbuf; + struct wpi_cmd_beacon *cmd = (struct wpi_cmd_beacon *)&bcn->data; + + cmd->id = WPI_ID_BROADCAST; + cmd->ofdm_mask = 0xff; + cmd->cck_mask = 0x0f; + cmd->lifetime = htole32(WPI_LIFETIME_INFINITE); + cmd->flags = htole32(WPI_TX_AUTO_SEQ | WPI_TX_INSERT_TSTAMP); + + bcn->code = WPI_CMD_SET_BEACON; + bcn->ac = WPI_CMD_QUEUE_NUM; + bcn->size = sizeof(struct wpi_cmd_beacon); +} + static struct ieee80211vap * wpi_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit, enum ieee80211_opmode opmode, int flags, @@ -598,6 +616,9 @@ wpi_vap_create(struct ieee80211com *ic, vap = &wvp->vap; ieee80211_vap_setup(ic, vap, name, unit, opmode, flags, bssid, mac); + if (opmode == IEEE80211_M_IBSS) + wpi_init_beacon(wvp); + /* Override with driver methods. */ wvp->newstate = vap->iv_newstate; vap->iv_key_alloc = wpi_key_alloc; @@ -3932,7 +3953,6 @@ wpi_setup_beacon(struct wpi_softc *sc, s struct ieee80211_beacon_offsets bo; struct wpi_cmd_beacon *cmd = (struct wpi_cmd_beacon *)&bcn->data; struct mbuf *m; - int totlen; DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_DOING, __func__); @@ -3945,20 +3965,8 @@ wpi_setup_beacon(struct wpi_softc *sc, s "%s: could not allocate beacon frame\n", __func__); return ENOMEM; } - totlen = m->m_pkthdr.len; - - cmd->id = WPI_ID_BROADCAST; - cmd->ofdm_mask = 0xff; - cmd->cck_mask = 0x0f; - cmd->lifetime = htole32(WPI_LIFETIME_INFINITE); - cmd->flags = htole32(WPI_TX_AUTO_SEQ | WPI_TX_INSERT_TSTAMP); - - bcn->ni = NULL; - bcn->code = WPI_CMD_SET_BEACON; - bcn->ac = 4; - bcn->size = sizeof(struct wpi_cmd_beacon); - cmd->len = htole16(totlen); + cmd->len = htole16(m->m_pkthdr.len); cmd->plcp = (ic->ic_curmode == IEEE80211_MODE_11A) ? wpi_ridx_to_plcp[WPI_RIDX_OFDM6] : wpi_ridx_to_plcp[WPI_RIDX_CCK1]; _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"