Merge tag 'mac80211-next-for-davem-2016-09-16' of git://git.kernel.org/pub/scm/linux...
authorDavid S. Miller <davem@davemloft.net>
Mon, 19 Sep 2016 02:29:08 +0000 (22:29 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 19 Sep 2016 02:29:08 +0000 (22:29 -0400)
Johannes Berg says:

====================
This time we have various things - all across the board:
 * MU-MIMO sniffer support in mac80211
 * a create_singlethread_workqueue() cleanup
 * interface dump filtering that was documented but not implemented
 * support for the new radiotap timestamp field
 * send delBA in two unexpected conditions (as required by the spec)
 * connect keys cleanups - allow only WEP with index 0-3
 * per-station aggregation limit to work around broken APs
 * debugfs improvement for the integrated codel algorithm
and various other small improvements and cleanups.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
1  2 
include/net/cfg80211.h

diff --combined include/net/cfg80211.h
@@@ -1102,7 -1102,6 +1102,7 @@@ struct station_info 
        struct cfg80211_tid_stats pertid[IEEE80211_NUM_TIDS + 1];
  };
  
 +#if IS_ENABLED(CONFIG_CFG80211)
  /**
   * cfg80211_get_station - retrieve information about a given station
   * @dev: the device where the station is supposed to be connected to
   */
  int cfg80211_get_station(struct net_device *dev, const u8 *mac_addr,
                         struct station_info *sinfo);
 +#else
 +static inline int cfg80211_get_station(struct net_device *dev,
 +                                     const u8 *mac_addr,
 +                                     struct station_info *sinfo)
 +{
 +      return -ENOENT;
 +}
 +#endif
  
  /**
   * enum monitor_flags - monitor flags
@@@ -2432,7 -2423,8 +2432,8 @@@ struct cfg80211_qos_map 
   *    cases, the result of roaming is indicated with a call to
   *    cfg80211_roamed() or cfg80211_roamed_bss().
   *    (invoked with the wireless_dev mutex held)
-  * @disconnect: Disconnect from the BSS/ESS.
+  * @disconnect: Disconnect from the BSS/ESS. Once done, call
+  *    cfg80211_disconnected().
   *    (invoked with the wireless_dev mutex held)
   *
   * @join_ibss: Join the specified IBSS (or create if necessary). Once done, call
@@@ -3954,6 -3946,34 +3955,34 @@@ void ieee80211_amsdu_to_8023s(struct sk
  unsigned int cfg80211_classify8021d(struct sk_buff *skb,
                                    struct cfg80211_qos_map *qos_map);
  
+ /**
+  * cfg80211_find_ie_match - match information element and byte array in data
+  *
+  * @eid: element ID
+  * @ies: data consisting of IEs
+  * @len: length of data
+  * @match: byte array to match
+  * @match_len: number of bytes in the match array
+  * @match_offset: offset in the IE where the byte array should match.
+  *    If match_len is zero, this must also be set to zero.
+  *    Otherwise this must be set to 2 or more, because the first
+  *    byte is the element id, which is already compared to eid, and
+  *    the second byte is the IE length.
+  *
+  * Return: %NULL if the element ID could not be found or if
+  * the element is invalid (claims to be longer than the given
+  * data) or if the byte array doesn't match, or a pointer to the first
+  * byte of the requested element, that is the byte containing the
+  * element ID.
+  *
+  * Note: There are no checks on the element length other than
+  * having to fit into the given data and being large enough for the
+  * byte array to match.
+  */
+ const u8 *cfg80211_find_ie_match(u8 eid, const u8 *ies, int len,
+                                const u8 *match, int match_len,
+                                int match_offset);
  /**
   * cfg80211_find_ie - find information element in data
   *
   * Note: There are no checks on the element length other than
   * having to fit into the given data.
   */
- const u8 *cfg80211_find_ie(u8 eid, const u8 *ies, int len);
+ static inline const u8 *cfg80211_find_ie(u8 eid, const u8 *ies, int len)
+ {
+       return cfg80211_find_ie_match(eid, ies, len, NULL, 0, 0);
+ }
  
  /**
   * cfg80211_find_vendor_ie - find vendor specific information element in data