History log of /freebsd-current/sbin/ifconfig/ifieee80211.c
Revision Date Author Comments
# 68b9eb91 20-Apr-2024 Gordon Bergling <gbe@FreeBSD.org>

ifconfig(8): Fix two typos in source code comments

- s/the the/the/

MFC after: 3 days


# e85eb4c8 02-Dec-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

net80211: adjust more VHT structures/fields

Replace ieee80211_ie_vhtcap with ieee80211_vht_cap and
ieee80211_ie_vht_operation with ieee80211_vht_operation.
The "ie" version has the two bytes type/length at the beginning which
we did not actually use as such (the one place doing did just as unused
extra work).

Using the non-"ie" versions allows us to re-use them on shared code.
Using an enum helps us to not accidentally get unsuppored or unhandled
values tough we cannot use it in the struct as we need to ensure the
field width.

ieee80211_vht_operation is guarded by _KERNEL/WANT_NET80211. While the
header is supposed to be exported to user land historically, software
such as wpa bring their own structure definitions. For in-tree usage
it is only ifconfig which really cares (at least for now).

Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: adrian (earlier), cc
Differential Revision: https://reviews.freebsd.org/D42901


# b3e76948 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: two-line .h pattern

Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/


# f19ae363 19-Jun-2023 John Baldwin <jhb@FreeBSD.org>

ifconfig: Pacify a sign comparison warning in regdomain_sort.

Both ic_flags values are unsigned (uint32_t), so cast them to a signed
int to generate a signed result. Both ic_req values are also
unsigned, but since they are uint16_t, they are implicitly promited to
int before the subtraction.

Reported by: GCC -Wsign-compare
Reviewed by: emaste
Differential Revision: https://reviews.freebsd.org/D40610


# a3b11387 19-Jun-2023 John Baldwin <jhb@FreeBSD.org>

ifconfig: Consistently use uint32_t for wireless channel flags.

Reported by: GCC -Wsign-compare
Reviewed by: emaste
Differential Revision: https://reviews.freebsd.org/D40609


# 0fcc603a 16-Jun-2023 Alexander V. Chernikov <melifaro@FreeBSD.org>

ifconfig: fix armv6 build


# a3930cd4 14-Jun-2023 Alexander V. Chernikov <melifaro@FreeBSD.org>

ifconfig: use default (more rigid) WARNS level.

It helps catch more errors at compile time.

Reviewed by: kp
Differential Revision: https://reviews.freebsd.org/D40536
MFC after: 2 weeks


# d6106422 14-Jun-2023 Alexander V. Chernikov <melifaro@FreeBSD.org>

ifconfig: fix comparison in printmimo().

Differential Revision: https://reviews.freebsd.org/D40301
MFC after: 2 weeks


# 85e0016a 13-Jun-2023 Alexander V. Chernikov <melifaro@FreeBSD.org>

ifconfig: remove global 'name' variable.

Consistenly use newly-added 'ctx->ifname' as the name of the current
target interface.

Reviewed By: kp
Differential Revision: https://reviews.freebsd.org/D40438
MFC after: 2 weeks


# 4106282e 13-Jun-2023 Alexander V. Chernikov <melifaro@FreeBSD.org>

ifconfig: remove global 'printifname' variable.

This variable was used to print the created interface name in the
atexit(3) handler. The interface name was calculated in the
ifclonecreate() by matching old & new names.

This change alter the implementation the following way:
1) the function responsible for the interface creation (ifcreate_ioctl)
updates all necessary state internally. This removes the need for the
name manipulation hack in wlan_create().
2) As atexit(3) handler does not accept any parameters, explicitly store
the name to print in the ifname_to_print variable read by the atexit(3)
handler.

Reviewed By: kp
Differential Revision: https://reviews.freebsd.org/D40431
MFC after: 2 weeks


# c6885dbd 13-Jun-2023 Alexander V. Chernikov <melifaro@FreeBSD.org>

ifconfig: eliminate global 'verbose' and 'printkey' variables

Reviewed By: kp
Differential Revision: https://reviews.freebsd.org/D40427
MFC after: 2 weeks


# 74b42611 13-Jun-2023 Alexander V. Chernikov <melifaro@FreeBSD.org>

ifconfig: add if_ctx argument to the generic and ifclone callbacks.

This is the continuation of the ifconfig cleanup work. This change is
a pre-requsite for the next changes removing some of the global variables.
It will also help in implementing functionality via Netlink instead of ioctl.
No functional changes intended.
* vxlan_cb() was removed as it contained no code
* ioctl_ifcreate() was renamed to ifcreate_ioctl() to follow the other
netlink/ioctl function naming. Netlink and ioctl provide _different_
interfaces and it's not possible to have a unified interface object
that can be filled by either netlink or ioctl implementations. With that
in mind, I'm leaning more to the function_<nl|ioctl> postfix pattern,
than doing ioctl_ or netlink_ prefix.

Reviewed By: kp
Differential Revision: https://reviews.freebsd.org/D40426
MFC after: 2 weeks


# 0c2beef7 01-Jun-2023 Alexander V. Chernikov <melifaro@FreeBSD.org>

ifconfig: fix warnings #2

Fix all -Wparameter-unused and cast alignment

Differential Revision: https://reviews.freebsd.org/D40303
MFC after: 2 weeks


# 6e3a9d7f 23-May-2023 Alexander V. Chernikov <melifaro@FreeBSD.org>

ifconfig: introduce `ifconfig_context` to store current global state.

The structure consists of all current context - arguments,
open sockets, current family and so on.

Pass this structure as a first argument to most of the af_ menthods.
This allows to propagate and update shared data without using
global variables.

The diff is pretty large, but de-facto mechanical. All changes
except the structure setup in ifconfig[_netlink].c are one-line
mechanical changes.

Reviewed by: kp
Differential Revision: https://reviews.freebsd.org/D40239
MFC after: 2 weeks


# 44cd85d4 23-May-2023 Alexander V. Chernikov <melifaro@FreeBSD.org>

ifconfig: cleanup warnings #1

Cleanup compiler warnings in preparation to set Wextra and remove WARNS?=2

Differential Revision: https://reviews.freebsd.org/D40238
MFC after: 2 weeks


# e091be41 21-Mar-2023 Bjoern A. Zeeb <bz@FreeBSD.org>

ifconfig: ifieee80211: print bssid name

In certain setups (e.g., autonomous APs) it is extremly helpful to have
a way to map the BSSIDs to names for both normal status output as well
as the scan list. This often allows a quicker overview than remembering
(or manually looking up) BSSIDs.
Call ether_ntohost() on the bssid and consult /etc/ethers
and print "(name)" after the bssid for the status output and "(name)"
at the end of the line after the IE list.

MFC after: 10 days
Reviewed by: adrian, cy
Differential Revision: https://reviews.freebsd.org/D39192


# 2f2cf766 03-Sep-2022 Gordon Bergling <gbe@FreeBSD.org>

ifconfig(8): Fix a typo in source code comment

- s/overriden/overridden/

MFC after: 3 days


# 5ba4c8de 23-Mar-2021 Bjoern A. Zeeb <bz@FreeBSD.org>

ifconfig: 80211, add line break after key info

Beauty correction for verbose mode or in case we print multiple key
information to not continue with the next options directly after
as we did so far, e.g.:
AES-CCM 2:128-bit
AES-CCM 3:128-bit powersavemode ...

Sponsored-by: The FreeBSD Foundation
MFC-after: 2 weeks
Reviewed-by: adrian
Differential Revision: https://reviews.freebsd.org/D29393


# 2803fa47 28-Feb-2021 Ryan Moeller <freqlabs@FreeBSD.org>

sbin/ifconfig: Get media status with libifconfig

Code deduplication.

Reviewed by: kp
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D29030


# 05952067 26-Nov-2020 Hans Petter Selasky <hselasky@FreeBSD.org>

