Changeset View
Changeset View
Standalone View
Standalone View
sys/net80211/ieee80211_ioctl.c
Show First 20 Lines • Show All 771 Lines • ▼ Show 20 Lines | ieee80211_ioctl_getdefault(struct ieee80211vap *vap, struct ieee80211req *ireq) | ||||
} | } | ||||
return EINVAL; | return EINVAL; | ||||
} | } | ||||
static int | static int | ||||
ieee80211_ioctl_get80211(struct ieee80211vap *vap, u_long cmd, | ieee80211_ioctl_get80211(struct ieee80211vap *vap, u_long cmd, | ||||
struct ieee80211req *ireq) | struct ieee80211req *ireq) | ||||
{ | { | ||||
#define MS(_v, _f) (((_v) & _f) >> _f##_S) | |||||
struct ieee80211com *ic = vap->iv_ic; | struct ieee80211com *ic = vap->iv_ic; | ||||
u_int kid, len; | u_int kid, len; | ||||
uint8_t tmpkey[IEEE80211_KEYBUF_SIZE]; | uint8_t tmpkey[IEEE80211_KEYBUF_SIZE]; | ||||
char tmpssid[IEEE80211_NWID_LEN]; | char tmpssid[IEEE80211_NWID_LEN]; | ||||
int error = 0; | int error = 0; | ||||
switch (ireq->i_type) { | switch (ireq->i_type) { | ||||
case IEEE80211_IOC_IC_NAME: | case IEEE80211_IOC_IC_NAME: | ||||
▲ Show 20 Lines • Show All 241 Lines • ▼ Show 20 Lines | case IEEE80211_IOC_AMPDU_LIMIT: | ||||
/* XXX TODO: make this a per-node thing; and leave this as global */ | /* XXX TODO: make this a per-node thing; and leave this as global */ | ||||
if (vap->iv_opmode == IEEE80211_M_HOSTAP) | if (vap->iv_opmode == IEEE80211_M_HOSTAP) | ||||
ireq->i_val = vap->iv_ampdu_rxmax; | ireq->i_val = vap->iv_ampdu_rxmax; | ||||
else if (vap->iv_state == IEEE80211_S_RUN || vap->iv_state == IEEE80211_S_SLEEP) | else if (vap->iv_state == IEEE80211_S_RUN || vap->iv_state == IEEE80211_S_SLEEP) | ||||
/* | /* | ||||
* XXX TODO: this isn't completely correct, as we've | * XXX TODO: this isn't completely correct, as we've | ||||
* negotiated the higher of the two. | * negotiated the higher of the two. | ||||
*/ | */ | ||||
ireq->i_val = MS(vap->iv_bss->ni_htparam, | ireq->i_val = _IEEE80211_MASKSHIFT(vap->iv_bss->ni_htparam, | ||||
IEEE80211_HTCAP_MAXRXAMPDU); | IEEE80211_HTCAP_MAXRXAMPDU); | ||||
else | else | ||||
ireq->i_val = vap->iv_ampdu_limit; | ireq->i_val = vap->iv_ampdu_limit; | ||||
break; | break; | ||||
case IEEE80211_IOC_AMPDU_DENSITY: | case IEEE80211_IOC_AMPDU_DENSITY: | ||||
/* XXX TODO: make this a per-node thing; and leave this as global */ | /* XXX TODO: make this a per-node thing; and leave this as global */ | ||||
if (vap->iv_opmode == IEEE80211_M_STA && | if (vap->iv_opmode == IEEE80211_M_STA && | ||||
(vap->iv_state == IEEE80211_S_RUN || vap->iv_state == IEEE80211_S_SLEEP)) | (vap->iv_state == IEEE80211_S_RUN || vap->iv_state == IEEE80211_S_SLEEP)) | ||||
/* | /* | ||||
* XXX TODO: this isn't completely correct, as we've | * XXX TODO: this isn't completely correct, as we've | ||||
* negotiated the higher of the two. | * negotiated the higher of the two. | ||||
*/ | */ | ||||
ireq->i_val = MS(vap->iv_bss->ni_htparam, | ireq->i_val = _IEEE80211_MASKSHIFT(vap->iv_bss->ni_htparam, | ||||
IEEE80211_HTCAP_MPDUDENSITY); | IEEE80211_HTCAP_MPDUDENSITY); | ||||
else | else | ||||
ireq->i_val = vap->iv_ampdu_density; | ireq->i_val = vap->iv_ampdu_density; | ||||
break; | break; | ||||
case IEEE80211_IOC_AMSDU: | case IEEE80211_IOC_AMSDU: | ||||
ireq->i_val = 0; | ireq->i_val = 0; | ||||
if (vap->iv_flags_ht & IEEE80211_FHT_AMSDU_TX) | if (vap->iv_flags_ht & IEEE80211_FHT_AMSDU_TX) | ||||
ireq->i_val |= 1; | ireq->i_val |= 1; | ||||
▲ Show 20 Lines • Show All 102 Lines • ▼ Show 20 Lines | ieee80211_ioctl_get80211(struct ieee80211vap *vap, u_long cmd, | ||||
case IEEE80211_IOC_VHTCONF: | case IEEE80211_IOC_VHTCONF: | ||||
ireq->i_val = vap->iv_flags_vht & IEEE80211_FVHT_MASK; | ireq->i_val = vap->iv_flags_vht & IEEE80211_FVHT_MASK; | ||||
break; | break; | ||||
default: | default: | ||||
error = ieee80211_ioctl_getdefault(vap, ireq); | error = ieee80211_ioctl_getdefault(vap, ireq); | ||||
break; | break; | ||||
} | } | ||||
return error; | return error; | ||||
#undef MS | |||||
} | } | ||||
static int | static int | ||||
ieee80211_ioctl_setkey(struct ieee80211vap *vap, struct ieee80211req *ireq) | ieee80211_ioctl_setkey(struct ieee80211vap *vap, struct ieee80211req *ireq) | ||||
{ | { | ||||
struct ieee80211req_key ik; | struct ieee80211req_key ik; | ||||
struct ieee80211_node *ni; | struct ieee80211_node *ni; | ||||
struct ieee80211_key *wk; | struct ieee80211_key *wk; | ||||
▲ Show 20 Lines • Show All 2,525 Lines • Show Last 20 Lines |