From 9e61908e5769603957a438dd574aca3f3129d395 Mon Sep 17 00:00:00 2001 From: Pragaspathi Thilagaraj Date: Thu, 24 Jan 2019 15:15:45 +0530 Subject: [PATCH] qcacld-3.0: Driver changes to accumulate kernel changes related to FILS With kernel version 4.19, a new structure cfg80211_fils_resp_params is introduced for fils parameters in the existing structure cfg80211_connect_resp_params. The functions hdd_populate_fils_params and hdd_connect_done use cfg80211_fils_resp_params as argument for modifying the fils parameters. This causes compilation issues with 4.19 kernel. Add changes to accumulate cfg80211_fils_resp_params structure addition from 4.19 kernel. Change-Id: I71e1084a190b1b089c132c5f3916c22691ba674e CRs-Fixed: 2386259 --- core/hdd/src/wlan_hdd_main.c | 50 +++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 5a2604e1fd02..de66bdf745a2 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -6091,8 +6091,9 @@ static void hdd_connect_bss(struct net_device *dev, const u8 *bssid, #endif #if defined(WLAN_FEATURE_FILS_SK) -#if defined(CFG80211_CONNECT_DONE) || \ - (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) +#if (defined(CFG80211_CONNECT_DONE) || \ + (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0))) && \ + (LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0)) #if defined(CFG80211_FILS_SK_OFFLOAD_SUPPORT) || \ (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) /** @@ -6121,6 +6122,8 @@ static void hdd_populate_fils_params(struct cfg80211_connect_resp_params fils_params->pmk = pmk; fils_params->pmk_len = pmk_len; fils_params->pmkid = pmkid; + hdd_debug("FILS erp_next_seq_num:%d", + fils_params->fils_erp_next_seq_num); } #else static inline void hdd_populate_fils_params(struct cfg80211_connect_resp_params @@ -6132,6 +6135,41 @@ static inline void hdd_populate_fils_params(struct cfg80211_connect_resp_params { } #endif +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)) +/** + * hdd_populate_fils_params() - Populate FILS keys to connect response + * @fils_params: connect response to supplicant + * @fils_kek: FILS kek + * @fils_kek_len: FILS kek length + * @pmk: FILS PMK + * @pmk_len: FILS PMK length + * @pmkid: PMKID + * @fils_seq_num: FILS Seq number + * + * Return: None + */ +static void hdd_populate_fils_params(struct cfg80211_connect_resp_params + *fils_params, const uint8_t *fils_kek, + size_t fils_kek_len, const uint8_t *pmk, + size_t pmk_len, const uint8_t *pmkid, + uint16_t fils_seq_num) +{ + /* Increament seq number to be used for next FILS */ + fils_params->fils.erp_next_seq_num = fils_seq_num + 1; + fils_params->fils.update_erp_next_seq_num = true; + fils_params->fils.kek = fils_kek; + fils_params->fils.kek_len = fils_kek_len; + fils_params->fils.pmk = pmk; + fils_params->fils.pmk_len = pmk_len; + fils_params->fils.pmkid = pmkid; + hdd_debug("FILS erp_next_seq_num:%d", + fils_params->fils.erp_next_seq_num); +} +#endif /* CFG80211_CONNECT_DONE */ + +#if defined(CFG80211_CONNECT_DONE) || \ + (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) + void hdd_update_hlp_info(struct net_device *dev, struct csr_roam_info *roam_info) { @@ -6251,9 +6289,7 @@ static void hdd_connect_done(struct net_device *dev, const u8 *bssid, roam_info->fils_seq_num); hdd_save_gtk_params(adapter, roam_info, false); } - hdd_debug("FILS indicate connect status %d seq no %d", - fils_params.status, - fils_params.fils_erp_next_seq_num); + hdd_debug("FILS indicate connect status %d", fils_params.status); cfg80211_connect_done(dev, &fils_params, gfp); @@ -6267,7 +6303,7 @@ static void hdd_connect_done(struct net_device *dev, const u8 *bssid, qdf_mem_free(roam_fils_params); roam_info->fils_join_rsp = NULL; } -#else +#else /* CFG80211_CONNECT_DONE */ static inline void hdd_connect_done(struct net_device *dev, const u8 *bssid, struct cfg80211_bss *bss, struct csr_roam_info *roam_info, @@ -6277,7 +6313,7 @@ hdd_connect_done(struct net_device *dev, const u8 *bssid, tSirResultCodes timeout_reason) { } #endif -#endif +#endif /* WLAN_FEATURE_FILS_SK */ #if defined(WLAN_FEATURE_FILS_SK) && \ (defined(CFG80211_CONNECT_DONE) || \