Ensure consistent error messages from ifconfig(8).

If multiple threads are invoking "ifconfig XXX create" a race may occur
which can lead to two different error messages for the same error.

a) ifconfig: SIOCIFCREATE2: File exists
b) ifconfig: interface XXX already exists

This patch ensures ifconfig prints the same error code
for the same case.

Reviewed by: imp@ and kib@
Differential Revision: https://reviews.freebsd.org/D27380
MFC after: 1 week
Sponsored by: Mellanox Technologies // NVIDIA Networking


# c7cffd65 21-Oct-2020 Alexander V. Chernikov <melifaro@FreeBSD.org>

Add support for stacked VLANs (IEEE 802.1ad, AKA Q-in-Q).

802.1ad interfaces are created with ifconfig using the "vlanproto" parameter.
Eg., the following creates a 802.1Q VLAN (id #42) over a 802.1ad S-VLAN
(id #5) over a physical Ethernet interface (em0).

ifconfig vlan5 create vlandev em0 vlan 5 vlanproto 802.1ad up
ifconfig vlan42 create vlandev vlan5 vlan 42 inet 10.5.42.1/24

VLAN_MTU, VLAN_HWCSUM and VLAN_TSO capabilities should be properly
supported. VLAN_HWTAGGING is only partially supported, as there is
currently no IFCAP_VLAN_* denoting the possibility to set the VLAN
EtherType to anything else than 0x8100 (802.1ad uses 0x88A8).

Submitted by: Olivier Piras
Sponsored by: RG Nets
Differential Revision: https://reviews.freebsd.org/D26436


# 04e7bb08 17-Oct-2020 Bjoern A. Zeeb <bz@FreeBSD.org>

net80211: update for (more) VHT160 support

Implement two macros IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160MHZ()
and its 80+80 counter part to check in vhtcaps for appropriate
levels of support and use the macros throughout the code.

Add vht160_chan_ranges/is_vht160_valid_freq and handle analogue
to vht80 in various parts of the code.

Add ieee80211_add_channel_cbw() which also takes the CBW flag
fields and make the former ieee80211_add_channel() a wrapper to it.
With the CBW flags we can add HT/VHT channels passing them to
getflags() for the 2/5ghz functions.

In ifconfig(8) add the regdomain_addchans() support for VHT160
and VHT80P80.

With this (+ regdoain.xml updates) VHT160 channels can be
configured, listed, and pass regdomain where appropriate.

Tested with: iwlwifi
Reviewed by: adrian
MFC after: 10 days
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D26712


# fa8bc7ed 07-Oct-2020 Bjoern A. Zeeb <bz@FreeBSD.org>

80211: ifconfig replace MS() with _IEEE80211_MASKSHIFT()

As we did in the kernel in r366112 replace the MS() macro with the version(s)
added to the kernel: _IEEE80211_MASKSHIFT(). Also provide its counter part.
This will later allow use to use other macros defined in net80211 headers
here in ifconfig.

MFC after: 1 week
Sponsored by: The FreeBSD Foundation


# 1e375f3a 07-Oct-2020 Bjoern A. Zeeb <bz@FreeBSD.org>

80211: non-functional changes

Sort a few VHT160 and 80+80 lines, update some comments, and remove
a superfluous ','.

No functional changes intended.

MFC after: 1 week
Sponsored by: The FreeBSD Foundation


# 4b1c2487 17-Aug-2020 Bjoern A. Zeeb <bz@FreeBSD.org>

80211: consistently order 160 and 80+80

For flags and checks the order goes VHT160 and then VHT80P80 unless
checks are in reverse order ("more comes first") in which case we
deal with VHT80P80 first.
The one reverse order to pick out is where we check channel
prefernences. While it may seem that VHT160 is better, finding
two "free" channels (VHT 80+80) is more likely so we do prefer that.

While dealing with VHT160 and VHT80P80 add extra clauses previously
missing or marked TODO in a few places.

Reviewed by: adrian, gnn
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC (d/b/a "Netgate")
Differential Revision: https://reviews.freebsd.org/D26002


# fd6eb8fe 16-Aug-2020 Bjoern A. Zeeb <bz@FreeBSD.org>

80211: consistently spell 80P80

The standard uses 80+80 and 80p80 but nowhere 80_80.
Switch the latter to 80P80 for all the macros and comments refering
to #defined flags which I could find.
The only place we leave as 80p80 is the ifconfig command line arguments
as we spell them all in lower case.
Ideally we would use 80+80 for any interactions with the user and
80P80 for anything internal but let us not confuse parsers and
hence avoid the '+' in either case.

Reviewed by: adrian, gnn
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC (d/b/a "Netgate")
Differential Revision: https://reviews.freebsd.org/D26001


# 96811be2 16-Aug-2020 Bjoern A. Zeeb <bz@FreeBSD.org>

net80211 / ifconfig: cleanup the use of IEEE80211_FVHT_USEVHT*

Rather then using magic numbers duplicate IEEE80211_FVHT_VHT* in
ifconfig (cleanup of these and other flags used and not exposed by
net80211 should happen later) and use those.
In the kernel this simplifies one ioctl path (the other one currently
relies on individual bit flags being passed in).
We also re-order the 80P80 and 160 flag for 160 to come before 80+80
and more clearly leave the flags as TODO in one of the 160/80+80 cases.

Reviewed by: adrian
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC (d/b/a "Netgate")
Differential Revision: https://reviews.freebsd.org/D26000


# 7d1d4407 06-Aug-2020 Bjoern A. Zeeb <bz@FreeBSD.org>

net80211/ifconfig: print hardware device name for wlan interfaces

Add IEEE80211_IOC_IC_NAME to query the ic_name field and in ifconfig
to print the parent interface again. This functionality was lost
around r287197. It helps in case of multiple wlan interfaces and
multiple underlying hardware devices to keep track which wlan
interface belongs to which physical device.

Sponsored by: Rubicon Communications, LLC (d/b/a "Netgate")
Reviewed by: adrian, Idwer Vollering
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D25832


# c11c97cc 15-Jun-2020 Adrian Chadd <adrian@FreeBSD.org>

[ifconfig] add UAPSD and LPDC flags

* Add UAPSD and LDPC flags
* expand the FLAGS section; it's kinda grown since I started hacking
on net80211..


# 4cd568ba 15-Jun-2020 Adrian Chadd <adrian@FreeBSD.org>

[net80211] Add uapsd option to ifconfig

Add an enable/disable option for controlling uapsd. I'm not yet controlling
the individual AC configs or the service period.


# 2a0f9d54 10-Feb-2019 Andriy Voskoboinyk <avos@FreeBSD.org>

ifconfig(8): display 802.11n rates correctly for 'roam:rate' parameter

MFC after: 5 days


# b90dad35 02-Feb-2019 Andriy Voskoboinyk <avos@FreeBSD.org>

ifconfig(8): actually, non-11n rates should be divided by 2...

MFC after: 1 week
MFC with: 343698


# 35a5128d 02-Feb-2019 Andriy Voskoboinyk <avos@FreeBSD.org>

ifconfig(8): display management / multicast wlan(4) rates properly

For 11n / 11ac we are still using non-11n rates for management and
multicast traffic by default; check 'MCS rate' bit to determine how
to print them correctly.

PR: 161035
MFC after: 1 week


# 22cde055 02-Feb-2019 Andriy Voskoboinyk <avos@FreeBSD.org>

ifconfig(8): interpret VHT rates correctly for 'list roam / txparam' options

They are represented via MCS rate index, not as a 'speed in MBps' * 2.

MFC after: 5 days


# 938ed5da 23-Jan-2019 Andriy Voskoboinyk <avos@FreeBSD.org>

ifconfig: drop unused macros from ifieee80211.c

MFC after: 5 days


# f280f93d 19-Jan-2019 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

[ifconfig] Print more WPS attributes in verbose "list scan" output

- Move WPS related defines to dedicated file
- Add handlers for more WPS attributes

PR: 217317
Submitted by: J.R. Oldroyd <fbsd@opal.com>
MFC after: 3 weeks


# 1284f5f4 11-Aug-2018 Sevan Janiyan <sevan@FreeBSD.org>

IEEE!

Pointy hat: myself


# f3897785 11-Aug-2018 Sevan Janiyan <sevan@FreeBSD.org>

Drop the ternary operator for calculating ssid display length in list_scan().
Regardless if a verbose scan is required or not, we'd still want to display the
full SSID name by default so use the IEE80211_NWID_LEN constant to set the
value to use instead.

Tested on rene@'s laptop.
Reviewed by: kp
Sponsored by: Essen Hackathon
Differential Revision: https://reviews.freebsd.org/D16566


# af746614 27-Jun-2018 Kyle Evans <kevans@FreeBSD.org>

ifconfig(8): Attempt to render non-printable sequences w/ UTF-8 Environment

Currently ifconfig(8) only prints the hex representation of ssid names
with non-ASCII characters. Many modern terminals are able to properly render
non-ASCII characters. This change checks if the terminal charmap is UTF-8,
and if so, will render the characters, rather than the hex value.

This behavior is circumvented by running ifconfig(8) in a non-UTF8 locale;
e.g. C or POSIX.

It was pointed out by kp@ during the review that APs have the option to
broadcast whether their SSIDs may be interpreted as UTF-8. Ideally, we would
honor this and only attempt this behavior if it's so-broadcasted by the AP.

However, a sample survey showed that hostapd will advertise this if
indicated in config but it doesn't seem to be so common in the AP market, so
this would be effectively useless as we'll rarely know if the SSID should be
renderable as UTF-8.

Despite this, it was decided to be OK with this anyways- there's a
straightforward path to doing it the right way based on advertisement by AP
if we need to go that route, and one can revert to old behavior easily
enough at runtime if we get it wrong.

Submitted by: Farhan Khan <khanzf@gmail.com>
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D15922


# 29c29cbb 16-Mar-2018 Kirill Ponomarev <krion@FreeBSD.org>

Extend SSID maximum string length to 32 chars to support longer SSID
names.

Approved by: adrian
Differential Revision: https://reviews.freebsd.org/D14710


# 1de7b4b8 27-Nov-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

various: general adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.

No functional change intended.


# 8d98753e 31-Mar-2017 Adrian Chadd <adrian@FreeBSD.org>

[ifconfig] add some comments around missing net80211 VHT configuration.

VHT STBC, A-MPDU density and A-MPDU size configuration parameters are
different when doing VHT.


# 843635d3 23-Feb-2017 Adrian Chadd <adrian@FreeBSD.org>

[ifconfig] handle illegal WPS frames

Some APs broadcast WPS IE frames with totally broken data. Ifconfig's printwpsie()
loops through WPS frames printing the attributes out; if the frame's data is bad,
printwpsie() can end up looking at out-of-bounds addresses causing ifconfig to
bus error.

Thanks to Takashi Inoue at Nihon U for his efforts in debugging this.

PR: bin/217312
Submitted by: fbsd@opal.com
MFC after: 1 week


# 468c50de 19-Feb-2017 Adrian Chadd <adrian@FreeBSD.org>

[ifconfig] fix a memory leak.

Submitted by: Tom Rix <trix@juniper.net>
Differential Revision: https://reviews.freebsd.org/D9654


# 617f8b10 19-Feb-2017 Adrian Chadd <adrian@FreeBSD.org>

[net80211] RX parameter shuffle in net80211 in preparation for 4x4 NICs and 160MHz channels.

* Migrate the rx_params stuff out from ieee80211_freebsd.h where it doesn't belong -
this isn't freebsd specific anymore.

* Don't use a hard-coded number of chains in the ioctl header; now we can shuffle
MAX_CHAINS around so it can be used in the right spot.

* Extend the signal/noisefloor levels in the mimo stats struct to userland to include
the signal and noisefloor levels for each 20MHz slice of a 160MHz channel.

* Bump the number of EVM pilots in preparation for 4x4 and 160MHz channels.

Tested:

* ath(4), STA mode
* iwn(4), STA mode
* local ath10k port, STA mode

TODO:

* 11ax chips will come with 5GHz 8x8 hardware for lots of MU-MIMO - I'll re-bump it
at that point.

Note:

* This breaks the driver and ifconfig ABI; please recompile the kernel,
ifconfig and wpa_supplicant/hostapd.


# 9bb564c8 04-Feb-2017 Adrian Chadd <adrian@FreeBSD.org>

[net80211] fix quiet_duration parameter to match what is provided in the manpage.


# c5bba9da 21-Jan-2017 Andriy Voskoboinyk <avos@FreeBSD.org>

net80211: allow to configure LDPC support

Tested with RTL8821AU, STA mode (Tx support only)

Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D9268


# c1ae3717 20-Jan-2017 Andriy Voskoboinyk <avos@FreeBSD.org>

ifconfig(8): fix '-stbc' parameter name.

MFC after: 5 days


# e9bb7f9a 06-Jan-2017 Adrian Chadd <adrian@FreeBSD.org>

[ifconfig] add initial VHT (802.11ac) configuration and channel support to ifconfig.

This is very preliminary and mostly enough for me (with other patches)
to work on VHT support.

It adds:

* VHT20, VHT40 and VHT80 regulatory/band awareness
* VHT20, VHT40 and VHT80 channel configuration / population
* Parses vht channel specifications (eg ifconfig wlan0 create wlandev athp0 wlanmode monitor channel 36:vht/80)
* Configuration of VHT, VHT40, VHT80, VHT80+80, VHT160 channel
width (IEEE80211_FVHT_VHT* flags in net80211)

TODO:

* No VHT80+80 or VHT160 channels yet - I don't yet have hardware, and I'm
not yet sure how to support/populate VHT80+80 channels.
* No, I won't update the manpage until this is "more done", lest someone
tries using vht and gets upset with me.
* No, I won't commit the regulatory database I'm testing with, so you'll
just end up with no VHT channels ever populated. Which is good, as there
isn't an 11ac driver in-tree yet to try it with.


# bdad1bce 14-Dec-2016 Andriy Voskoboinyk <avos@FreeBSD.org>

ifconfig: do not truncate SSID in verbose mode.

Fix 32-character SSID abbreviation for 'ifconfig -v wlan0 scan' command.

PR: 215301
Submitted by: <ms-freebsd-bugzilla@stoffnet.at>
MFC after: 4 days


# 53414bce 18-Nov-2016 Adrian Chadd <adrian@FreeBSD.org>

[ifconfig] remove now duplicate IEEE80211_C_BITS definition; it's now in _ieee80211.h .

Reviewed by: avos
Differential Revision: https://reviews.freebsd.org/D8553


# 93d6afd8 01-Nov-2016 Gavin Atkinson <gavin@FreeBSD.org>

Remove MATCHOUI macro, unused since r197980.


# 0bfc75bf 07-Oct-2016 Adrian Chadd <adrian@FreeBSD.org>

[ifconfig] correctly display RSSI.


# 7951c6aa 08-Jun-2016 Andriy Voskoboinyk <avos@FreeBSD.org>

ifconfig: fix wlan creation when unit number is not provided
(was broken after r300738).

Reported by: Yoshihiro Ota <ota@j.email.ne.jp>, adrian
Tested by: Yoshihiro Ota <ota@j.email.ne.jp>


# b628bdcc 26-May-2016 Andriy Voskoboinyk <avos@FreeBSD.org>

ifconfig: set by default FCC regulatory domain for wireless interfaces.

Change default regulatory domain from DEBUG (no limitations;
exposes all device channels) to FCC; as a result, newly created wireless
interface with default settings will have less chances to violate
country-specific regulations.

This change will not affect drivers with pre-initialized regdomain
structure (currentry ath(4) and mwl(4)); in that case, the default
channel list must correspond to the default regdomain / country setting.

You can switch to another regdomain / country via corresponding
ifconfig(8) options; the driver must implement ic_getradiocaps()
method to restore full channel list.

Full country / regdomain list may be obtained via
'ifconfig <iface> list countries' command.

Example: change country to Germany:
ifconfig wlan0 down # all wlans on the device must be down
ifconfig wlan0 country DE
ifconfig wlan0 up
# wpa_supplicant(8), dhclient(8) etc

At the creation time:
ifconfig wlan0 create wlandev wpi0 country DE

To make changes permanent add the following line to the rc.conf(5):
create_args_wlan0="country DE"

Tested with
- Intel 3945BG (wpi(4)).
- WUSB54GC (rum(4)).

Reviewed by: adrian
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D6228


# c98907a4 16-May-2016 Don Lewis <truckman@FreeBSD.org>

Add an assertion to catch a potential underflow in an array index
calculation, though this should not happen in the current code.

Reported by: Coverity
CID: 1008486
MFC after: 3 weeks


# c8711749 15-May-2016 Don Lewis <truckman@FreeBSD.org>

Use strlcpy() instead of strncpy() when copying ifname to ensure
that it is NUL terminated. Additional NUL padding is not required
for short names.

Use sizeof(destination) in a few places instead of IFNAMSIZ.

Cast afp->af_ridreq and afp->af_addreq to make the intent of
the code more obvious.

Reported by: Coverity
CID: 1009628, 1009630, 1009631, 1009632, 1009633, 1009635, 1009638
CID: 1009639, 1009640, 1009641, 1009642, 1009643, 1009644, 1009645
CID: 1009646, 1009647, 1010049, 1010050, 1010051, 1010052, 1010053
CID: 1010054, 1011293, 1011294, 1011295, 1011296, 1011297, 1011298
CID: 1011299, 1305821, 1351720, 1351721
MFC after: 1 week


# db930544 09-May-2016 Andriy Voskoboinyk <avos@FreeBSD.org>

ifconfig: fix check for 40 MHz channels while applying country/regdomain.

Do not use 20 MHz channel list while checking 40 MHz channels;
it may be different. Just use the corresponding list instead.

Tested by: Masachika ISHIZUKA <ish@amail.plala.or.jp>

PR: 209328


# 6605a047 25-Apr-2016 Adrian Chadd <adrian@FreeBSD.org>

[ifconfig] add STBC TX/RX configuration

This adds the ability to view and configure the STBC parameter for
both transmit and receive.

Whilst here, fix a typo for AMSDU.

TODO:

* manpage update


# de497205 24-Apr-2016 Pedro F. Giffuni <pfg@FreeBSD.org>

ifconfig: prevent some improbable signed integer overflows.

ic_nchans, from struct:ieee80211req_chaninfo, is an unsigned int.
Use an unsigned index to prevent overflowing the index.

Adopt unsigned integers in other cases where it is useful
to be aware of the unsigned quantities and there is no
risk of the values being negative.

MFC after: 1 week


# 49d1897d 18-Apr-2016 Adrian Chadd <adrian@FreeBSD.org>

Add VHT power envelope parsing to ifconfig.


# 56fe6744 17-Mar-2016 Adrian Chadd <adrian@FreeBSD.org>

Add parsing for AP channel report IE.

Eg:

TP-LINK_D579 60:e3:27:e1:d5:79 10 54M -72:-95 100 EP SSID<TP-LINK_D579> RATES<B2,B4,B11,B22,18,36,72,108>
DSPARMS<10> XRATES<12,24,48,96> COUNTRY<US 1-11,20> APCHANREP<class 32, chan:[1,2,3,4,5,6,7]> APCHANREP<class 33, chan:[5,6,7,8,9,10,11]>
TIM<050400010000> ERP<0x4> HTCAP<cap 0x106e param 0x17 mcsset[0-15,32] extcap 0x0 txbf 0x0 antenna 0x0> HTINFO<ctl 10, 7,0,0,0 basicmcs[]>
???<4a0e14000a002c01c800140005001900> RSN<v1 mc:AES-CCMP uc:AES-CCMP km:8021X-PSK>
WME<qosinfo 0x0 BE[aifsn 3 cwmin 4 cwmax 10 txop 0] BK[aifsn 7 cwmin 4 cwmax 10 txop 0] VO[aifsn 2 cwmin 3 cwmax 4 txop 94] VI[aifsn 2 cwmin 2 cwmax 3 txop 47]>
BSSLOAD<sta count 0, chan load 11, aac 18> VEN<dd07000c4300000000>


# e3b60083 17-Mar-2016 Adrian Chadd <adrian@FreeBSD.org>

Remove duplicate LE_READ_4() definition.

Tested:

* typed 'make', seemed to work.


# f6759842 17-Mar-2016 Adrian Chadd <adrian@FreeBSD.org>

Decode VHTCAP, VHTINFO and BSSLOAD.

BSSLOAD is based on work from Idwer Vollering.

Obtained from: Idwer Vollering <vidwer@gmail.com> (bssload)


# 1890c906 16-Mar-2016 Adrian Chadd <adrian@FreeBSD.org>

Display the VHT IE names.

This doesn't decode the IEs just yet.

Tested:

* Archer c2 AP:

TP-LINK_D579_5G 60:e3:27:e1:d5:78 44 54M 26:0 100 EP SSID<TP-LINK_D579_5G> RATES<B12,18,B24,36,B48,72,96,108> DSPARMS<44> COUNTRY<US 36-48,20> TIM<050400010000> HTCAP<cap 0x6e param 0x16 mcsset[0-7,32] extcap 0x0 txbf 0x0 antenna 0x0> HTINFO<ctl 44, 5,0,0,0 basicmcs[]> VHTCAP<bf0c2000c031feff2401feff2401> VHTOPMODE<c005012a00feff> RSN<v1 mc:AES-CCMP uc:AES-CCMP km:8021X-PSK> WME<qosinfo 0x0 BE[aifsn 3 cwmin 4 cwmax 10 txop 0] BK[aifsn 7 cwmin 4 cwmax 10 txop 0] VO[aifsn 2 cwmin 3 cwmax 4 txop 94] VI[aifsn 2 cwmin 2 cwmax 3 txop 47]> BSSLOAD<0b05000001127a> VEN<dd07000c4300000000>


# 523210fb 13-Mar-2016 Adrian Chadd <adrian@FreeBSD.org>

[net80211] handle unlisted information elements.

This displays the IE names in ifconfig but it doesn't yet decode things.

Submitted by: Idwer Vollering <vidwer@gmail.com>
Differential Revision: https://reviews.freebsd.org/D3782


# d01cb677 29-Nov-2015 Adrian Chadd <adrian@FreeBSD.org>

Convert ifconfig to use lib80211.

* remove regdomain.[ch] - it's now part of lib80211.
* convert ifieee80211.c to use the ioctl routines in lib80211 and
implement the "error? exit" wrapper behaviour the callers expect.


# db4eb9fe 25-Nov-2015 Adrian Chadd <adrian@FreeBSD.org>

[ifconfig] handle IBSS mediatype correctly.

Right now net80211 is configured as type IBSS but then treats it
as mediatype ADHOC. This doesn't change that; it just correctly handles
being given a mediatype of IBSS.


# db615b2b 06-Nov-2015 Andriy Voskoboinyk <avos@FreeBSD.org>

ifconfig: fix padding for '<ifname> scan' command output
(S:N and beacon interval fields).

Approved by: adrian (mentor)
Differential Revision: https://reviews.freebsd.org/D4085


# abd71050 27-Sep-2015 Enji Cooper <ngie@FreeBSD.org>

Replace N #defines with nitems to simplify ifconfig code slightly

MFC after: 1 week


# 8904a305 07-Feb-2013 Monthadar Al Jaberi <monthadar@FreeBSD.org>

Mark a mesh path to a mesh gate with a 'G'.

Approved by: adrian (mentor)


# 35fc27d2 01-May-2012 Monthadar Al Jaberi <monthadar@FreeBSD.org>

* Modified ifconfig to show the IEEE80211_MESHRT_FLAGS_DISCOVER flag with a 'D';

Approved by: adrian


# e6e06eb8 01-May-2012 Monthadar Al Jaberi <monthadar@FreeBSD.org>

* Added new command to ifconfig to activate Mesh Gate Announcement called
meshgate with corresponding explanation;

Approved by: adrian


# 4b25863e 23-Mar-2012 Bernhard Schmidt <bschmidt@FreeBSD.org>

Also fix the parameter usage in set80211meshpeering().

Submitted by: Monthadar Al Jaberi
MFC after: 1 week
X-MFC after: r233328


# bde65615 22-Mar-2012 Adrian Chadd <adrian@FreeBSD.org>

Fix an incorrect parameter usage here.

Submitted by: monthadar@gmail.com


# 83d26a13 09-Jan-2012 Eitan Adler <eadler@FreeBSD.org>

Fix warning when compiling with gcc46:
error: variable 'firstkey' set but not used

Approved by: dim
MFC after: 3 days


# 4b85a12f 07-Jan-2012 Ulrich Spörlein <uqs@FreeBSD.org>

Spelling fixes for sbin/


# dd21aaf8 08-Nov-2011 Adrian Chadd <adrian@FreeBSD.org>

Add quiet time element configuration support to ifconfig.

This allows a hostap to specify to a set of stations that they
should not transmit for a certain period of time after each
beacon interval has expired. This is used when searching for
radar pulses or general interference.

Submitted by: Himali Patel <himali.patel@sibridgetech.com>
Sponsored by: Sibridge Technologies


# 2168aaa5 19-Jul-2011 Adrian Chadd <adrian@FreeBSD.org>

This patch removes a check in ifconfig which disables HT/40 channels
on frequency bands with DFS. All Atheros chipsets >= AR9001 support
radar event detection on HT40 extension channels.

This should be a chipset specific item rather than enforced in the
regulatory domain database.

In addition, it's irrelevant for STA mode, as the radar detection is
done by the access point, not the STA.

Approved by: re (kib)


# 2ad10b36 19-Jul-2011 Adrian Chadd <adrian@FreeBSD.org>

This patch enables listing DFS related flags when 'ifconfig -v wlanX
list channel' is run. The following new options are introduced:

* D: channel requires DFS
* R: channel has a radar event
* I: channel has detected inteference
* C: the CAC period has completed on a channel that requires it (ie,
DFS + PASSIVE.)

It's relevant for developing, debugging and using the DFS and
interference options.

Approved by: re (bz)


# 88e428c6 21-Apr-2011 Adrian Chadd <adrian@FreeBSD.org>

Revert r220907 and r220915.

Changing the size of struct ieee80211_mimo_info changes
the STA info data, breaking ifconfig in general.


# bc4e0fe6 20-Apr-2011 Adrian Chadd <adrian@FreeBSD.org>

Change the MIMO userland export ABI to include flags, number of radio chains,
extended EVM statistics and EXT channel data.

ifconfig still displays 3 chains worth of ctl noise/rssi.


# 90e0ec14 30-Jan-2011 Bernhard Schmidt <bschmidt@FreeBSD.org>

Fix the 'scan hang' issue.

When requesting a scan and one is already in progess, e.g. while in scan
state, we happily wait for a scan done notification. Though, this
notification might never be sent, e.g. if we are trying to find a network
to associate to and there is none. Instead of always waiting for a
notification just do so if a new scan has been started. For both cases the
scan cache is used to report available networks even if the content might
not be fresh.

MFC after: 1 month


# a2727410 30-Jan-2011 Bernhard Schmidt <bschmidt@FreeBSD.org>

When doing a scan while being associated it is possible that the scan
is deferred for the time it takes to flush the TX queue. This work being
done the scan then is continued, but only if it is marked to do so. As
the 'ifconfig scan' request is meant to be used after the interface is
brought up, request a background scan by default. This behaviour is
already documented in manual page.

This fixes on possible case where 'ifconfig scan' hangs infinitely.

MFC after: 1 month


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# f30f9d40 28-Apr-2010 Rui Paulo <rpaulo@FreeBSD.org>

Fix typos.

Obtained from: DragonFlyBSD


# b02c965e 06-Apr-2010 Rui Paulo <rpaulo@FreeBSD.org>

MFC r205514:
Add a missing LINE_BREAK() after printing the roaming parameters in
verbose mode.

Sponsored by: iXsystems, inc.


# 59f6c520 22-Mar-2010 Rui Paulo <rpaulo@FreeBSD.org>

Add a missing LINE_BREAK() after printing the roaming parameters in
verbose mode.

Sponsored by: iXsystems, inc.
MFC after: 2 weeks


# fe0506d7 09-Mar-2010 Marcel Moolenaar <marcel@FreeBSD.org>

Create the altix project branch. The altix project will add support
for the SGI Altix 350 to FreeBSD/ia64. The hardware used for porting
is a two-module system, consisting of a base compute module and a
CPU expansion module. SGI's NUMAFlex architecture can be an excellent
platform to test CPU affinity and NUMA-aware features in FreeBSD.


# a8c422af 16-Feb-2010 Warner Losh <imp@FreeBSD.org>

The NetBSD Foundation has granted permission for people to remove
clause 3 and 4 from their software.


# 75cf5210 05-Feb-2010 Gavin Atkinson <gavin@FreeBSD.org>

Merge r202161 from head:

Spell "Hz" correctly wherever it is user-visible.

PR: bin/142566
Submitted by: N.J. Mann njm njm.me.uk


# 79649302 12-Jan-2010 Gavin Atkinson <gavin@FreeBSD.org>

Spell "Hz" correctly wherever it is user-visible.

PR: bin/142566
Submitted by: N.J. Mann njm njm.me.uk
Approved by: ed (mentor)
MFC after: 2 weeks


# 596646ae 17-Oct-2009 Rui Paulo <rpaulo@FreeBSD.org>

MFC 197975, 197977, 197980, 198027:
Update for latest 802.11s changes in meshconf format.

Approved by: re (kib)


# 57c81ff8 12-Oct-2009 Rui Paulo <rpaulo@FreeBSD.org>

Update for latest 802.11s changes in meshconf format.

MFC after: 3 days


# 3ca80f0d 27-Jul-2009 Rui Paulo <rpaulo@FreeBSD.org>

Mesh fixes, namely:
* don't clobber proxy entries
* HWMP seq number processing, including discard of old frames
* flush routing table entries based on nexthop
* print route flags in ifconfig
* more debugging messages and comments

Proxy changes submitted by sam.

Approved by: re (kib)


# c104cff2 20-Jul-2009 Rui Paulo <rpaulo@FreeBSD.org>

More mesh bits, namely:
* bridge support (sam)
* handling of errors (sam)
* deletion of inactive routing entries
* more debug msgs (sam)
* fixed some inconsistencies with the spec.
* decap is now specific to mesh (sam)
* print mesh seq. no. on ifconfig list mesh
* small perf. improvements

Reviewed by: sam
Approved by: re (kib)


# 59aa14a9 11-Jul-2009 Rui Paulo <rpaulo@FreeBSD.org>

Implementation of the upcoming Wireless Mesh standard, 802.11s, on the
net80211 wireless stack. This work is based on the March 2009 D3.0 draft
standard. This standard is expected to become final next year.
This includes two main net80211 modules, ieee80211_mesh.c
which deals with peer link management, link metric calculation,
routing table control and mesh configuration and ieee80211_hwmp.c
which deals with the actually routing process on the mesh network.
HWMP is the mandatory routing protocol on by the mesh standard, but
others, such as RA-OLSR, can be implemented.

Authentication and encryption are not implemented.

There are several scripts under tools/tools/net80211/scripts that can be
used to test different mesh network topologies and they also teach you
how to setup a mesh vap (for the impatient: ifconfig wlan0 create
wlandev ... wlanmode mesh).

A new build option is available: IEEE80211_SUPPORT_MESH and it's enabled
by default on GENERIC kernels for i386, amd64, sparc64 and pc98.

Drivers that support mesh networks right now are: ath, ral and mwl.

More information at: http://wiki.freebsd.org/WifiMesh

Please note that this work is experimental. Also, please note that
bridging a mesh vap with another network interface is not yet supported.

Many thanks to the FreeBSD Foundation for sponsoring this project and to
Sam Leffler for his support.
Also, I would like to thank Gateworks Corporation for sending me a
Cambria board which was used during the development of this project.

Reviewed by: sam
Approved by: re (kensmith)
Obtained from: projects/mesh11s


# 4fbdba95 13-Jun-2009 Sam Leffler <sam@FreeBSD.org>

Rev IEEE80211_IOC_STA_INFO abi: ni_flags grew from 16 bits to 32
bits but isi_state did not follow; expand it to 32 bits and pad to
maintain alignment. Note this is an incompatible change that
requires rebuilding of user applications.

Submitted by: rpaulo, cbzimmer, avatar


# 5d644c39 04-Jun-2009 Sam Leffler <sam@FreeBSD.org>

track rename of CSA ie

Submitted by: wxs


# 46b7ac7a 26-Mar-2009 Sam Leffler <sam@FreeBSD.org>

add superg+tdma include files for protocol defs needed to do ie parsing


# 9c1fd0b0 26-Feb-2009 Rui Paulo <rpaulo@FreeBSD.org>

Replace clone_setcallback() with a new function clone_setdefcallback()
that selects a callback from an interface prefix name. This allows us to
report a meaningful error when the user types 'ifconfig wlan0 create',
for example, and also kills some redundant code.

Reviewed by: sam (earlier version)


# 7a8ca893 18-Feb-2009 Sam Leffler <sam@FreeBSD.org>

Fixup handling of roaming and xmit parameters to support 1/2 and 1/4-width
channel modes:
o usurp 'h' mode flag for half-width channels
o add 'q' mode flag for quarter-width channels
o rewrite rate parameter parsing to handle fractional values
o merge mode loops to eliminate ordering assumptions
o replace 0x80 with IEEE80211_RATE_MCS


# 47ee60eb 06-Feb-2009 Sam Leffler <sam@FreeBSD.org>

Regulatory fixups:
o add missing channel flags for ECM, indoor, and outdoor constraints
o use HT capabilities to short-circuit HT20/HT40 channel construction
o rewrite 1/2 and 1/4 width channel handling yet again; previously
we assumed there was a full-width version of the channel in the
calibration table but that's not always true (e.g. for the Public
Safety Band), now we first check the calibration table for the
exact channel we want then fall back to the heuristics we used before
o fix HT channel construction; wasn't adjusting band edges for HT40
channel bandwidth requirements


# f9b2e762 02-Feb-2009 Xin LI <delphij@FreeBSD.org>

Use %u instead of %zu when we intend to print integer constant.


# 1dfdb874 28-Jan-2009 Sam Leffler <sam@FreeBSD.org>

include the channel list in list caps when -v is set; ieee channel
#'s are not available and we have to hack around the mapchan routine
but it lets us see the calibration table w/o forcing the debug regdomain


# fa46e75d 28-Jan-2009 Sam Leffler <sam@FreeBSD.org>

pritize the channel we display with list chans so that, among other
things, 1/2 and 1/4 width channels are hidden behind the full width
channel; this is needed because they are ordered such that they
appear after in the channel table


# 2da7e03a 28-Jan-2009 Sam Leffler <sam@FreeBSD.org>

simplify display of 1/2 and 1/4 width channels


# 2f686fce 28-Jan-2009 Sam Leffler <sam@FreeBSD.org>

improve debug msgs for regdomain operations; print channel flags
symbolically so it's easier to identify channels and why they
are added (or not)


# d6bf86af 28-Jan-2009 Sam Leffler <sam@FreeBSD.org>

Fix 1/2 and 1/4 width channel handling:
o only include 1/2 and 1/4 width channels when they are specified in the
regulatory database description; previously we treated them as if they
were part of the band and blindly added them for 11a/g
o check the channel list returned in the devcaps to identify whether a
device supports 1/2 or 1/4 width channels on a band; this might be
better brought out as a capability bit to avoid filling the channel
list w/ 1/2 and 1/4 width channels but then cards that only support
these channels in a range of frequencies could not be described (though
right now we don't check frequency range only band)


# 8658b18b 27-Jan-2009 Sam Leffler <sam@FreeBSD.org>

Remove assumptions about the max # channels in ioctl's:
o change ioctl's that pass channel lists in/out to handle variable-size
arrays instead of a fixed (compile-time) value; we do this in a way
that maintains binary compatibility
o change ifconfig so all channel list data structures are now allocated
to hold MAXCHAN entries (1536); this, for example, allows the kernel
to return > IEEE80211_CHAN_MAX entries for calls like IEEE80211_IOC_DEVCAPS


# 63ad8170 27-Jan-2009 Sam Leffler <sam@FreeBSD.org>

remove %b msg bit defines now public


# 5814deb8 16-Jan-2009 Sam Leffler <sam@FreeBSD.org>

Fix 1/2 and 1/4 width channel handling for non-GSM operation:
o correct typo that caused random channel selection
o explicitly add 1/2 and 1/4 width channels because channel lookups match
flags that include IEEE80211_CHANNEL_HALF and IEEE80211_CHANNEL_QUARTER


# 10ad9a77 08-Jan-2009 Sam Leffler <sam@FreeBSD.org>

TDMA support for long distance point-to-point links using ath devices:
o add net80211 support for a tdma vap that is built on top of the
existing adhoc-demo support
o add tdma scheduling of frame transmission to the ath driver; it's
conceivable other devices might be capable of this too in which case
they can make use of the 802.11 protocol additions etc.
o add minor bits to user tools that need to know: ifconfig to setup and
configure, new statistics in athstats, and new debug mask bits

While the architecture can support >2 slots in a TDMA BSS the current
design is intended (and tested) for only 2 slots.

Sponsored by: Intel


# ddd244ec 14-Dec-2008 Sam Leffler <sam@FreeBSD.org>

move channel parsing to a getchannel routine so it can be reused to check
the channel argument supplied to chanswitch


# 746b34ac 14-Dec-2008 Sam Leffler <sam@FreeBSD.org>

fix handling of sku codes like country codes


# 76f0b9bf 14-Dec-2008 Sam Leffler <sam@FreeBSD.org>

fix handling of unknown country codes; atoi doesn't return -1
for an invalid string as I thought; so use strtol instead


# b6130d38 14-Dec-2008 Sam Leffler <sam@FreeBSD.org>

0 is a potential ISO CC; use new NO_COUNTRY #define to identify
when the CC is not set. Note NO_COUNTRY is set to 0xffff for now
(must be 16 bits as ieee80211_regdomain struct defines sku's and
cc's as uint16_t which may need fixing).


# 27c1a6f4 14-Dec-2008 Sam Leffler <sam@FreeBSD.org>

o distinguish between adhoc and ahdemo modes
o do not require 1/2 and 1/4 rate channels be present in the
calibration list when doing a gsm regulatory change; the
existing 900MHz cards are not self-identifying so there is
no way (using the calibration channel list) to check


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# 51947cb6 21-Sep-2008 Sam Leffler <sam@FreeBSD.org>

MIMO power save and RIFS; while here also update per-node state/flags for ampdu


# 8db67fd2 21-Sep-2008 Sam Leffler <sam@FreeBSD.org>

"ampdudensity -" is too subtle; use "NA" for any and accept it as a parameter


# 5c43e5f4 13-Aug-2008 Andrew Thompson <thompsa@FreeBSD.org>

Fix channel parsing which was broken in r179958, the channel number may be
suffixed with :flag and /width.


# ed8b5a93 08-Aug-2008 Sam Leffler <sam@FreeBSD.org>

recognize WPS ie's

Submitted by: "Chuck Tuffli" <chuck@tuffli.net>
MFC after: 1 week


# 87a8e294 02-Aug-2008 Sam Leffler <sam@FreeBSD.org>

change list wme to only print the channel parameters; to
get channel+bss use -v


# 7842b6be 02-Aug-2008 Sam Leffler <sam@FreeBSD.org>

don't silently exit if the regdomain.xml file is missing


# c0f198ca 31-Jul-2008 Sam Leffler <sam@FreeBSD.org>

add missing capability bits


# cd610d1c 23-Jun-2008 Andrew Thompson <thompsa@FreeBSD.org>

Ensure the channel is a number and not a range, the 'channel' command can be
easily mixed up with 'chanlist' and would give unexpected results by fixing the
channel on the first number in the range.


# b032f27c 20-Apr-2008 Sam Leffler <sam@FreeBSD.org>

Multi-bss (aka vap) support for 802.11 devices.

Note this includes changes to all drivers and moves some device firmware
loading to use firmware(9) and a separate module (e.g. ral). Also there
no longer are separate wlan_scan* modules; this functionality is now
bundled into the wlan module.

Supported by: Hobnob and Marvell
Reviewed by: many
Obtained from: Atheros (some bits)


# 5ad26a3d 03-Feb-2008 Sam Leffler <sam@FreeBSD.org>

correct tx rate displayed by list sta: the reported legacy tx rate
is still an index into the rate set and not (yet) the rate code

Noticed by: JoaoBR


# 055d464b 03-Feb-2008 Sam Leffler <sam@FreeBSD.org>

fix list mac; broken in delta 1.48

Noticed by: JoaoBR


# 237183f2 01-Nov-2007 Sam Leffler <sam@FreeBSD.org>

sync with vap code base; updates for 11n support and some
general code cleanups

Reviewed by: thompsa, avatar
MFC after: 1 week


# 927a1b41 11-Jun-2007 Andrew Thompson <thompsa@FreeBSD.org>

Reset the pointer to the ioctl buffer after it gets changed.


# 8f3591a5 10-Jun-2007 Sam Leffler <sam@FreeBSD.org>

Update for revised 802.11 support:
o revised channel handling support; ifconfig now queries the kernel to
find the list of available channels and handles channel promotion;
channel attributes can be specified as part of the channel; e.g. 36:a
for channel 36 in 11a (as opposed to turbo A or HT A)
o use channel list to map between freq and IEEE channel #; this eliminates
all knowledge of how the mapping is done and fixes handling of cases
where channels overlap in the IEEE channel # space but are distinct in
the frequency+attributes space (e.g. PSB)
o add new knobs: bgscan, ff (Atheors fast frames), dturbo (Atheros
Dynamic Turbo mode), bgscanidle, bgscanintvl, scanvalid, roam:rssi11a,
roam:rssi11b, roam:rssi11g, roam:rate11a, roam:rate11b, roam:rate11g
(roaming parameters), burst, doth (forthcoming 11h support)
o print contents of WME, ATH, WPA, RSN, information elements with -v option
o print signal strength in dBm
o print noise floor in dBm
o add list txpow to print tx power caps/channel
o change default channel display in status to be more informative


# 3b4f8488 30-Mar-2007 Sam Leffler <sam@FreeBSD.org>

don't display ssid cloaking status as "ssid HIDE", use the cmd line
parameter like everything else

MFC after: 2 weeks


# a74d2fb5 17-Feb-2007 Sam Leffler <sam@FreeBSD.org>

remove (now) duplicate definition of IEEE80211_IS_CHAN_PASSIVE


# 9a71a3d5 14-Jan-2007 Sam Leffler <sam@FreeBSD.org>

Add initial support for 900MHz channels; still has some rough
edges but ifconfig ath0 list chan works and you can use ieee
channel #'s to lock/select a channel.

MFC after: 1 month


# b0eb2f69 27-Dec-2006 Sam Leffler <sam@FreeBSD.org>

Add half/quarter rate 11a channel support:
o add hack/nonstandard channel mapping for public safety band channels to
mirror kernel (temporary until we have proper 802.11 state)
o change ieee80211_mhz2ieee to take channel flags (unused right now)

While here do some minor fixups like using IEEE80211_IS_CHAN_ANYG.


# 0972edc0 09-Dec-2006 Sam Leffler <sam@FreeBSD.org>

fix handling of ssid "-" etc; we're writing 1 byte past the
end of the result buffer

Noticed by: Sepherosa Zieha
Reviewed by: cperciva
MFC after: 2 weeks


# 76f6413d 10-Aug-2006 Sam Leffler <sam@FreeBSD.org>

fixup list station support:
o add sanity check to avoid possible looping
o use intended api for IEEE80211_IOC_STA_INFO
o when operating in sta mode get the sta info for the ap


# d7ccef33 25-Jul-2006 Sam Leffler <sam@FreeBSD.org>

add beacon miss threshold control

Submitted by: Henrik Brix Andersen <henrik@brixandersen.dk>
MFC after: 2 weeks


# 97d7b28e 23-Jun-2006 Sam Leffler <sam@FreeBSD.org>

remove display of the ERP ie from the list sta output (it's always
zero); replace it with station capabilities

MFC after: 1 month


# 3e0ded93 22-Feb-2006 Sam Leffler <sam@FreeBSD.org>

cleanup line break formatting

MFC after: 1 week


# 225b126b 14-Feb-2006 Sam Leffler <sam@FreeBSD.org>

fix off by one malloc sizes

Submitted by: Michal Mertl
MFC after: 1 week


# daad4d04 08-Feb-2006 Sam Leffler <sam@FreeBSD.org>

really truncate long ssid's when !verbose

MFC after: 1 week


# 8a4fabbd 29-Jan-2006 Maxim Konovalov <maxim@FreeBSD.org>

Fix an off-by-one error.

Reviewed by: sam


# 949c433e 18-Jan-2006 Sam Leffler <sam@FreeBSD.org>

don't widen the ssid field by default, this screws up other formatting;
make it available with the -v option


# 7e1ff2ff 30-Dec-2005 Robert Watson <rwatson@FreeBSD.org>

When printing SSID's in ifconfig(8)'s scan mode, set the width of the
ssid field to 32 characters instead of 14, as long SSID's are quite
common and hard to type in if you can't read them.


# 29d58c71 14-Dec-2005 Sam Leffler <sam@FreeBSD.org>

add control for packet bursting


# aa5eb887 13-Dec-2005 Sam Leffler <sam@FreeBSD.org>

display a bssid that's zero with the -v option


# 439b4702 12-Dec-2005 Sam Leffler <sam@FreeBSD.org>

add mcastrate support

MFC after: 1 week


# bed23040 30-Oct-2005 Brooks Davis <brooks@FreeBSD.org>

SSIDs are of length 32-bytes and not NUL terminated. Use the correct
length and bail immediatly if the returned length is wrong rather than
attempting to set an correct value.

This commit differs from the patch in the PR in the use of exit instead
of return and the use of a defined value for the array.

Submitted by: Daan Vreeken [PA4DAN] <Danovitsch at Vitsch dot net>
PR: bin/74509


# ab77cda1 28-Oct-2005 Brooks Davis <brooks@FreeBSD.org>

Don't crash when given an invalid nwkey string.

PR: misc/88159


# e6f7c17e 29-Sep-2005 Ruslan Ermilov <ru@FreeBSD.org>

err() -> errx() where appropriate.


# 29f0e929 13-Aug-2005 Sam Leffler <sam@FreeBSD.org>

add list mac and mac:kick support

Submitted by: Michal Mertl (original version)
MFC after: 2 weeks


# 70382d5a 03-Aug-2005 Stefan Farfeleder <stefanf@FreeBSD.org>

Fix commen typos.


# 7c0cbd3b 01-Aug-2005 Sam Leffler <sam@FreeBSD.org>

acm and ack are specified per-ac

MFC after: 3 days


# 0c36e9bb 29-Jul-2005 Sam Leffler <sam@FreeBSD.org>

oops, revert previous change


# 4e577135 29-Jul-2005 Sam Leffler <sam@FreeBSD.org>

MFC: add fragthreshold parameter and accept - (or any) for rtsthreshold

Approved by: re (kensmith)


# ad60ee41 26-Jul-2005 Sam Leffler <sam@FreeBSD.org>

o add fragthreshold support now that the ioctl exists
o accept rtsthreshold - (or any) as a shorthand for rtsthreshold 2346

MFC after: 3 days


# b7eb47e2 14-Jul-2005 Robert Watson <rwatson@FreeBSD.org>

Add a new flag '-k' to ifconfig(8), indicating that it is alright to
print potentially sensitive keying material to stdout. With the new
802.11 support, ifconfig(8) is now capable of printing 802.11 keys,
and did by default for the root user, which is undesirable in some
environments. Now it will not print keying material unless requested
(and available to the user).

MFC after: 1 week


# fa56f745 06-Jul-2005 Sam Leffler <sam@FreeBSD.org>

add pureg/-pureg parameter for controlling pureg ap mode support

Reviewed by: avatar
Approved by: re (scottl)


# ecc19600 19-Jun-2005 Tai-hwa Liang <avatar@FreeBSD.org>

Appending "..." to a SSID which contains unprintable characters only when
necessary.

Submitted by: sam
Approved by: re (scottl)


# d14c0c07 01-Jun-2005 John Baldwin <jhb@FreeBSD.org>

Fix some warnings on 64-bit archs.

Reviewed by: sam


# 90c4b74c 31-Dec-2004 Sam Leffler <sam@FreeBSD.org>

Fix special status reporting. Prior to the reorg there was
special-purpose code to display status for an interface for
state that was not address-oriented. This status reporting
was merged in to the address-oriented status reporting but
did not work for link address reporting (as discovered with
fwip interfaces). Correct this mis-merge and eliminate the
bogus kludge that was used for link-level address reporting.

o add an af_other_status method for an address family for
reporting status of things like media, vlan, etc.
o call the af_other_status methods after reporting address
status for an interface
o special-case link address status; when reporting all
status for an interface invoke it specially prior to
reporting af_other_status methods (since it requires the
sockaddr_dl that is passed in to status separately from
the rtmsg address state)
o correct the calling convention for link address status;
don't cast types, construct the proper parameter

This fixes ifconfig on fwip interfaces.


# 50405595 31-Dec-2004 Sam Leffler <sam@FreeBSD.org>

o accept deftxkey as a synonym for weptxkey since that is what is
printed for status (allows cut&paste)
o accept undef for the deftxkey/weptxkey so you can reset state

Requested by: phk


# 881cb7c4 31-Dec-2004 Sam Leffler <sam@FreeBSD.org>

recognize atheros information elements


# 3ce8a7b4 11-Dec-2004 Sam Leffler <sam@FreeBSD.org>

always display the deftxkey for an 802.11 device if privacy is enabled


# 5faf8dcb 08-Dec-2004 Sam Leffler <sam@FreeBSD.org>

Overhaul to cleanup some of the tangled logic that's grown over the years.

o break per-address family support out into separate files
o modularize per-address family and functional operations using
a registration mechanism; this permits configuration according
to which files you include (but beware that order of the files
is important to insure backwards compatibility)
o many cleanups to eliminate incestuous behaviour, global variables,
and poor coding practices (still much more to fix)

The original motivation of this work was to support dynamic addition
of functionality based on the interface so we can eliminate the various
little control programs and so that vendors can distribute ifconfig
plugins that support their in-kernel code. That work is still to be
completed.

o Update 802.11 support for all the new net80211 functionality; some
of these operations (e.g. list *) may be better suited in a different
program


# d2aeb9cc 04-Apr-2004 Poul-Henning Kamp <phk@FreeBSD.org>

Fix an off-by-one error in the function used to input the ascii/hex strings.
Be a little bit more helpful in error messages.


# a6b03f42 30-Mar-2004 Sam Leffler <sam@FreeBSD.org>

add support for setting 802.11 rtsthreshold, transmit power,
and 11g protection mode

Reviewed by: imp (just code)


# 405077fd 31-Oct-2003 Brooks Davis <brooks@FreeBSD.org>

We want the length of the string, not the size of its pointer.


# 60ef637e 17-Sep-2003 Sam Leffler <sam@FreeBSD.org>

o add support for setting 128-bit WEP keys
o use IEEE80211_KEYBUF_SIZE instead of magic numbers
o distinguish between 40-, 104-, and 128-bit WEP keys when printing status


# cf260fe3 28-Jun-2003 Sam Leffler <sam@FreeBSD.org>

o update for new 802.11 support
o fix channel command so channel - does what the man page says


# bc123897 18-Apr-2002 Warner Losh <imp@FreeBSD.org>

De-__P, use ansi function definitions


# 71c7d82d 27-Feb-2002 Brooks Davis <brooks@FreeBSD.org>

Some style(9) whitespace fixes and a correction to the copyright.


# 0d6fcb5c 31-Dec-2001 Doug Ambrisko <ambrisko@FreeBSD.org>

Fix bugs in the structure for rx_frame by making gap length one byte and
a packed array so sizeof work. This broke RFMON mode and passing
up 802.11 packets.

The Linux emulation code was derived from the open source Linux driver to
maintain compatibility.

LEAP support is added, hints from Richard Johnson. I've verified this
locally with PC350v42510.img firmware. More bug fixing from Marco to
fix long passwords.

Change DELAYs in flash part of driver to FLASH_DELAY which uses tsleep
so it doesn't look like your system died during a flash update.

Install header files in /usr/include/dev/an

Cleanup some ifmedia bugs add "Home" key mode to ifmedia and ancontrol.
This way you can manage 2 keys a little easier. Map the home mode into
key 5. Enhance ifconfig to dump the various configured SSIDs. I use
a bunch of different ones and roam between them. Use the syntax similar
to the WEP keys to deal with setting difference SSIDs.

Bump up up the Card capabilities RID since they added 2 bytes to it
in the latest firmware. Thankfully we changed it from a terminal
failure so the card still worked but the driver whined.

Some cleanup patches from Marco Molteni.

Submitted by: Richard Johnson <raj@cisco.com>
Marco Molteni <molter@tin.it>
and myself
Various checks: David Wolfskill <david@catwhisker.org>
Reviewed by: Brooks Davis <brooks@freebsd.org>
Warner Losh <imp@freebsd.org>
Approved by: Brooks Davis <brooks@freebsd.org>
Warner Losh <imp@freebsd.org>
Obtained from: Linux emulation API's from Aironet driver.


# a341cbc3 24-Jul-2001 Brooks Davis <brooks@FreeBSD.org>

Fix a stupid bug which resulted in a blank line in the status output if
WEP is supported, but not keys are set.

MFC after: 3 days


# a9ee73f5 26-May-2001 Poul-Henning Kamp <phk@FreeBSD.org>

Forgot to cvs add these two files for the previous commit.