Search Linux Wireless

Re: [RFC] cfg80211: Add feature flag for 4-way handshake offload

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux