From 3a25de856b421f7c87319409544b2d27e2987550 Mon Sep 17 00:00:00 2001 From: Jeff Johnson Date: Fri, 16 Nov 2018 07:26:46 -0800 Subject: [PATCH] qcacld-3.0: Refactor IGNORE_ASSOC_DISALLOWED configuration One of the HDD functions with the highest cyclomatic complexity is __wlan_hdd_cfg80211_wifi_configuration_set(). In order to reduce the complexity there is a plan to replace the inline attribute handling with a vtable-based approach. As part of that goal refactor the following independent attribute handling into a separate function and add that function to the vtable: - QCA_WLAN_VENDOR_ATTR_CONFIG_IGNORE_ASSOC_DISALLOWED Change-Id: I3f91195a7b26ea248d57f608936e79761890dc1b CRs-Fixed: 2371577 --- core/hdd/src/wlan_hdd_cfg80211.c | 42 +++++++++++++++++--------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index 81823b4a9fd3..049538bb0334 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -5913,6 +5913,26 @@ static int hdd_config_ant_div_ena(struct hdd_adapter *adapter, return errno; } +static int hdd_config_ignore_assoc_disallowed(struct hdd_adapter *adapter, + const struct nlattr *attr) +{ + struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter); + uint8_t ignore_assoc_disallowed; + + ignore_assoc_disallowed = nla_get_u8(attr); + hdd_debug("%u", ignore_assoc_disallowed); + if ((ignore_assoc_disallowed < QCA_IGNORE_ASSOC_DISALLOWED_DISABLE) || + (ignore_assoc_disallowed > QCA_IGNORE_ASSOC_DISALLOWED_ENABLE)) + return -EINVAL; + + sme_update_session_param(hdd_ctx->mac_handle, + adapter->session_id, + SIR_PARAM_IGNORE_ASSOC_DISALLOWED, + ignore_assoc_disallowed); + + return 0; +} + /** * typedef independent_setter_fn - independent attribute handler * @adapter: The adapter being configured @@ -5973,6 +5993,8 @@ static const struct independent_setters independent_setters[] = { hdd_config_channel_avoidance_ind}, {QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_ENA, hdd_config_ant_div_ena}, + {QCA_WLAN_VENDOR_ATTR_CONFIG_IGNORE_ASSOC_DISALLOWED, + hdd_config_ignore_assoc_disallowed}, }; /** @@ -6218,26 +6240,6 @@ __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy, } } - if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_IGNORE_ASSOC_DISALLOWED]) { - uint8_t ignore_assoc_disallowed; - - ignore_assoc_disallowed - = nla_get_u8(tb[ - QCA_WLAN_VENDOR_ATTR_CONFIG_IGNORE_ASSOC_DISALLOWED]); - hdd_debug("Set ignore_assoc_disallowed value - %d", - ignore_assoc_disallowed); - if ((ignore_assoc_disallowed < - QCA_IGNORE_ASSOC_DISALLOWED_DISABLE) || - (ignore_assoc_disallowed > - QCA_IGNORE_ASSOC_DISALLOWED_ENABLE)) - return -EPERM; - - sme_update_session_param(mac_handle, - adapter->session_id, - SIR_PARAM_IGNORE_ASSOC_DISALLOWED, - ignore_assoc_disallowed); - } - #define ANT_DIV_SET_PERIOD(probe_period, stay_period) \ ((1<<26)|((probe_period&0x1fff)<<13)|(stay_period&0x1fff))