mac80211: consider WLAN_EID_EXT_HE_OPERATION for parsing CRC
authorJohannes Berg <johannes.berg@intel.com>
Fri, 31 Jan 2020 11:12:58 +0000 (13:12 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 20 Mar 2020 13:42:20 +0000 (14:42 +0100)
We use the parsing CRC for checking if the beacon changed, and
if the WLAN_EID_EXT_HE_OPERATION extended element changes we
need to track it so we can react to that. Include it in the CRC
calculation.

Link: https://lore.kernel.org/r/20200131111300.891737-22-luca@coelho.fi
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/util.c

index ea7d277..20436c8 100644 (file)
@@ -912,8 +912,12 @@ static void ieee80211_parse_extension_element(u32 *crc,
                break;
        case WLAN_EID_EXT_HE_OPERATION:
                if (len >= sizeof(*elems->he_operation) &&
-                   len == ieee80211_he_oper_size(data) - 1)
+                   len == ieee80211_he_oper_size(data) - 1) {
+                       if (crc)
+                               *crc = crc32_be(*crc, (void *)elem,
+                                               elem->datalen + 2);
                        elems->he_operation = data;
+               }
                break;
        case WLAN_EID_EXT_UORA:
                if (len == 1)