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
This commit is contained in:
Sam Leffler 2007-06-11 03:56:33 +00:00
parent 68e8e04e93
commit 8f3591a5bb
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=170531
4 changed files with 964 additions and 176 deletions

View File

@ -597,7 +597,7 @@ Set the interval at which beacon frames are sent when operating in
ad-hoc or ap mode.
The
.Ar interval
parameter is specified in TU's (1/1024 msecs).
parameter is specified in TU's (1024 usecs).
By default beacon frames are transmitted every 100 TU's.
.It Cm bmissthreshold Ar count
Set the number of consecutive missed beacons at which the station
@ -664,6 +664,48 @@ Some
adaptors ignore this setting unless you are in ad-hoc mode.
Alternatively the frequency, in megahertz, may be specified
instead of the channel number.
.Pp
When there are several ways to use a channel the channel
number/frequency may be appended with attributes to clarify.
For example, if a device is capable of operating on channel 6
with 802.11n and 802.11g then one can specify that g-only use
should be used by specifying ``6:g''.
Similarly the channel width can be specified by appending it
with ``/''; e.g. ``6/40'' specifies a 40MHz wide channel,
These attributes can be combined as in: ``6:ht/40''.
The full set of flags specified following a `:'' are:
.Cm a
(802.11a),
.Cm b
(802.11b),
.Cm d
(Atheros Dynamic Turbo mode),
.Cm g
(802.11g),
.Cm h
or
.Cm n
(802.11n aka HT),
.Cm s
(Atheros Static Turbo mode),
and
.Cm t
(Atheros Dynamic Turbo mode, or appendeded to ``st'' and ``dt'').
The full set of channel widths following a '/' are:
.Cm 5
(5MHz aka quarter-rate channel),
.Cm 10
(10MHz aka half-rate channel),
.Cm 20
(20MHz mostly for use in specifying ht20),
and
.Cm 40
(40MHz mostly for use in specifying ht40),
In addition,
a 40MHz HT channel specification may include the location
of the extension channel by appending ``+'' or ``-'' for above and below,
respectively; e.g. ``2437:ht/40+'' specifies 40MHz wide HT operation
with the center channel at frequency 2437 and the extension channel above.
.It Cm deftxkey Ar index
Set the default key to use for transmission.
Typically this is only set when using WEP encryption.
@ -815,7 +857,8 @@ Use
.Fl powersave
to disable powersave operation.
.It Cm powersavesleep Ar sleep
Set the desired max powersave sleep time in milliseconds.
Set the desired max powersave sleep time in TU's (1024 usecs).
By default the max powersave sleep time is 100 TU's.
.It Cm protmode Ar technique
For interfaces operating in 802.11g, use the specified
.Ar technique

View File

@ -140,3 +140,9 @@ void ifmaybeload(const char *name);
typedef void clone_callback_func(int, struct ifreq *);
void clone_setcallback(clone_callback_func *);
/*
* XXX expose this so modules that neeed to know of any pending
* operations on ifmedia can avoid cmd line ordering confusion.
*/
struct ifmediareq *ifmedia_getstate(int s);

File diff suppressed because it is too large Load Diff

View File

@ -184,8 +184,8 @@ media_status(int s)
free(media_list);
}
static struct ifmediareq *
getifmediastate(int s)
struct ifmediareq *
ifmedia_getstate(int s)
{
static struct ifmediareq *ifmr = NULL;
int *mwords;
@ -249,7 +249,7 @@ setmedia(const char *val, int d, int s, const struct afswtch *afp)
struct ifmediareq *ifmr;
int subtype;
ifmr = getifmediastate(s);
ifmr = ifmedia_getstate(s);
/*
* We are primarily concerned with the top-level type.
@ -294,7 +294,7 @@ domediaopt(const char *val, int clear, int s)
struct ifmediareq *ifmr;
int options;
ifmr = getifmediastate(s);
ifmr = ifmedia_getstate(s);
options = get_media_options(IFM_TYPE(ifmr->ifm_ulist[0]), val);
@ -319,7 +319,7 @@ setmediainst(const char *val, int d, int s, const struct afswtch *afp)
struct ifmediareq *ifmr;
int inst;
ifmr = getifmediastate(s);
ifmr = ifmedia_getstate(s);
inst = atoi(val);
if (inst < 0 || inst > IFM_INST_MAX)
@ -338,7 +338,7 @@ setmediamode(const char *val, int d, int s, const struct afswtch *afp)
struct ifmediareq *ifmr;
int mode;
ifmr = getifmediastate(s);
ifmr = ifmedia_getstate(s);
mode = get_media_mode(IFM_TYPE(ifmr->ifm_ulist[0]), val);