MIMO power save and RIFS; while here also update per-node state/flags for ampdu
This commit is contained in:
parent
8db67fd293
commit
51947cb625
@ -28,7 +28,7 @@
|
||||
.\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd August 27, 2008
|
||||
.Dd September 5, 2008
|
||||
.Dt IFCONFIG 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -1396,6 +1396,13 @@ See also
|
||||
.Cm outdoor ,
|
||||
and
|
||||
.Cm anywhere .
|
||||
.It Cm rifs
|
||||
Enable use of Reduced InterFrame Spacing (RIFS) when operating in 802.11n
|
||||
on an HT channel.
|
||||
Note that RIFS must be supported by both the station and access point
|
||||
for it to be used.
|
||||
To disable RIFS use
|
||||
.Fl rifs .
|
||||
.It Cm roam:rate Ar rate
|
||||
Set the threshold for controlling roaming when operating in a BSS.
|
||||
The
|
||||
@ -1497,6 +1504,23 @@ on an HT channel.
|
||||
NB: this currently enables Short GI on both HT40 and HT20 channels.
|
||||
To disable Short GI use
|
||||
.Fl shortgi .
|
||||
.It Cm smps
|
||||
Enable use of Static Spatial Multiplexing Power Save (SMPS)
|
||||
when operating in 802.11n.
|
||||
A station operating with Static SMPS maintains only a single
|
||||
receive chain active (this can significantly reduce power consumption).
|
||||
To disable SMPS use
|
||||
.Fl smps .
|
||||
.It Cm smpsdyn
|
||||
Enable use of Dynamic Spatial Multiplexing Power Save (SMPS)
|
||||
when operating in 802.11n.
|
||||
A station operating with Dynamic SMPS maintains only a single
|
||||
receive chain active but switches to multiple receive chains when it
|
||||
receives an RTS frame (this can significantly reduce power consumption).
|
||||
Note that stations cannot distinguish between RTS/CTS intended to
|
||||
enable multiple receive chains and those used for other purposes.
|
||||
To disable SMPS use
|
||||
.Fl smps .
|
||||
.It Cm ssid Ar ssid
|
||||
Set the desired Service Set Identifier (aka network name).
|
||||
The SSID is a string up to 32 characters
|
||||
|
@ -112,6 +112,11 @@
|
||||
#define IEEE80211_NODE_HTCOMPAT 0x0080 /* HT setup w/ vendor OUI's */
|
||||
#define IEEE80211_NODE_WPS 0x0100 /* WPS association */
|
||||
#define IEEE80211_NODE_TSN 0x0200 /* TSN association */
|
||||
#define IEEE80211_NODE_AMPDU_RX 0x0400 /* AMPDU rx enabled */
|
||||
#define IEEE80211_NODE_AMPDU_TX 0x0800 /* AMPDU tx enabled */
|
||||
#define IEEE80211_NODE_MIMO_PS 0x1000 /* MIMO power save enabled */
|
||||
#define IEEE80211_NODE_MIMO_RTS 0x2000 /* send RTS in MIMO PS */
|
||||
#define IEEE80211_NODE_RIFS 0x4000 /* RIFS enabled */
|
||||
#endif
|
||||
|
||||
#define MAXCOL 78
|
||||
@ -1695,6 +1700,18 @@ set80211dotd(const char *val, int d, int s, const struct afswtch *rafp)
|
||||
set80211(s, IEEE80211_IOC_DOTD, d, 0, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
set80211smps(const char *val, int d, int s, const struct afswtch *rafp)
|
||||
{
|
||||
set80211(s, IEEE80211_IOC_SMPS, d, 0, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
set80211rifs(const char *val, int d, int s, const struct afswtch *rafp)
|
||||
{
|
||||
set80211(s, IEEE80211_IOC_RIFS, d, 0, NULL);
|
||||
}
|
||||
|
||||
static int
|
||||
regdomain_sort(const void *a, const void *b)
|
||||
{
|
||||
@ -2093,7 +2110,18 @@ getflags(int flags)
|
||||
if (flags & IEEE80211_NODE_WPS)
|
||||
*cp++ = 'W';
|
||||
if (flags & IEEE80211_NODE_TSN)
|
||||
*cp++ = 'N';
|
||||
if (flags & IEEE80211_NODE_AMPDU_TX)
|
||||
*cp++ = 'T';
|
||||
if (flags & IEEE80211_NODE_AMPDU_RX)
|
||||
*cp++ = 'R';
|
||||
if (flags & IEEE80211_NODE_MIMO_PS) {
|
||||
*cp++ = 'M';
|
||||
if (flags & IEEE80211_NODE_MIMO_RTS)
|
||||
*cp++ = '+';
|
||||
}
|
||||
if (flags & IEEE80211_NODE_RIFS)
|
||||
*cp++ = 'I';
|
||||
*cp = '\0';
|
||||
return flagstring;
|
||||
}
|
||||
@ -4111,6 +4139,20 @@ ieee80211_status(int s)
|
||||
else if (verbose)
|
||||
LINE_CHECK("-puren");
|
||||
}
|
||||
if (get80211val(s, IEEE80211_IOC_SMPS, &val) != -1) {
|
||||
if (val == IEEE80211_HTCAP_SMPS_DYNAMIC)
|
||||
LINE_CHECK("smpsdyn");
|
||||
else if (val == IEEE80211_HTCAP_SMPS_ENA)
|
||||
LINE_CHECK("smps");
|
||||
else if (verbose)
|
||||
LINE_CHECK("-smps");
|
||||
}
|
||||
if (get80211val(s, IEEE80211_IOC_RIFS, &val) != -1) {
|
||||
if (val)
|
||||
LINE_CHECK("rifs");
|
||||
else if (verbose)
|
||||
LINE_CHECK("-rifs");
|
||||
}
|
||||
}
|
||||
|
||||
if (get80211val(s, IEEE80211_IOC_WME, &wme) != -1) {
|
||||
@ -4593,6 +4635,11 @@ static struct cmd ieee80211_cmds[] = {
|
||||
DEF_CMD("-ht40", 0, set80211htconf),
|
||||
DEF_CMD("ht", 3, set80211htconf), /* NB: 20+40 */
|
||||
DEF_CMD("-ht", 0, set80211htconf),
|
||||
DEF_CMD("rifs", 1, set80211rifs),
|
||||
DEF_CMD("-rifs", 0, set80211rifs),
|
||||
DEF_CMD("smps", IEEE80211_HTCAP_SMPS_ENA, set80211smps),
|
||||
DEF_CMD("smpsdyn", IEEE80211_HTCAP_SMPS_DYNAMIC, set80211smps),
|
||||
DEF_CMD("-smps", IEEE80211_HTCAP_SMPS_OFF, set80211smps),
|
||||
/* XXX for testing */
|
||||
DEF_CMD_ARG("chanswitch", set80211chanswitch),
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user