diff options
author | Sam Leffler <sam@FreeBSD.org> | 2008-09-22 00:10:22 +0000 |
---|---|---|
committer | Sam Leffler <sam@FreeBSD.org> | 2008-09-22 00:10:22 +0000 |
commit | 44f7a6edcf27b2d47fa070ca4af41471833903d2 (patch) | |
tree | d831075cf374acea005701ab960ad090eeb5e83a /sys/net80211/ieee80211_ioctl.c | |
parent | 8c070d69c7c7db965c463c883f773bf663af2134 (diff) | |
download | src-44f7a6edcf27b2d47fa070ca4af41471833903d2.tar.gz src-44f7a6edcf27b2d47fa070ca4af41471833903d2.zip |
RIFS support; needs driver callback for dynamic state change
Notes
Notes:
svn path=/head/; revision=183256
Diffstat (limited to 'sys/net80211/ieee80211_ioctl.c')
-rw-r--r-- | sys/net80211/ieee80211_ioctl.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_ioctl.c b/sys/net80211/ieee80211_ioctl.c index 8bfcdb835f76..cab8b33e4277 100644 --- a/sys/net80211/ieee80211_ioctl.c +++ b/sys/net80211/ieee80211_ioctl.c @@ -1080,6 +1080,15 @@ ieee80211_ioctl_get80211(struct ieee80211vap *vap, u_long cmd, } else ireq->i_val = vap->iv_htcaps & IEEE80211_HTCAP_SMPS; break; + case IEEE80211_IOC_RIFS: + if (vap->iv_opmode == IEEE80211_M_STA && + vap->iv_state == IEEE80211_S_RUN) + ireq->i_val = + (vap->iv_bss->ni_flags & IEEE80211_NODE_RIFS) != 0; + else + ireq->i_val = + (vap->iv_flags_ext & IEEE80211_FEXT_RIFS) != 0; + break; default: error = EINVAL; break; @@ -3093,6 +3102,17 @@ ieee80211_ioctl_set80211(struct ieee80211vap *vap, u_long cmd, struct ieee80211r if (isvapht(vap)) error = ERESTART; break; + case IEEE80211_IOC_RIFS: + if (ireq->i_val != 0) { + if ((vap->iv_htcaps & IEEE80211_HTC_RIFS) == 0) + return EOPNOTSUPP; + vap->iv_flags_ext |= IEEE80211_FEXT_RIFS; + } else + vap->iv_flags_ext &= ~IEEE80211_FEXT_RIFS; + /* NB: if not operating in 11n this can wait */ + if (isvapht(vap)) + error = ERESTART; + break; default: error = EINVAL; break; |