From 3e50221d7efa9e116bd0dfd8e7e52918d79c16bb Mon Sep 17 00:00:00 2001 From: Antonio Cardace Date: Fri, 15 May 2020 19:16:20 +0200 Subject: [PATCH] ethtool: refactor coalesce settings using gendata APIs https://bugzilla.redhat.com/show_bug.cgi?id=1614700 --- libnm-core/nm-setting-ethtool.c | 51 +++++++-------------------------- 1 file changed, 11 insertions(+), 40 deletions(-) diff --git a/libnm-core/nm-setting-ethtool.c b/libnm-core/nm-setting-ethtool.c index 92e82ab7ef..c33fdd847a 100644 --- a/libnm-core/nm-setting-ethtool.c +++ b/libnm-core/nm-setting-ethtool.c @@ -260,19 +260,12 @@ nm_setting_ethtool_get_coalesce (NMSettingEthtool *setting, const char *optname, guint32 *out_value) { - GVariant *v; - g_return_val_if_fail (NM_IS_SETTING_ETHTOOL (setting), FALSE); g_return_val_if_fail (nm_ethtool_optname_is_coalesce (optname), FALSE); - v = nm_setting_gendata_get (NM_SETTING (setting), optname); - if ( v - && g_variant_is_of_type (v, G_VARIANT_TYPE_UINT32)) { - NM_SET_OUT (out_value, g_variant_get_uint32 (v)); - return TRUE; - } - NM_SET_OUT (out_value, 0); - return FALSE; + return nm_setting_gendata_get_uint32 (NM_SETTING (setting), + optname, + out_value); } /** @@ -293,7 +286,6 @@ nm_setting_ethtool_set_coalesce (NMSettingEthtool *setting, const char *optname, guint32 value) { - GHashTable *ht; NMEthtoolID ethtool_id; g_return_if_fail (NM_IS_SETTING_ETHTOOL (setting)); @@ -302,17 +294,14 @@ nm_setting_ethtool_set_coalesce (NMSettingEthtool *setting, g_return_if_fail (nm_ethtool_id_is_coalesce (ethtool_id)); - ht = _nm_setting_gendata_hash (NM_SETTING (setting), - TRUE); - if (NM_IN_SET (ethtool_id, NM_ETHTOOL_ID_COALESCE_ADAPTIVE_RX, NM_ETHTOOL_ID_COALESCE_ADAPTIVE_TX)) value = !!value; - g_hash_table_insert (ht, - g_strdup (optname), - g_variant_ref_sink (g_variant_new_uint32 (value))); + nm_setting_gendata_set_uint32 (NM_SETTING (setting), + optname, + value); _notify_attributes (setting); } @@ -329,16 +318,10 @@ void nm_setting_ethtool_clear_coalesce (NMSettingEthtool *setting, const char *optname) { - GHashTable *hash; - g_return_if_fail (NM_IS_SETTING_ETHTOOL (setting)); g_return_if_fail (nm_str_not_empty (optname)); - hash = _nm_setting_gendata_hash (NM_SETTING (setting), FALSE); - if (!hash) - return; - - if (g_hash_table_remove (hash, optname)) + if (nm_setting_gendata_clear (NM_SETTING (setting), optname)) _notify_attributes (setting); } @@ -353,26 +336,14 @@ nm_setting_ethtool_clear_coalesce (NMSettingEthtool *setting, void nm_setting_ethtool_clear_coalesce_all (NMSettingEthtool *setting) { - GHashTable *hash; - GHashTableIter iter; - const char *name; - gboolean changed = FALSE; - g_return_if_fail (NM_IS_SETTING_ETHTOOL (setting)); - hash = _nm_setting_gendata_hash (NM_SETTING (setting), FALSE); - if (!hash) - return; + if (nm_setting_gendata_clear_all (NM_SETTING (setting), + &nm_ethtool_optname_is_coalesce)) + + - g_hash_table_iter_init (&iter, hash); - while (g_hash_table_iter_next (&iter, (gpointer *) &name, NULL)) { - if (nm_ethtool_optname_is_coalesce (name)) { - g_hash_table_iter_remove (&iter); - changed = TRUE; - } - } - if (changed) _notify_attributes (setting); }