svn commit: r298605 - head/sys/net80211
Adrian Chadd
adrian at FreeBSD.org
Tue Apr 26 01:29:27 UTC 2016
Author: adrian
Date: Tue Apr 26 01:29:26 2016
New Revision: 298605
URL: https://svnweb.freebsd.org/changeset/base/298605
Log:
[net80211] add the STBC ioctl support.
This adds configurable STBC TX and RX support.
Modified:
head/sys/net80211/ieee80211_ioctl.c
Modified: head/sys/net80211/ieee80211_ioctl.c
==============================================================================
--- head/sys/net80211/ieee80211_ioctl.c Tue Apr 26 01:29:03 2016 (r298604)
+++ head/sys/net80211/ieee80211_ioctl.c Tue Apr 26 01:29:26 2016 (r298605)
@@ -1128,6 +1128,13 @@ ieee80211_ioctl_get80211(struct ieee8021
ireq->i_val =
(vap->iv_flags_ht & IEEE80211_FHT_RIFS) != 0;
break;
+ case IEEE80211_IOC_STBC:
+ ireq->i_val = 0;
+ if (vap->iv_flags_ht & IEEE80211_FHT_STBC_TX)
+ ireq->i_val |= 1;
+ if (vap->iv_flags_ht & IEEE80211_FHT_STBC_RX)
+ ireq->i_val |= 2;
+ break;
default:
error = ieee80211_ioctl_getdefault(vap, ireq);
break;
@@ -3265,6 +3272,31 @@ ieee80211_ioctl_set80211(struct ieee8021
if (isvapht(vap))
error = ERESTART;
break;
+ case IEEE80211_IOC_STBC:
+ /* Check if we can do STBC TX/RX before changing the setting */
+ if ((ireq->i_val & 1) &&
+ ((vap->iv_htcaps & IEEE80211_HTCAP_TXSTBC) == 0))
+ return EOPNOTSUPP;
+ if ((ireq->i_val & 2) &&
+ ((vap->iv_htcaps & IEEE80211_HTCAP_RXSTBC) == 0))
+ return EOPNOTSUPP;
+
+ /* TX */
+ if (ireq->i_val & 1)
+ vap->iv_flags_ht |= IEEE80211_FHT_STBC_TX;
+ else
+ vap->iv_flags_ht &= ~IEEE80211_FHT_STBC_TX;
+
+ /* RX */
+ if (ireq->i_val & 2)
+ vap->iv_flags_ht |= IEEE80211_FHT_STBC_RX;
+ else
+ vap->iv_flags_ht &= ~IEEE80211_FHT_STBC_RX;
+
+ /* NB: reset only if we're operating on an 11n channel */
+ if (isvapht(vap))
+ error = ERESTART;
+ break;
default:
error = ieee80211_ioctl_setdefault(vap, ireq);
break;
More information about the svn-src-head
mailing list