Changeset View
Changeset View
Standalone View
Standalone View
head/sys/net80211/ieee80211_ioctl.c
Show First 20 Lines • Show All 1,156 Lines • ▼ Show 20 Lines | #define MS(_v, _f) (((_v) & _f) >> _f##_S) | ||||
case IEEE80211_IOC_UAPSD: | case IEEE80211_IOC_UAPSD: | ||||
ireq->i_val = 0; | ireq->i_val = 0; | ||||
if (vap->iv_flags_ext & IEEE80211_FEXT_UAPSD) | if (vap->iv_flags_ext & IEEE80211_FEXT_UAPSD) | ||||
ireq->i_val = 1; | ireq->i_val = 1; | ||||
break; | break; | ||||
/* VHT */ | /* VHT */ | ||||
case IEEE80211_IOC_VHTCONF: | case IEEE80211_IOC_VHTCONF: | ||||
ireq->i_val = 0; | ireq->i_val = vap->iv_flags_vht & IEEE80211_FVHT_MASK; | ||||
if (vap->iv_flags_vht & IEEE80211_FVHT_VHT) | |||||
ireq->i_val |= 1; | |||||
if (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT40) | |||||
ireq->i_val |= 2; | |||||
if (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT80) | |||||
ireq->i_val |= 4; | |||||
if (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT80P80) | |||||
ireq->i_val |= 8; | |||||
if (vap->iv_flags_vht & IEEE80211_FVHT_USEVHT160) | |||||
ireq->i_val |= 16; | |||||
break; | break; | ||||
default: | default: | ||||
error = ieee80211_ioctl_getdefault(vap, ireq); | error = ieee80211_ioctl_getdefault(vap, ireq); | ||||
break; | break; | ||||
} | } | ||||
return error; | return error; | ||||
#undef MS | #undef MS | ||||
▲ Show 20 Lines • Show All 2,304 Lines • ▼ Show 20 Lines | case IEEE80211_IOC_UAPSD: | ||||
else if (ireq->i_val == 1) | else if (ireq->i_val == 1) | ||||
vap->iv_flags_ext |= IEEE80211_FEXT_UAPSD; | vap->iv_flags_ext |= IEEE80211_FEXT_UAPSD; | ||||
else | else | ||||
return EINVAL; | return EINVAL; | ||||
break; | break; | ||||
/* VHT */ | /* VHT */ | ||||
case IEEE80211_IOC_VHTCONF: | case IEEE80211_IOC_VHTCONF: | ||||
if (ireq->i_val & 1) | if (ireq->i_val & IEEE80211_FVHT_VHT) | ||||
ieee80211_syncflag_vht(vap, IEEE80211_FVHT_VHT); | ieee80211_syncflag_vht(vap, IEEE80211_FVHT_VHT); | ||||
else | else | ||||
ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_VHT); | ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_VHT); | ||||
if (ireq->i_val & 2) | if (ireq->i_val & IEEE80211_FVHT_USEVHT40) | ||||
ieee80211_syncflag_vht(vap, IEEE80211_FVHT_USEVHT40); | ieee80211_syncflag_vht(vap, IEEE80211_FVHT_USEVHT40); | ||||
else | else | ||||
ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT40); | ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT40); | ||||
if (ireq->i_val & 4) | if (ireq->i_val & IEEE80211_FVHT_USEVHT80) | ||||
ieee80211_syncflag_vht(vap, IEEE80211_FVHT_USEVHT80); | ieee80211_syncflag_vht(vap, IEEE80211_FVHT_USEVHT80); | ||||
else | else | ||||
ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT80); | ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT80); | ||||
if (ireq->i_val & 8) | if (ireq->i_val & IEEE80211_FVHT_USEVHT160) | ||||
ieee80211_syncflag_vht(vap, IEEE80211_FVHT_USEVHT80P80); | |||||
else | |||||
ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT80P80); | |||||
if (ireq->i_val & 16) | |||||
ieee80211_syncflag_vht(vap, IEEE80211_FVHT_USEVHT160); | ieee80211_syncflag_vht(vap, IEEE80211_FVHT_USEVHT160); | ||||
else | else | ||||
ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT160); | ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT160); | ||||
if (ireq->i_val & IEEE80211_FVHT_USEVHT80P80) | |||||
ieee80211_syncflag_vht(vap, IEEE80211_FVHT_USEVHT80P80); | |||||
else | |||||
ieee80211_syncflag_vht(vap, -IEEE80211_FVHT_USEVHT80P80); | |||||
error = ENETRESET; | error = ENETRESET; | ||||
break; | break; | ||||
default: | default: | ||||
error = ieee80211_ioctl_setdefault(vap, ireq); | error = ieee80211_ioctl_setdefault(vap, ireq); | ||||
break; | break; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 189 Lines • Show Last 20 Lines |