|
@@ -109,6 +109,90 @@ typedef struct sSirQCNIE {
|
|
uint8_t sub_version;
|
|
uint8_t sub_version;
|
|
} tSirQCNIE, *tpSirQCNIE;
|
|
} tSirQCNIE, *tpSirQCNIE;
|
|
|
|
|
|
|
|
+#ifdef WLAN_FEATURE_FILS_SK
|
|
|
|
+#define SIR_MAX_IDENTIFIER_CNT 7
|
|
|
|
+#define SIR_CACHE_IDENTIFIER_LEN 2
|
|
|
|
+#define SIR_HESSID_LEN 6
|
|
|
|
+#define SIR_MAX_KEY_CNT 7
|
|
|
|
+#define SIR_MAX_KEY_LEN 48
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * struct public_key_identifier: structure for public key identifier
|
|
|
|
+ * present in fils indication element
|
|
|
|
+ * @is_present: if Key info is present
|
|
|
|
+ * @key_cnt: number of keys present
|
|
|
|
+ * @key_type: type of key used
|
|
|
|
+ * @length: length of key
|
|
|
|
+ * @key: key data
|
|
|
|
+ */
|
|
|
|
+struct public_key_identifier {
|
|
|
|
+ bool is_present;
|
|
|
|
+ uint8_t key_cnt;
|
|
|
|
+ uint8_t key_type;
|
|
|
|
+ uint8_t length;
|
|
|
|
+ uint8_t key[SIR_MAX_KEY_CNT][SIR_MAX_KEY_LEN];
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * struct fils_cache_identifier: structure for fils cache identifier
|
|
|
|
+ * present in fils indication element
|
|
|
|
+ * @is_present: if cache identifier is present
|
|
|
|
+ * @identifier: cache identifier
|
|
|
|
+ */
|
|
|
|
+struct fils_cache_identifier {
|
|
|
|
+ bool is_present;
|
|
|
|
+ uint8_t identifier[SIR_CACHE_IDENTIFIER_LEN];
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * struct fils_hessid: structure for fils hessid
|
|
|
|
+ * present in fils indication element
|
|
|
|
+ * @is_present: if hessid info is present
|
|
|
|
+ * @hessid: hessid data
|
|
|
|
+ */
|
|
|
|
+struct fils_hessid {
|
|
|
|
+ bool is_present;
|
|
|
|
+ uint8_t hessid[SIR_HESSID_LEN];
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * struct fils_realm_identifier: structure for fils_realm_identifier
|
|
|
|
+ * present in fils indication element
|
|
|
|
+ * @is_present: if realm info is present
|
|
|
|
+ * @realm_cnt: realm count
|
|
|
|
+ * @realm: realm data
|
|
|
|
+ */
|
|
|
|
+struct fils_realm_identifier {
|
|
|
|
+ bool is_present;
|
|
|
|
+ uint8_t realm_cnt;
|
|
|
|
+ uint8_t realm[SIR_MAX_REALM_COUNT][SIR_REALM_LEN];
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * struct sir_fils_indication: structure for fils indication element
|
|
|
|
+ * @is_present: if indication element is present
|
|
|
|
+ * @is_ip_config_supported: if IP config is supported
|
|
|
|
+ * @is_fils_sk_auth_supported: if fils sk suppprted
|
|
|
|
+ * @is_fils_sk_auth_pfs_supported: if fils sk with pfs supported
|
|
|
|
+ * @is_pk_auth_supported: if fils public key supported
|
|
|
|
+ * @cache_identifier: fils cache idenfier info
|
|
|
|
+ * @hessid: fils hessid info
|
|
|
|
+ * @realm_identifier: fils realm info
|
|
|
|
+ * @key_identifier: fils key identifier info
|
|
|
|
+ */
|
|
|
|
+struct sir_fils_indication {
|
|
|
|
+ bool is_present;
|
|
|
|
+ uint8_t is_ip_config_supported;
|
|
|
|
+ uint8_t is_fils_sk_auth_supported;
|
|
|
|
+ uint8_t is_fils_sk_auth_pfs_supported;
|
|
|
|
+ uint8_t is_pk_auth_supported;
|
|
|
|
+ struct fils_cache_identifier cache_identifier;
|
|
|
|
+ struct fils_hessid hessid;
|
|
|
|
+ struct fils_realm_identifier realm_identifier;
|
|
|
|
+ struct public_key_identifier key_identifier;
|
|
|
|
+};
|
|
|
|
+#endif
|
|
|
|
+
|
|
/* Structure common to Beacons & Probe Responses */
|
|
/* Structure common to Beacons & Probe Responses */
|
|
typedef struct sSirProbeRespBeacon {
|
|
typedef struct sSirProbeRespBeacon {
|
|
tSirMacTimeStamp timeStamp;
|
|
tSirMacTimeStamp timeStamp;
|
|
@@ -203,6 +287,9 @@ typedef struct sSirProbeRespBeacon {
|
|
#ifdef WLAN_FEATURE_11AX_BSS_COLOR
|
|
#ifdef WLAN_FEATURE_11AX_BSS_COLOR
|
|
tDot11fIEbss_color_change vendor_he_bss_color_change;
|
|
tDot11fIEbss_color_change vendor_he_bss_color_change;
|
|
#endif
|
|
#endif
|
|
|
|
+#ifdef WLAN_FEATURE_FILS_SK
|
|
|
|
+ struct sir_fils_indication fils_ind;
|
|
|
|
+#endif
|
|
} tSirProbeRespBeacon, *tpSirProbeRespBeacon;
|
|
} tSirProbeRespBeacon, *tpSirProbeRespBeacon;
|
|
|
|
|
|
/* probe Request structure */
|
|
/* probe Request structure */
|
|
@@ -1024,6 +1111,17 @@ sir_validate_and_rectify_ies(tpAniSirGlobal mac_ctx,
|
|
void sir_copy_caps_info(tpAniSirGlobal mac_ctx, tDot11fFfCapabilities caps,
|
|
void sir_copy_caps_info(tpAniSirGlobal mac_ctx, tDot11fFfCapabilities caps,
|
|
tpSirProbeRespBeacon pProbeResp);
|
|
tpSirProbeRespBeacon pProbeResp);
|
|
|
|
|
|
|
|
+#ifdef WLAN_FEATURE_FILS_SK
|
|
|
|
+/**
|
|
|
|
+ * update_fils_data: update fils params from beacon/probe response
|
|
|
|
+ * @fils_ind: pointer to sir_fils_indication
|
|
|
|
+ * @fils_indication: pointer to tDot11fIEfils_indication
|
|
|
|
+ *
|
|
|
|
+ * Return: None
|
|
|
|
+ */
|
|
|
|
+void update_fils_data(struct sir_fils_indication *fils_ind,
|
|
|
|
+ tDot11fIEfils_indication * fils_indication);
|
|
|
|
+#endif
|
|
#ifdef WLAN_FEATURE_11AX
|
|
#ifdef WLAN_FEATURE_11AX
|
|
QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal , tpPESession ,
|
|
QDF_STATUS populate_dot11f_he_caps(tpAniSirGlobal , tpPESession ,
|
|
tDot11fIEvendor_he_cap *);
|
|
tDot11fIEvendor_he_cap *);
|