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
This commit is contained in:
parent
3b86465e44
commit
0e7403cc3f
@ -1770,14 +1770,21 @@ regdomain_addchans(struct ieee80211req_chaninfo *ci,
|
||||
printf("%u: skip, flags 0x%x not available\n", freq, chanFlags);
|
||||
continue;
|
||||
}
|
||||
/*
|
||||
* NB: don't enforce 1/2 and 1/4 rate channels being
|
||||
* specified in the device's calibration list for
|
||||
* 900MHz cards because most are not self-identifying.
|
||||
*/
|
||||
if ((flags & IEEE80211_CHAN_HALF) &&
|
||||
(chanFlags & IEEE80211_CHAN_HALF) == 0) {
|
||||
((chanFlags & IEEE80211_CHAN_HALF) == 0 &&
|
||||
(flags & IEEE80211_CHAN_GSM) == 0)) {
|
||||
if (verbose)
|
||||
printf("%u: skip, device does not support half-rate channels\n", freq);
|
||||
continue;
|
||||
}
|
||||
if ((flags & IEEE80211_CHAN_QUARTER) &&
|
||||
(chanFlags & IEEE80211_CHAN_QUARTER) == 0) {
|
||||
((chanFlags & IEEE80211_CHAN_HALF) == 0 &&
|
||||
(flags & IEEE80211_CHAN_GSM) == 0)) {
|
||||
if (verbose)
|
||||
printf("%u: skip, device does not support quarter-rate channels\n", freq);
|
||||
continue;
|
||||
@ -3534,8 +3541,12 @@ get80211opmode(int s)
|
||||
(void) strncpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name));
|
||||
|
||||
if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) >= 0) {
|
||||
if (ifmr.ifm_current & IFM_IEEE80211_ADHOC)
|
||||
return IEEE80211_M_IBSS; /* XXX ahdemo */
|
||||
if (ifmr.ifm_current & IFM_IEEE80211_ADHOC) {
|
||||
if (ifmr.ifm_current & IFM_FLAG0)
|
||||
return IEEE80211_M_AHDEMO;
|
||||
else
|
||||
return IEEE80211_M_IBSS;
|
||||
}
|
||||
if (ifmr.ifm_current & IFM_IEEE80211_HOSTAP)
|
||||
return IEEE80211_M_HOSTAP;
|
||||
if (ifmr.ifm_current & IFM_IEEE80211_MONITOR)
|
||||
@ -4244,6 +4255,7 @@ end:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (get80211val(s, IEEE80211_IOC_BEACON_INTERVAL, &val) != -1) {
|
||||
/* XXX default define not visible */
|
||||
if (val != 100 || verbose)
|
||||
|
@ -119,10 +119,9 @@ vlan_set(int s, struct ifreq *ifr)
|
||||
}
|
||||
}
|
||||
|
||||
static
|
||||
DECL_CMD_FUNC(setvlantag, val, d)
|
||||
static void
|
||||
getvlantag(const char *val)
|
||||
{
|
||||
struct vlanreq vreq;
|
||||
u_long ul;
|
||||
char *endp;
|
||||
|
||||
@ -133,11 +132,31 @@ DECL_CMD_FUNC(setvlantag, val, d)
|
||||
/* check if the value can be represented in vlr_tag */
|
||||
if (params.vlr_tag != ul)
|
||||
errx(1, "value for vlan out of range");
|
||||
}
|
||||
|
||||
if (getvlan(s, &ifr, &vreq) != -1)
|
||||
vlan_set(s, &ifr);
|
||||
else
|
||||
clone_setcallback(vlan_create);
|
||||
static
|
||||
DECL_CMD_FUNC(setvlantag_clone, val, d)
|
||||
{
|
||||
getvlantag(val);
|
||||
clone_setcallback(vlan_create);
|
||||
}
|
||||
|
||||
static
|
||||
DECL_CMD_FUNC(setvlantag, val, d)
|
||||
{
|
||||
struct vlanreq vreq;
|
||||
|
||||
getvlantag(val);
|
||||
if (getvlan(s, &ifr, &vreq) == -1)
|
||||
errx(1, "no existing vlan");
|
||||
vlan_set(s, &ifr);
|
||||
}
|
||||
|
||||
static
|
||||
DECL_CMD_FUNC(setvlandev_clone, val, d)
|
||||
{
|
||||
strlcpy(params.vlr_parent, val, sizeof(params.vlr_parent));
|
||||
clone_setcallback(vlan_create);
|
||||
}
|
||||
|
||||
static
|
||||
@ -146,11 +165,9 @@ DECL_CMD_FUNC(setvlandev, val, d)
|
||||
struct vlanreq vreq;
|
||||
|
||||
strlcpy(params.vlr_parent, val, sizeof(params.vlr_parent));
|
||||
|
||||
if (getvlan(s, &ifr, &vreq) != -1)
|
||||
vlan_set(s, &ifr);
|
||||
else
|
||||
clone_setcallback(vlan_create);
|
||||
errx(1, "no existing vlan");
|
||||
vlan_set(s, &ifr);
|
||||
}
|
||||
|
||||
static
|
||||
@ -172,8 +189,8 @@ DECL_CMD_FUNC(unsetvlandev, val, d)
|
||||
}
|
||||
|
||||
static struct cmd vlan_cmds[] = {
|
||||
DEF_CLONE_CMD_ARG("vlan", setvlantag),
|
||||
DEF_CLONE_CMD_ARG("vlandev", setvlandev),
|
||||
DEF_CLONE_CMD_ARG("vlan", setvlantag_clone),
|
||||
DEF_CLONE_CMD_ARG("vlandev", setvlandev_clone),
|
||||
/* NB: non-clone cmds */
|
||||
DEF_CMD_ARG("vlan", setvlantag),
|
||||
DEF_CMD_ARG("vlandev", setvlandev),
|
||||
|
Loading…
x
Reference in New Issue
Block a user