qcacld-3.0: Update wiphy parameters

Currently, For some targets driver does not support all
AKM suits but kernel supports all akm suits which causes
compatibility issue.

Fix is to update wiphy->iftype_akm_suites and
wiphy->num_iftype_alm_suites based on the akm suits supported
by driver.

Change-Id: I06cab4654e626bc34c6bb3f8ea5f9b9beb81c82b
CRs-Fixed: 2635797
This commit is contained in:
sheenam monga
2020-03-23 17:03:07 +05:30
committed by nshrivas
父節點 c6b971c69d
當前提交 78ecf305e0

查看文件

@@ -433,6 +433,54 @@ static void hdd_init_6ghz(struct hdd_context *hdd_ctx)
}
#endif
#if defined(CFG80211_IFTYPE_AKM_SUITES_SUPPORT)
/*akm suits supported by sta*/
static const u32 hdd_sta_akm_suites[] = {
WLAN_AKM_SUITE_8021X,
WLAN_AKM_SUITE_PSK,
WLAN_AKM_SUITE_FT_8021X,
WLAN_AKM_SUITE_FT_PSK,
WLAN_AKM_SUITE_8021X_SHA256,
WLAN_AKM_SUITE_PSK_SHA256,
WLAN_AKM_SUITE_TDLS,
WLAN_AKM_SUITE_SAE,
WLAN_AKM_SUITE_FT_OVER_SAE,
WLAN_AKM_SUITE_8021X_SUITE_B,
WLAN_AKM_SUITE_8021X_SUITE_B_192,
WLAN_AKM_SUITE_FILS_SHA256,
WLAN_AKM_SUITE_FILS_SHA384,
WLAN_AKM_SUITE_FT_FILS_SHA256,
WLAN_AKM_SUITE_FT_FILS_SHA384,
WLAN_AKM_SUITE_OWE,
};
/*akm suits supported by AP*/
static const u32 hdd_ap_akm_suites[] = {
WLAN_AKM_SUITE_PSK,
WLAN_AKM_SUITE_SAE,
WLAN_AKM_SUITE_OWE,
};
/* This structure contain information what akm suits are
* supported for each mode
*/
static const struct wiphy_iftype_akm_suites
wlan_hdd_akm_suites[] = {
{
.iftypes_mask = BIT(NL80211_IFTYPE_STATION) |
BIT(NL80211_IFTYPE_P2P_CLIENT),
.akm_suites = hdd_sta_akm_suites,
.n_akm_suites = (sizeof(hdd_sta_akm_suites) / sizeof(u32)),
},
{
.iftypes_mask = BIT(NL80211_IFTYPE_AP) |
BIT(NL80211_IFTYPE_P2P_GO),
.akm_suites = hdd_ap_akm_suites,
.n_akm_suites = (sizeof(hdd_ap_akm_suites) / sizeof(u32)),
},
};
#endif
/* This structure contain information what kind of frame are expected in
* TX/RX direction for each kind of interface
*/
@@ -14720,6 +14768,27 @@ static void wlan_hdd_set_nan_supported_bands(struct wiphy *wiphy)
}
#endif
/**
* wlan_hdd_update_akm_suit_info() - Populate akm suits supported by driver
* @wiphy: wiphy
*
* Return: void
*/
#if defined(CFG80211_IFTYPE_AKM_SUITES_SUPPORT)
static void
wlan_hdd_update_akm_suit_info(struct wiphy *wiphy)
{
wiphy->iftype_akm_suites = wlan_hdd_akm_suites;
wiphy->num_iftype_akm_suites = QDF_ARRAY_SIZE(wlan_hdd_akm_suites) /
sizeof(struct wiphy_iftype_akm_suites);
}
#else
static void
wlan_hdd_update_akm_suit_info(struct wiphy *wiphy)
{
}
#endif
/*
* FUNCTION: wlan_hdd_cfg80211_init
* This function is called by hdd_wlan_startup()
@@ -14737,7 +14806,7 @@ int wlan_hdd_cfg80211_init(struct device *dev,
set_wiphy_dev(wiphy, dev);
wiphy->mgmt_stypes = wlan_hdd_txrx_stypes;
wlan_hdd_update_akm_suit_info(wiphy);
wiphy->flags |= WIPHY_FLAG_HAVE_AP_SME
| WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD
| WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL