From 339ede8ffeffb91db38ecd599fc3f0ef07184d44 Mon Sep 17 00:00:00 2001 From: Jeff Johnson Date: Fri, 16 Nov 2018 20:27:52 -0800 Subject: [PATCH] qcacld-3.0: Use vtable for rx blocksize 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 update the signature of the following function and add that function to the vtable: - wlan_hdd_cfg80211_wifi_set_rx_blocksize() Note that with this change all of the attribute handling in __wlan_hdd_cfg80211_wifi_configuration_set() has been relocated to the vtables. The measured cyclematic complexity was reduced from 103 to 6. Change-Id: If5c3cfea7107f95c07867895a0bc7cc5d13fc7ac CRs-Fixed: 2371594 --- core/hdd/src/wlan_hdd_cfg80211.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index 855f0fc59bbd..6c36a3312d46 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -5526,18 +5526,16 @@ int wlan_hdd_cfg80211_wifi_set_reorder_timeout(struct hdd_adapter *adapter, } /** - * wlan_hdd_cfg80211_wifi_set_rx_blocksize - set rx blocksize - * - * @hdd_ctx: hdd context + * wlan_hdd_cfg80211_wifi_set_rx_blocksize() - set rx blocksize * @adapter: hdd adapter * @tb: array of pointer to struct nlattr * * Return: 0 on success; error number otherwise */ -static int wlan_hdd_cfg80211_wifi_set_rx_blocksize(struct hdd_context *hdd_ctx, - struct hdd_adapter *adapter, +static int wlan_hdd_cfg80211_wifi_set_rx_blocksize(struct hdd_adapter *adapter, struct nlattr *tb[]) { + struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter); int ret_val = 0; uint32_t set_value; QDF_STATUS qdf_status; @@ -6523,6 +6521,7 @@ static const interdependent_setter_fn interdependent_setters[] = { hdd_config_ant_div_period, hdd_config_ant_div_snr_weight, wlan_hdd_cfg80211_wifi_set_reorder_timeout, + wlan_hdd_cfg80211_wifi_set_rx_blocksize, }; /** @@ -6582,7 +6581,6 @@ __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy, struct nlattr *tb[QCA_WLAN_VENDOR_ATTR_CONFIG_MAX + 1]; int errno; int ret; - int ret_val = 0; hdd_enter_dev(dev); @@ -6609,16 +6607,6 @@ __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy, if (ret) errno = ret; - /* return errno here when all attributes have been refactored */ - - ret_val = - wlan_hdd_cfg80211_wifi_set_rx_blocksize(hdd_ctx, adapter, tb); - if (ret_val != 0) - return ret_val; - - if (ret_val) - errno = ret_val; - return errno; }