iwlwifi: mvm: support FTM initiator
[carl9170fw.git] / include / linux / ieee80211.h
index b7492a0d1eab626da281b157835011ce60abe8da..190c69ca35874a2a38eb2d591bde165a7c5fbebb 100644 (file)
@@ -2137,6 +2137,8 @@ ieee80211_he_oper_size(const u8 *he_oper_ie)
 #define IEEE80211_SPCT_MSR_RPRT_TYPE_BASIC     0
 #define IEEE80211_SPCT_MSR_RPRT_TYPE_CCA       1
 #define IEEE80211_SPCT_MSR_RPRT_TYPE_RPI       2
+#define IEEE80211_SPCT_MSR_RPRT_TYPE_LCI       8
+#define IEEE80211_SPCT_MSR_RPRT_TYPE_CIVIC     11
 
 /* 802.11g ERP information element */
 #define WLAN_ERP_NON_ERP_PRESENT (1<<0)
@@ -2676,6 +2678,11 @@ enum ieee80211_tdls_actioncode {
  */
 #define WLAN_EXT_CAPA1_EXT_CHANNEL_SWITCHING   BIT(2)
 
+/* Multiple BSSID capability is set in the 6th bit of 3rd byte of the
+ * @WLAN_EID_EXT_CAPABILITY information element
+ */
+#define WLAN_EXT_CAPA3_MULTI_BSSID_SUPPORT     BIT(6)
+
 /* TDLS capabilities in the the 4th byte of @WLAN_EID_EXT_CAPABILITY */
 #define WLAN_EXT_CAPA4_TDLS_BUFFER_STA         BIT(4)
 #define WLAN_EXT_CAPA4_TDLS_PEER_PSM           BIT(5)
@@ -3209,23 +3216,23 @@ struct element {
        u8 id;
        u8 datalen;
        u8 data[];
-};
+} __packed;
 
 /* element iteration helpers */
-#define for_each_element(element, _data, _datalen)                     \
-       for (element = (void *)(_data);                                 \
-            (u8 *)(_data) + (_datalen) - (u8 *)element >=              \
-               sizeof(*element) &&                                     \
-            (u8 *)(_data) + (_datalen) - (u8 *)element >=              \
-               sizeof(*element) + element->datalen;                    \
-            element = (void *)(element->data + element->datalen))
+#define for_each_element(_elem, _data, _datalen)                       \
+       for (_elem = (const struct element *)(_data);                   \
+            (const u8 *)(_data) + (_datalen) - (const u8 *)_elem >=    \
+               (int)sizeof(*_elem) &&                                  \
+            (const u8 *)(_data) + (_datalen) - (const u8 *)_elem >=    \
+               (int)sizeof(*_elem) + _elem->datalen;                   \
+            _elem = (const struct element *)(_elem->data + _elem->datalen))
 
 #define for_each_element_id(element, _id, data, datalen)               \
        for_each_element(element, data, datalen)                        \
                if (element->id == (_id))
 
-#define for_each_element_extid(element, extid, data, datalen)          \
-       for_each_element(element, data, datalen)                        \
+#define for_each_element_extid(element, extid, _data, _datalen)                \
+       for_each_element(element, _data, _datalen)                      \
                if (element->id == WLAN_EID_EXTENSION &&                \
                    element->datalen > 0 &&                             \
                    element->data[0] == (extid))
@@ -3255,7 +3262,7 @@ struct element {
 static inline bool for_each_element_completed(const struct element *element,
                                              const void *data, size_t datalen)
 {
-       return (u8 *)element == (u8 *)data + datalen;
+       return (const u8 *)element == (const u8 *)data + datalen;
 }
 
 #endif /* __LINUX_IEEE80211_H */