aboutsummaryrefslogtreecommitdiff
path: root/sys/net80211/ieee80211_ioctl.c
diff options
context:
space:
mode:
authorSam Leffler <sam@FreeBSD.org>2008-09-22 00:10:22 +0000
committerSam Leffler <sam@FreeBSD.org>2008-09-22 00:10:22 +0000
commit44f7a6edcf27b2d47fa070ca4af41471833903d2 (patch)
treed831075cf374acea005701ab960ad090eeb5e83a /sys/net80211/ieee80211_ioctl.c
parent8c070d69c7c7db965c463c883f773bf663af2134 (diff)
downloadsrc-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.c20
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;