aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJouni Malinen <jouni@qca.qualcomm.com>2013-02-14 14:10:13 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-02-15 03:41:43 -0500
commit9d62a98617298c1da288f50e84c5dd67732e79b7 (patch)
tree63273fe1ade1b83c876db02ee75b951e1825b9dc /include
parentc6f9d6c3bdeb337809d667ef2a41597229a1ce57 (diff)
cfg80211: Pass station (extended) capability info to kernel
The information of the peer's capabilities and extended capabilities are required for the driver to perform TDLS Peer UAPSD operations and off channel operations. This information of the peer is passed from user space using NL80211_CMD_SET_STATION command. This commit enhances the function nl80211_set_station to pass the capability information of the peer to the driver. Similarly, there may be need for capability information for other modes, so allow this to be provided with both add_station and change_station. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include')
-rw-r--r--include/net/cfg80211.h8
-rw-r--r--include/uapi/linux/nl80211.h10
2 files changed, 18 insertions, 0 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index a229046d86d4..fa2612952c19 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -626,12 +626,14 @@ enum plink_actions {
626/** 626/**
627 * enum station_parameters_apply_mask - station parameter values to apply 627 * enum station_parameters_apply_mask - station parameter values to apply
628 * @STATION_PARAM_APPLY_UAPSD: apply new uAPSD parameters (uapsd_queues, max_sp) 628 * @STATION_PARAM_APPLY_UAPSD: apply new uAPSD parameters (uapsd_queues, max_sp)
629 * @STATION_PARAM_APPLY_CAPABILITY: apply new capability
629 * 630 *
630 * Not all station parameters have in-band "no change" signalling, 631 * Not all station parameters have in-band "no change" signalling,
631 * for those that don't these flags will are used. 632 * for those that don't these flags will are used.
632 */ 633 */
633enum station_parameters_apply_mask { 634enum station_parameters_apply_mask {
634 STATION_PARAM_APPLY_UAPSD = BIT(0), 635 STATION_PARAM_APPLY_UAPSD = BIT(0),
636 STATION_PARAM_APPLY_CAPABILITY = BIT(1),
635}; 637};
636 638
637/** 639/**
@@ -662,6 +664,9 @@ enum station_parameters_apply_mask {
662 * see &enum station_parameters_apply_mask 664 * see &enum station_parameters_apply_mask
663 * @local_pm: local link-specific mesh power save mode (no change when set 665 * @local_pm: local link-specific mesh power save mode (no change when set
664 * to unknown) 666 * to unknown)
667 * @capability: station capability
668 * @ext_capab: extended capabilities of the station
669 * @ext_capab_len: number of extended capabilities
665 */ 670 */
666struct station_parameters { 671struct station_parameters {
667 u8 *supported_rates; 672 u8 *supported_rates;
@@ -678,6 +683,9 @@ struct station_parameters {
678 u8 uapsd_queues; 683 u8 uapsd_queues;
679 u8 max_sp; 684 u8 max_sp;
680 enum nl80211_mesh_power_mode local_pm; 685 enum nl80211_mesh_power_mode local_pm;
686 u16 capability;
687 u8 *ext_capab;
688 u8 ext_capab_len;
681}; 689};
682 690
683/** 691/**
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 1fd6e5611896..f7c35ca01efc 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -1361,6 +1361,13 @@ enum nl80211_commands {
1361 * @NL80211_ATTR_EXT_CAPA_MASK: Extended capabilities that the kernel driver 1361 * @NL80211_ATTR_EXT_CAPA_MASK: Extended capabilities that the kernel driver
1362 * has set in the %NL80211_ATTR_EXT_CAPA value, for multibit fields. 1362 * has set in the %NL80211_ATTR_EXT_CAPA value, for multibit fields.
1363 * 1363 *
1364 * @NL80211_ATTR_STA_CAPABILITY: Station capabilities (u16) are advertised to
1365 * the driver, e.g., to enable TDLS power save (PU-APSD).
1366 *
1367 * @NL80211_ATTR_STA_EXT_CAPABILITY: Station extended capabilities are
1368 * advertised to the driver, e.g., to enable TDLS off channel operations
1369 * and PU-APSD.
1370 *
1364 * @NL80211_ATTR_MAX: highest attribute number currently defined 1371 * @NL80211_ATTR_MAX: highest attribute number currently defined
1365 * @__NL80211_ATTR_AFTER_LAST: internal use 1372 * @__NL80211_ATTR_AFTER_LAST: internal use
1366 */ 1373 */
@@ -1644,6 +1651,9 @@ enum nl80211_attrs {
1644 NL80211_ATTR_EXT_CAPA, 1651 NL80211_ATTR_EXT_CAPA,
1645 NL80211_ATTR_EXT_CAPA_MASK, 1652 NL80211_ATTR_EXT_CAPA_MASK,
1646 1653
1654 NL80211_ATTR_STA_CAPABILITY,
1655 NL80211_ATTR_STA_EXT_CAPABILITY,
1656
1647 /* add attributes here, update the policy in nl80211.c */ 1657 /* add attributes here, update the policy in nl80211.c */
1648 1658
1649 __NL80211_ATTR_AFTER_LAST, 1659 __NL80211_ATTR_AFTER_LAST,