diff options
author | sam <sam@FreeBSD.org> | 2008-09-22 00:10:22 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2008-09-22 00:10:22 +0000 |
commit | 03a86e750748dce8c5d36001ad245b97ea457b9e (patch) | |
tree | d831075cf374acea005701ab960ad090eeb5e83a /sys/net80211/ieee80211_ioctl.c | |
parent | 7b36216c91f1e4ec39b40c68ee415df5c327919c (diff) | |
download | FreeBSD-src-03a86e750748dce8c5d36001ad245b97ea457b9e.zip FreeBSD-src-03a86e750748dce8c5d36001ad245b97ea457b9e.tar.gz |
RIFS support; needs driver callback for dynamic state change
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 8bfcdb8..cab8b33 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; |