On 12/18/14 14:44, Eliad Peller wrote:
hi,
On Thu, Dec 18, 2014 at 2:51 PM, Arend van Spriel<arend@xxxxxxxxxxxx> wrote:
From: Gautam Kumar Shukla<gautams@xxxxxxxxxxxx>
The new feature flag allows the driver to indicate that it can
offload the 4-way handshake for WPA/RSN-PSK. With the
wiphy::features flag being used up this patch adds a new
field wiphy::ext_features. Considering extensibility this
new field is declared as a byte array.
Signed-off-by: Gautam (Gautam Kumar) Shukla<gautams@xxxxxxxxxxxx>
Signed-off-by: Arend van Spriel<arend@xxxxxxxxxxxx>
---
Hi Johannes,
Here the proposed way to deal with new feature flags. Let
me know if this is suitable.
Regards,
Arend
---
@@ -3122,6 +3124,7 @@ struct wiphy {
u16 max_acl_mac_addrs;
u32 flags, regulatory_flags, features;
+ u8 ext_features[1];
i think it would be nicer to use unsigned long (instead of u8) along
with BITS_TO_LONGS
Thanks, Eliad
I considered that, but decided against it. The main reason for me was
the fact that this is passed in nl80211 attribute and using u8 seemed
more straightforward to me. That said I think I will need to describe in
nl80211 how the bits are ordered in the byte-array.
/**
+ * enum nl80211_ext_feature_index - bit index of extended features.
+ *
+ * @NL80211_EXT_FEATURE_4WAY_HANDSHAKE: the device supports 4way handshake
+ */
+enum nl80211_ext_feature_index {
+ NL80211_EXT_FEATURE_4WAY_HANDSHAKE,
+};
just add the standard LAST/MAX defines here, and the bitmap size will
be allocated automatically.
I thought that was only for attribute enumerations. This is a bit index
within a attribute.
+void cfg80211_ext_feature_set(struct wiphy *wiphy,
+ enum nl80211_ext_feature_index ftidx)
+{
+ u8 *ft_byte;
+
+ ft_byte =&wiphy->ext_features[ftidx / 8];
+ *ft_byte |= BIT(ftidx % 8);
+}
+EXPORT_SYMBOL(cfg80211_ext_feature_set);
+
+bool cfg80211_ext_feature_isset(struct wiphy *wiphy,
+ enum nl80211_ext_feature_index ftidx)
+{
+ u8 ft_byte;
+
+ ft_byte = wiphy->ext_features[ftidx / 8];
+ return (ft_byte& BIT(ftidx % 8)) != 0;
+}
+EXPORT_SYMBOL(cfg80211_ext_feature_isset);
and these (or only the implementations) could be replaced by set_bit/test_bit.
See above.
Regards,
Arend
Eliad.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html