summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFernando Fernandez Mancera <ffmancera@riseup.net>2024-03-19 14:05:07 +0100
committerFernando Fernandez Mancera <ffmancera@riseup.net>2024-03-19 14:45:37 +0100
commit6a5e684749e21b8cce5bb19cb9d696590fe1f52d (patch)
tree28e3be9b80a9d00633b3da0b27897ad48f3c2cbc
parentb0d5386de3b97be1a030c12766e606c8aa162a12 (diff)
fixup! WIP: support ethtool Forward Error Correction(fec)ff/fec
Use PROPERTY_INFO_ETHTOOL instead of PROPERTY_INFO_WITH_DESC and adjust the _get_fcn_ethtool() and _set_fcn_ethtool().
-rw-r--r--src/libnm-base/nm-ethtool-base.c2
-rw-r--r--src/libnm-client-impl/libnm.ver2
-rw-r--r--src/libnm-core-impl/nm-setting-ethtool.c2
-rw-r--r--src/libnmc-setting/nm-meta-setting-desc.c43
-rw-r--r--src/nmcli/gen-metadata-nm-settings-nmcli.c8
-rw-r--r--src/nmcli/gen-metadata-nm-settings-nmcli.xml.in6
6 files changed, 11 insertions, 52 deletions
diff --git a/src/libnm-base/nm-ethtool-base.c b/src/libnm-base/nm-ethtool-base.c
index 67acb40793..7c32f1735f 100644
--- a/src/libnm-base/nm-ethtool-base.c
+++ b/src/libnm-base/nm-ethtool-base.c
@@ -99,6 +99,7 @@ const NMEthtoolData *const nm_ethtool_data[_NM_ETHTOOL_ID_NUM + 1] = {
ETHT_DATA(FEATURE_TX_UDP_SEGMENTATION),
ETHT_DATA(FEATURE_TX_UDP_TNL_CSUM_SEGMENTATION),
ETHT_DATA(FEATURE_TX_UDP_TNL_SEGMENTATION),
+ ETHT_DATA(FEC),
ETHT_DATA(FEATURE_TX_VLAN_STAG_HW_INSERT),
ETHT_DATA(PAUSE_AUTONEG),
ETHT_DATA(PAUSE_RX),
@@ -111,7 +112,6 @@ const NMEthtoolData *const nm_ethtool_data[_NM_ETHTOOL_ID_NUM + 1] = {
ETHT_DATA(CHANNELS_TX),
ETHT_DATA(CHANNELS_OTHER),
ETHT_DATA(CHANNELS_COMBINED),
- ETHT_DATA(FEC),
[_NM_ETHTOOL_ID_NUM] = NULL,
};
diff --git a/src/libnm-client-impl/libnm.ver b/src/libnm-client-impl/libnm.ver
index 13e1835bed..25d176e5ca 100644
--- a/src/libnm-client-impl/libnm.ver
+++ b/src/libnm-client-impl/libnm.ver
@@ -1981,7 +1981,7 @@ global:
libnm_1_48_0 {
global:
- nm_ethtool_fec_get_type;
+ nm_ethtool_optname_is_fec;
nm_setting_connection_down_on_poweroff_get_type;
nm_setting_connection_get_down_on_poweroff;
nm_setting_ip_config_get_dhcp_send_release;
diff --git a/src/libnm-core-impl/nm-setting-ethtool.c b/src/libnm-core-impl/nm-setting-ethtool.c
index 34fdd9ab5e..86912ffb36 100644
--- a/src/libnm-core-impl/nm-setting-ethtool.c
+++ b/src/libnm-core-impl/nm-setting-ethtool.c
@@ -129,7 +129,7 @@ nm_ethtool_optname_is_pause(const char *optname)
*
* Returns: %TRUE, if @optname is valid
*
- * Since: 1.32
+ * Since: 1.48
*/
gboolean
nm_ethtool_optname_is_fec(const char *optname)
diff --git a/src/libnmc-setting/nm-meta-setting-desc.c b/src/libnmc-setting/nm-meta-setting-desc.c
index bb5cdd70d9..dfc1befef8 100644
--- a/src/libnmc-setting/nm-meta-setting-desc.c
+++ b/src/libnmc-setting/nm-meta-setting-desc.c
@@ -4441,6 +4441,7 @@ _get_fcn_ethtool(ARGS_GET_FCN)
case NM_ETHTOOL_TYPE_CHANNELS:
case NM_ETHTOOL_TYPE_COALESCE:
case NM_ETHTOOL_TYPE_RING:
+ case NM_ETHTOOL_TYPE_FEC:
if (!nm_setting_option_get_uint32(setting, nm_ethtool_data[ethtool_id]->optname, &u32)) {
NM_SET_OUT(out_is_default, TRUE);
return NULL;
@@ -4459,8 +4460,6 @@ _get_fcn_ethtool(ARGS_GET_FCN)
if (get_type == NM_META_ACCESSOR_GET_TYPE_PRETTY)
s = gettext(s);
return s;
- // NM_ETHTOOL_TYPE_FEC is not using `_pt_ethtool`, hence unreachable here
- case NM_ETHTOOL_TYPE_FEC:
case NM_ETHTOOL_TYPE_UNKNOWN:
nm_assert_not_reached();
}
@@ -4482,6 +4481,7 @@ _set_fcn_ethtool(ARGS_SET_FCN)
case NM_ETHTOOL_TYPE_CHANNELS:
case NM_ETHTOOL_TYPE_COALESCE:
case NM_ETHTOOL_TYPE_RING:
+ case NM_ETHTOOL_TYPE_FEC:
i64 = _nm_utils_ascii_str_to_int64(value, 10, 0, G_MAXUINT32, -1);
if (i64 == -1) {
nm_utils_error_set(
@@ -4514,8 +4514,6 @@ _set_fcn_ethtool(ARGS_SET_FCN)
nm_setting_option_set_boolean(setting, nm_ethtool_data[ethtool_id]->optname, !!t);
return TRUE;
- // NM_ETHTOOL_TYPE_FEC is not using `_pt_ethtool`, hence unreachable here
- case NM_ETHTOOL_TYPE_FEC:
case NM_ETHTOOL_TYPE_UNKNOWN:
nm_assert_not_reached();
}
@@ -5992,42 +5990,7 @@ static const NMMetaPropertyInfo *const property_infos_ETHTOOL[] = {
PROPERTY_INFO_ETHTOOL (CHANNELS_TX),
PROPERTY_INFO_ETHTOOL (CHANNELS_OTHER),
PROPERTY_INFO_ETHTOOL (CHANNELS_COMBINED),
-// PROPERTY_INFO_WITH_DESC (NM_ETHTOOL_OPTNAME_FEC,
- PROPERTY_INFO(NM_ETHTOOL_OPTNAME_FEC, "TODO doc",
- .property_type = &_pt_gobject_enum,
- .property_typ_data = DEFINE_PROPERTY_TYP_DATA
- (
- PROPERTY_TYP_DATA_SUBTYPE
- (gobject_enum,
- .get_gtype = nm_ethtool_fec_get_type,
- .value_infos = ENUM_VALUE_INFOS
- (
- {
- .value = NM_ETHTOOL_FEC_AUTO,
- .nick = "auto",
- },
- {
- .value = NM_ETHTOOL_FEC_OFF,
- .nick = "off",
- },
- {
- .value = NM_ETHTOOL_FEC_RS,
- .nick = "rs",
- },
- {
- .value = NM_ETHTOOL_FEC_BASER,
- .nick = "baser",
- },
- {
- .value = NM_ETHTOOL_FEC_LLRS,
- .nick = "llrs",
- },
- ),
- ),
- .typ_flags = NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT
- | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT,
- ),
- ),
+ PROPERTY_INFO_ETHTOOL (FEC),
NULL,
};
diff --git a/src/nmcli/gen-metadata-nm-settings-nmcli.c b/src/nmcli/gen-metadata-nm-settings-nmcli.c
index c46798b286..b1e501412e 100644
--- a/src/nmcli/gen-metadata-nm-settings-nmcli.c
+++ b/src/nmcli/gen-metadata-nm-settings-nmcli.c
@@ -117,14 +117,12 @@ get_ethtool_format(const NMMetaPropertyInfo *prop_info)
case NM_ETHTOOL_TYPE_CHANNELS:
case NM_ETHTOOL_TYPE_COALESCE:
case NM_ETHTOOL_TYPE_RING:
+ case NM_ETHTOOL_TYPE_FEC:
return g_strdup("integer");
case NM_ETHTOOL_TYPE_FEATURE:
case NM_ETHTOOL_TYPE_PAUSE:
case NM_ETHTOOL_TYPE_EEE:
return g_strdup("ternary");
- // NM_ETHTOOL_TYPE_FEC is not using NM_META_PROPERTY_TYPE_FORMAT_ETHTOOL,
- // hence unreachable.
- case NM_ETHTOOL_TYPE_FEC:
case NM_ETHTOOL_TYPE_UNKNOWN:
nm_assert_not_reached();
};
@@ -324,6 +322,7 @@ append_ethtool_valid_values(const NMMetaPropertyInfo *prop_info, GPtrArray *vali
case NM_ETHTOOL_TYPE_CHANNELS:
case NM_ETHTOOL_TYPE_COALESCE:
case NM_ETHTOOL_TYPE_RING:
+ case NM_ETHTOOL_TYPE_FEC:
g_ptr_array_add(valid_values, g_strdup_printf("0 - %u", G_MAXUINT32));
break;
case NM_ETHTOOL_TYPE_FEATURE:
@@ -331,9 +330,6 @@ append_ethtool_valid_values(const NMMetaPropertyInfo *prop_info, GPtrArray *vali
case NM_ETHTOOL_TYPE_EEE:
append_vals(valid_values, "on", "off", "ignore");
break;
- case NM_ETHTOOL_TYPE_FEC:
- append_enum_valid_values(prop_info, valid_values);
- break;
case NM_ETHTOOL_TYPE_UNKNOWN:
nm_assert_not_reached();
}
diff --git a/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in b/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in
index 01a5b2c2c2..b274da3651 100644
--- a/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in
+++ b/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in
@@ -1079,9 +1079,9 @@
format="integer"
values="0 - 4294967295" />
<property name="fec"
- format="flags (NMEthtoolFec)"
- nmcli-description="The Forward Error Correction(FEC) encoding modes to set. Not all devices support all options. May be any combination of &quot;auto&quot; (0x2), &quot;off&quot; (0x4), &quot;rs&quot; (0x8), &quot;baser&quot; (0x10), &quot;llrs&quot; (0x20)"
- values="auto(0x2), off(0x4), rs(0x8), baser(0x10), llrs(0x20)"/>
+ format="integer"
+ nmcli-description="The Forward Error Correction(FEC) encoding modes to set. Not all devices support all options. May be any combination of &quot;auto&quot; (0x2), &quot;off&quot; (0x4), &quot;rs&quot; (0x8), &quot;baser&quot; (0x10), &quot;llrs&quot; (0x20)"
+ values="0 - 4294967295" />
</setting>
<setting name="generic" >
<property name="device-handler"