MIMO power save and RIFS; while here also update per-node state/flags for ampdu
This commit is contained in:
parent
8db67fd293
commit
51947cb625
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=183261
@ -28,7 +28,7 @@
|
|||||||
.\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94
|
.\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94
|
||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
.\"
|
.\"
|
||||||
.Dd August 27, 2008
|
.Dd September 5, 2008
|
||||||
.Dt IFCONFIG 8
|
.Dt IFCONFIG 8
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -1396,6 +1396,13 @@ See also
|
|||||||
.Cm outdoor ,
|
.Cm outdoor ,
|
||||||
and
|
and
|
||||||
.Cm anywhere .
|
.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
|
.It Cm roam:rate Ar rate
|
||||||
Set the threshold for controlling roaming when operating in a BSS.
|
Set the threshold for controlling roaming when operating in a BSS.
|
||||||
The
|
The
|
||||||
@ -1497,6 +1504,23 @@ on an HT channel.
|
|||||||
NB: this currently enables Short GI on both HT40 and HT20 channels.
|
NB: this currently enables Short GI on both HT40 and HT20 channels.
|
||||||
To disable Short GI use
|
To disable Short GI use
|
||||||
.Fl shortgi .
|
.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
|
.It Cm ssid Ar ssid
|
||||||
Set the desired Service Set Identifier (aka network name).
|
Set the desired Service Set Identifier (aka network name).
|
||||||
The SSID is a string up to 32 characters
|
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_HTCOMPAT 0x0080 /* HT setup w/ vendor OUI's */
|
||||||
#define IEEE80211_NODE_WPS 0x0100 /* WPS association */
|
#define IEEE80211_NODE_WPS 0x0100 /* WPS association */
|
||||||
#define IEEE80211_NODE_TSN 0x0200 /* TSN 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
|
#endif
|
||||||
|
|
||||||
#define MAXCOL 78
|
#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);
|
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
|
static int
|
||||||
regdomain_sort(const void *a, const void *b)
|
regdomain_sort(const void *a, const void *b)
|
||||||
{
|
{
|
||||||
@ -2093,7 +2110,18 @@ getflags(int flags)
|
|||||||
if (flags & IEEE80211_NODE_WPS)
|
if (flags & IEEE80211_NODE_WPS)
|
||||||
*cp++ = 'W';
|
*cp++ = 'W';
|
||||||
if (flags & IEEE80211_NODE_TSN)
|
if (flags & IEEE80211_NODE_TSN)
|
||||||
|
*cp++ = 'N';
|
||||||
|
if (flags & IEEE80211_NODE_AMPDU_TX)
|
||||||
*cp++ = 'T';
|
*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';
|
*cp = '\0';
|
||||||
return flagstring;
|
return flagstring;
|
||||||
}
|
}
|
||||||
@ -4111,6 +4139,20 @@ ieee80211_status(int s)
|
|||||||
else if (verbose)
|
else if (verbose)
|
||||||
LINE_CHECK("-puren");
|
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) {
|
if (get80211val(s, IEEE80211_IOC_WME, &wme) != -1) {
|
||||||
@ -4593,6 +4635,11 @@ static struct cmd ieee80211_cmds[] = {
|
|||||||
DEF_CMD("-ht40", 0, set80211htconf),
|
DEF_CMD("-ht40", 0, set80211htconf),
|
||||||
DEF_CMD("ht", 3, set80211htconf), /* NB: 20+40 */
|
DEF_CMD("ht", 3, set80211htconf), /* NB: 20+40 */
|
||||||
DEF_CMD("-ht", 0, set80211htconf),
|
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 */
|
/* XXX for testing */
|
||||||
DEF_CMD_ARG("chanswitch", set80211chanswitch),
|
DEF_CMD_ARG("chanswitch", set80211chanswitch),
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user