mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-09 17:00:40 +01:00
ethtool: refactor coalesce settings using gendata APIs
https://bugzilla.redhat.com/show_bug.cgi?id=1614700
This commit is contained in:
parent
55d2df6658
commit
3e50221d7e
1 changed files with 11 additions and 40 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue