From 29d58c7173e5b744dc0e828c8da2df2a2278b9e6 Mon Sep 17 00:00:00 2001 From: Sam Leffler Date: Wed, 14 Dec 2005 19:44:39 +0000 Subject: [PATCH] add control for packet bursting --- sbin/ifconfig/ifconfig.8 | 15 ++++++++++++++- sbin/ifconfig/ifieee80211.c | 16 ++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/sbin/ifconfig/ifconfig.8 b/sbin/ifconfig/ifconfig.8 index 0aa6e6736fac..b42943d3e556 100644 --- a/sbin/ifconfig/ifconfig.8 +++ b/sbin/ifconfig/ifconfig.8 @@ -28,7 +28,7 @@ .\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94 .\" $FreeBSD$ .\" -.Dd December 12, 2005 +.Dd December 14, 2005 .Dt IFCONFIG 8 .Os .Sh NAME @@ -570,6 +570,19 @@ Another name for the .Cm bssid parameter is .Cm ap . +.It Cm burst +Enable packet bursting. +Packet bursting is a transmission technique whereby the wireless +medium is acquired once to send multiple frames and the interframe +spacing is reduced. +This technique can significantly increase throughput by reducing +transmission overhead. +Packet bursting is supported by the 802.11e QoS specification +and some devices that do not support QoS may still be capable. +By default packet bursting is enabled if a device is capable +of doing it. +To disable packet bursting, use +.Fl burst . .It Cm chanlist Ar channels Set the desired channels to use when scanning for access points, neighbors in an IBSS network, or looking for unoccupied diff --git a/sbin/ifconfig/ifieee80211.c b/sbin/ifconfig/ifieee80211.c index c3c63a420f88..2c6d8a7e1357 100644 --- a/sbin/ifconfig/ifieee80211.c +++ b/sbin/ifconfig/ifieee80211.c @@ -662,6 +662,12 @@ set80211pureg(const char *val, int d, int s, const struct afswtch *rafp) set80211(s, IEEE80211_IOC_PUREG, d, 0, NULL); } +static void +set80211burst(const char *val, int d, int s, const struct afswtch *rafp) +{ + set80211(s, IEEE80211_IOC_BURST, d, 0, NULL); +} + static DECL_CMD_FUNC(set80211mcastrate, val, d) { @@ -1674,6 +1680,14 @@ ieee80211_status(int s) } else wme = 0; + ireq.i_type = IEEE80211_IOC_BURST; + if (ioctl(s, SIOCG80211, &ireq) != -1) { + if (ireq.i_val) + LINE_CHECK("%cburst", spacer); + else if (verbose) + LINE_CHECK("%c-burst", spacer); + } + if (opmode == IEEE80211_M_HOSTAP) { ireq.i_type = IEEE80211_IOC_HIDESSID; if (ioctl(s, SIOCG80211, &ireq) != -1) { @@ -1932,6 +1946,8 @@ static struct cmd ieee80211_cmds[] = { DEF_CMD("-pureg", 0, set80211pureg), DEF_CMD_ARG("mcastrate", set80211mcastrate), DEF_CMD_ARG("fragthreshold", set80211fragthreshold), + DEF_CMD("burst", 1, set80211burst), + DEF_CMD("-burst", 0, set80211burst), }; static struct afswtch af_ieee80211 = { .af_name = "af_ieee80211",