diff mbox

nl80211: handle NL80211_ATTR_EXT_FEATURES attribut

Message ID 1425973499-5963-1-git-send-email-janusz.dziedzic@tieto.com
State Accepted
Headers show

Commit Message

Janusz.Dziedzic@tieto.com March 10, 2015, 7:44 a.m. UTC
Handle NL80211_ATTR_EXT_FEATURES attribut and
NL80211_EXT_FEATURE_VHT_IBSS.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
---
 src/drivers/driver_nl80211_capa.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

Comments

Jouni Malinen March 15, 2015, 7:30 p.m. UTC | #1
On Tue, Mar 10, 2015 at 08:44:59AM +0100, Janusz Dziedzic wrote:
> Handle NL80211_ATTR_EXT_FEATURES attribut and
> NL80211_EXT_FEATURE_VHT_IBSS.

Thanks, applied.
diff mbox

Patch

diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c
index e0d1d23..a976026 100644
--- a/src/drivers/driver_nl80211_capa.c
+++ b/src/drivers/driver_nl80211_capa.c
@@ -334,6 +334,30 @@  static void wiphy_info_tdls(struct wpa_driver_capa *capa, struct nlattr *tdls,
 	}
 }
 
+static int ext_feature_isset(u8 *ext_features,
+			     int ext_features_len,
+			     enum nl80211_ext_feature_index ftidx)
+{
+	u8 ft_byte;
+
+	if (ftidx / 8 >= ext_features_len)
+		return 0;
+
+	ft_byte = ext_features[ftidx / 8];
+	return (ft_byte & BIT(ftidx % 8)) != 0;
+}
+
+static void wiphy_info_ext_feature_flags(struct wiphy_info_data *info,
+					 struct nlattr *tb)
+{
+	struct wpa_driver_capa *capa = info->capa;
+
+	if (tb == NULL)
+		return;
+
+	if (ext_feature_isset(nla_data(tb), nla_len(tb), NL80211_EXT_FEATURE_VHT_IBSS))
+		capa->flags |= WPA_DRIVER_FLAGS_VHT_IBSS;
+}
 
 static void wiphy_info_feature_flags(struct wiphy_info_data *info,
 				     struct nlattr *tb)
@@ -509,6 +533,7 @@  static int wiphy_info_handler(struct nl_msg *msg, void *arg)
 		info->device_ap_sme = 1;
 
 	wiphy_info_feature_flags(info, tb[NL80211_ATTR_FEATURE_FLAGS]);
+	wiphy_info_ext_feature_flags(info, tb[NL80211_ATTR_EXT_FEATURES]);
 	wiphy_info_probe_resp_offload(capa,
 				      tb[NL80211_ATTR_PROBE_RESP_OFFLOAD]);