From owner-svn-src-head@freebsd.org Sat Jan 7 07:16:44 2017 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A711CCA4E48; Sat, 7 Jan 2017 07:16:44 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3C6A914A0; Sat, 7 Jan 2017 07:16:44 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: by mail-wm0-x241.google.com with SMTP id l2so9632750wml.2; Fri, 06 Jan 2017 23:16:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=U5b1KexWtA2N6iqjdE0/CksR5nQt4EYBW6KwSu1ruaQ=; b=j+zYCCr2jUmcIXe06pMM3SCUhgzx81Dqd8le23j85Nqg5nQIc7/ESPwyf9pLmBdt2d PyTCHLwN1n0ZSxIw0vZroQlTDgugdmwBs9BwiQ90qvjVd+CFLHUM4qK7SeZqioGT45kh wJc2cUE11jVxliwox7ktWFWCoMo6pfouuIUeL/eoMHcZeVAHio1STv9Vtd9S8lLR6LCm XjZB1Ocr97bR+KL3qAlLyYeNd8pi6AjkQTOCg2sAcII/4OCNiUzjnueYwH0ZrTRXVoOL pgcZ0LFAg2d7foBr1E3Z4H2tWZEuPjLTfZXi7dC257RxMxtfcCZfBxqf3YidKB/6Jc+N 3CZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=U5b1KexWtA2N6iqjdE0/CksR5nQt4EYBW6KwSu1ruaQ=; b=G+6XxlPLrsmh57i9V/cS7cybPKAQUPYBm3Kl2EOB0rktsvBG31aMD1z9NS9Q470DMK EB7MSJs6dOqV38GvUtzk31YlfIoONAE0HQI8BBkBjGcv0hUMQfA3tCfpssQfLnQ75ZmF 829JAtQ24NW11mfY+V6N+Inw4WsjK0wOl5QXrGjMjJU+u6NP/ts0f3LGVzokdjVasA1t Ca4t7Z21INUs6TTw14wcOQmMO4XNCPlA03zQqyCeX/dMV/29wt1va5fYQZYgFJpzJyyU quY3P0kvNdRFOSba/2n46EjUxtHhpdIarbW9zDG/VPGNu0GvfvXZttfhtPqj37D1VxHW ypYQ== X-Gm-Message-State: AIkVDXIXoubVW6JJUQ0Q8Ec9Mbs20min4XkhNtWAtvwvh4WTYwf/v/rKKsVhMpG0g1QMqsRmSq3BLhpvDerkvw== X-Received: by 10.223.150.240 with SMTP id u103mr4028277wrb.9.1483773402432; Fri, 06 Jan 2017 23:16:42 -0800 (PST) MIME-Version: 1.0 Sender: adrian.chadd@gmail.com Received: by 10.194.51.162 with HTTP; Fri, 6 Jan 2017 23:16:41 -0800 (PST) In-Reply-To: <201701070546.v075kIGD052277@slippy.cwsent.com> References: <201701070159.v071xd46009060@repo.freebsd.org> <201701070546.v075kIGD052277@slippy.cwsent.com> From: Adrian Chadd Date: Fri, 6 Jan 2017 23:16:41 -0800 X-Google-Sender-Auth: MMvrS5Z9IbPJU23xQr78UGj5zgc Message-ID: Subject: Re: svn commit: r311578 - head/sys/net80211 To: Cy Schubert Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 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: Sat, 07 Jan 2017 07:16:44 -0000 god damnit let me go fix that. Sorry, i have to commit another file. -a On 6 January 2017 at 21:46, Cy Schubert wrote: > In message <201701070159.v071xd46009060@repo.freebsd.org>, Adrian Chadd > writes: >> Author: adrian >> Date: Sat Jan 7 01:59:39 2017 >> New Revision: 311578 >> URL: https://svnweb.freebsd.org/changeset/base/311578 >> >> Log: >> [net80211] add VHT ioctl parameters and driver capabilities >> >> * Add the VHT capability element to the driver capabilities so ifconfig >> can see if VHT is available >> * Add ioctl plumbing for enabling/disabling VHT and each of the VHT >> widths. >> >> Note: this DOES change the ABI (the driver caps ioctl struct size, sigh) >> so this will require a recompile of at least ifconfig. >> >> Modified: >> head/sys/net80211/ieee80211_ioctl.c >> head/sys/net80211/ieee80211_ioctl.h >> >> Modified: head/sys/net80211/ieee80211_ioctl.c >> ============================================================================= >> = >> --- head/sys/net80211/ieee80211_ioctl.c Sat Jan 7 01:56:10 2017 >> (r311577) >> +++ head/sys/net80211/ieee80211_ioctl.c Sat Jan 7 01:59:39 2017 >> (r311578) >> @@ -710,6 +710,7 @@ ieee80211_ioctl_getdevcaps(struct ieee80 >> dc->dc_drivercaps = ic->ic_caps; >> dc->dc_cryptocaps = ic->ic_cryptocaps; >> dc->dc_htcaps = ic->ic_htcaps; >> + dc->dc_vhtcaps = ic->ic_vhtcaps; >> ci = &dc->dc_chaninfo; >> ic->ic_getradiocaps(ic, maxchans, &ci->ic_nchans, ci->ic_chans); >> KASSERT(ci->ic_nchans <= maxchans, >> @@ -1135,6 +1136,22 @@ ieee80211_ioctl_get80211(struct ieee8021 >> if (vap->iv_flags_ht & IEEE80211_FHT_STBC_RX) >> ireq->i_val |= 2; >> break; >> + >> + /* VHT */ >> + case IEEE80211_IOC_VHTCONF: >> + ireq->i_val = 0; >> + if (vap->iv_flags_vht & IEEE80211_FVHT_VHT) >> + ireq->i_val |= 1; >> + if (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT40) >> + ireq->i_val |= 2; >> + if (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT80) >> + ireq->i_val |= 4; >> + if (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT80P80) >> + ireq->i_val |= 8; >> + if (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT160) >> + ireq->i_val |= 16; >> + break; >> + >> default: >> error = ieee80211_ioctl_getdefault(vap, ireq); >> break; >> @@ -1869,6 +1886,8 @@ findchannel(struct ieee80211com *ic, int >> /* NB: handled specially below */ >> [IEEE80211_MODE_11NA] = IEEE80211_CHAN_A, >> [IEEE80211_MODE_11NG] = IEEE80211_CHAN_G, >> + [IEEE80211_MODE_VHT_5GHZ] = IEEE80211_CHAN_A, >> + [IEEE80211_MODE_VHT_2GHZ] = IEEE80211_CHAN_G, >> }; >> u_int modeflags; >> int i; >> @@ -1893,11 +1912,27 @@ findchannel(struct ieee80211com *ic, int >> !find11gchannel(ic, i, c->ic_freq)) >> return c; >> } else { >> - /* must check HT specially */ >> + /* must check VHT specifically */ >> + if ((mode == IEEE80211_MODE_VHT_5GHZ || >> + mode == IEEE80211_MODE_VHT_2GHZ) && >> + !IEEE80211_IS_CHAN_VHT(c)) >> + continue; >> + >> + /* >> + * Must check HT specially - only match on HT, >> + * not HT+VHT channels >> + */ >> if ((mode == IEEE80211_MODE_11NA || >> mode == IEEE80211_MODE_11NG) && >> !IEEE80211_IS_CHAN_HT(c)) >> continue; >> + >> + if ((mode == IEEE80211_MODE_11NA || >> + mode == IEEE80211_MODE_11NG) && >> + IEEE80211_IS_CHAN_VHT(c)) >> + continue; >> + >> + /* Check that the modeflags above match */ >> if ((c->ic_flags & modeflags) == modeflags) >> return c; >> } >> @@ -2021,6 +2056,7 @@ ieee80211_ioctl_setchannel(struct ieee80 >> if (c == NULL) >> return EINVAL; >> } >> + >> /* >> * Fine tune channel selection based on desired mode: >> * if 11b is requested, find the 11b version of any >> @@ -2031,6 +2067,9 @@ ieee80211_ioctl_setchannel(struct ieee80 >> * 11a channel returned, >> * if 11ng is requested, find the ht version of any >> * 11g channel returned, >> + * if 11ac is requested, find the 11ac version >> + * of any 11a/11na channel returned, >> + * (TBD) 11acg (2GHz VHT) >> * otherwise we should be ok with what we've got. >> */ >> switch (vap->iv_des_mode) { >> @@ -2067,6 +2106,17 @@ ieee80211_ioctl_setchannel(struct ieee80 >> c = c2; >> } >> break; >> + case IEEE80211_MODE_VHT_2GHZ: >> + printf("%s: TBD\n", __func__); >> + break; >> + case IEEE80211_MODE_VHT_5GHZ: >> + if (IEEE80211_IS_CHAN_A(c)) { >> + c2 = findchannel(ic, ireq->i_val, >> + IEEE80211_MODE_VHT_5GHZ); >> + if (c2 != NULL) >> + c = c2; >> + } >> + break; >> default: /* NB: no static turboG */ >> break; >> } >> @@ -2092,6 +2142,7 @@ ieee80211_ioctl_setcurchan(struct ieee80 >> error = copyin(ireq->i_data, &chan, sizeof(chan)); >> if (error != 0) >> return error; >> + >> /* XXX 0xffff overflows 16-bit signed */ >> if (chan.ic_freq == 0 || chan.ic_freq == IEEE80211_CHAN_ANY) { >> c = IEEE80211_CHAN_ANYC; >> @@ -3321,6 +3372,37 @@ ieee80211_ioctl_set80211(struct ieee8021 >> if (isvapht(vap)) >> error = ERESTART; >> break; >> + >> + /* VHT */ >> + case IEEE80211_IOC_VHTCONF: >> + if (ireq->i_val & 1) >> + ieee80211_syncflag_vht(vap, IEEE80211_FVHT_VHT); >> + else >> + ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_VHT); >> + >> + if (ireq->i_val & 2) >> + ieee80211_syncflag_vht(vap, IEEE80211_FVHT_USEVHT40); >> + else >> + ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT40); >> + >> + if (ireq->i_val & 4) >> + ieee80211_syncflag_vht(vap, IEEE80211_FVHT_USEVHT80); >> + else >> + ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT80); >> + >> + if (ireq->i_val & 8) >> + ieee80211_syncflag_vht(vap, IEEE80211_FVHT_USEVHT80P80) >> ; >> + else >> + ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT80P80 >> ); >> + >> + if (ireq->i_val & 16) >> + ieee80211_syncflag_vht(vap, IEEE80211_FVHT_USEVHT160); >> + else >> + ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT160); > > Buildkernel is broken. Should these calls be to ieee80211_syncflag_ht > instead or is there a missing new function? > >> + >> + error = ENETRESET; >> + break; >> + >> default: >> error = ieee80211_ioctl_setdefault(vap, ireq); >> break; >> >> Modified: head/sys/net80211/ieee80211_ioctl.h >> ============================================================================= >> = >> --- head/sys/net80211/ieee80211_ioctl.h Sat Jan 7 01:56:10 2017 >> (r311577) >> +++ head/sys/net80211/ieee80211_ioctl.h Sat Jan 7 01:59:39 2017 >> (r311578) >> @@ -556,6 +556,7 @@ struct ieee80211_devcaps_req { >> uint32_t dc_drivercaps; /* general driver caps */ >> uint32_t dc_cryptocaps; /* hardware crypto support */ >> uint32_t dc_htcaps; /* HT/802.11n support */ >> + uint32_t dc_vhtcaps; /* VHT/802.11ac capabilities */ >> struct ieee80211req_chaninfo dc_chaninfo; >> }; >> #define IEEE80211_DEVCAPS_SIZE(_nchan) \ >> @@ -704,6 +705,9 @@ struct ieee80211req { >> #define IEEE80211_IOC_STBC 113 /* STBC Tx/RX (on, off) >> */ >> #define IEEE80211_IOC_LDPC 114 /* LDPC Tx/RX (on, off) >> */ >> >> +/* VHT */ >> +#define IEEE80211_IOC_VHTCONF 130 /* VHT config (off, on; >> widths) */ >> + >> #define IEEE80211_IOC_MESH_ID 170 /* mesh identifier */ >> #define IEEE80211_IOC_MESH_AP 171 /* accepting peerings * >> / >> #define IEEE80211_IOC_MESH_FWRD 172 /* forward frames */ >> >> > > > -- > Cheers, > Cy Schubert > FreeBSD UNIX: Web: http://www.FreeBSD.org > > The need of the many outweighs the greed of the few. > >