From owner-svn-src-head@FreeBSD.ORG Sun Mar 15 20:51:07 2015 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7FC53EE1; Sun, 15 Mar 2015 20:51:07 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 613542BB; Sun, 15 Mar 2015 20:51:07 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t2FKp7ig071589; Sun, 15 Mar 2015 20:51:07 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t2FKp7RR071588; Sun, 15 Mar 2015 20:51:07 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <201503152051.t2FKp7RR071588@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Sun, 15 Mar 2015 20:51:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r280083 - head/sys/dev/wpi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.18-1 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: Sun, 15 Mar 2015 20:51:07 -0000 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 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];