diff options
| author | Michael Biebl <biebl@debian.org> | 2023-02-10 11:50:34 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2023-02-10 11:50:34 +0100 |
| commit | 1372848511cb896b80b51ed1a3e9606bd9816631 (patch) | |
| tree | 674792b9385bdef935988894b45f06b2af39f88c /src/libnm-core-impl/nm-setting-ovs-dpdk.c | |
| parent | 40ec077ea305994c1fc2130add6787ca0c73e2c6 (diff) | |
New upstream version 1.42.0 upstream/1.42.0
Diffstat (limited to 'src/libnm-core-impl/nm-setting-ovs-dpdk.c')
| -rw-r--r-- | src/libnm-core-impl/nm-setting-ovs-dpdk.c | 116 |
1 files changed, 115 insertions, 1 deletions
diff --git a/src/libnm-core-impl/nm-setting-ovs-dpdk.c b/src/libnm-core-impl/nm-setting-ovs-dpdk.c index e26f918b..87e9a3e8 100644 --- a/src/libnm-core-impl/nm-setting-ovs-dpdk.c +++ b/src/libnm-core-impl/nm-setting-ovs-dpdk.c @@ -22,7 +22,7 @@ /*****************************************************************************/ -NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_DEVARGS, PROP_N_RXQ, ); +NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_DEVARGS, PROP_N_RXQ, PROP_N_RXQ_DESC, PROP_N_TXQ_DESC, ); /** * NMSettingOvsDpdk: @@ -34,6 +34,8 @@ struct _NMSettingOvsDpdk { char *devargs; guint32 n_rxq; + guint32 n_rxq_desc; + guint32 n_txq_desc; }; struct _NMSettingOvsDpdkClass { @@ -76,6 +78,72 @@ nm_setting_ovs_dpdk_get_n_rxq(NMSettingOvsDpdk *self) return self->n_rxq; } +/** + * nm_setting_ovs_dpdk_get_n_rxq_desc: + * @self: the #NMSettingOvsDpdk + * + * Returns: the #NMSettingOvsDpdk:n-rxq-desc property of the setting + * + * Since: 1.42 + **/ +guint32 +nm_setting_ovs_dpdk_get_n_rxq_desc(NMSettingOvsDpdk *self) +{ + g_return_val_if_fail(NM_IS_SETTING_OVS_DPDK(self), 0); + + return self->n_rxq_desc; +} + +/** + * nm_setting_ovs_dpdk_get_n_txq_desc: + * @self: the #NMSettingOvsDpdk + * + * Returns: the #NMSettingOvsDpdk:n-txq-desc property of the setting + * + * Since: 1.42 + **/ +guint32 +nm_setting_ovs_dpdk_get_n_txq_desc(NMSettingOvsDpdk *self) +{ + g_return_val_if_fail(NM_IS_SETTING_OVS_DPDK(self), 0); + + return self->n_txq_desc; +} + +/*****************************************************************************/ + +static gboolean +verify(NMSetting *setting, NMConnection *connection, GError **error) +{ + NMSettingOvsDpdk *self = NM_SETTING_OVS_DPDK(setting); + + if (self->n_rxq_desc != 0 && !nm_utils_is_power_of_two(self->n_rxq_desc)) { + g_set_error(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("must be a power of two")); + g_prefix_error(error, + "%s.%s: ", + NM_SETTING_OVS_DPDK_SETTING_NAME, + NM_SETTING_OVS_DPDK_N_RXQ_DESC); + return FALSE; + } + + if (self->n_txq_desc != 0 && !nm_utils_is_power_of_two(self->n_txq_desc)) { + g_set_error(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("must be a power of two")); + g_prefix_error(error, + "%s.%s: ", + NM_SETTING_OVS_DPDK_SETTING_NAME, + NM_SETTING_OVS_DPDK_N_TXQ_DESC); + return FALSE; + } + + return TRUE; +} + /*****************************************************************************/ static void @@ -107,6 +175,8 @@ nm_setting_ovs_dpdk_class_init(NMSettingOvsDpdkClass *klass) object_class->get_property = _nm_setting_property_get_property_direct; object_class->set_property = _nm_setting_property_set_property_direct; + setting_class->verify = verify; + /** * NMSettingOvsDpdk:devargs: * @@ -142,6 +212,50 @@ nm_setting_ovs_dpdk_class_init(NMSettingOvsDpdkClass *klass) NMSettingOvsDpdk, n_rxq); + /** + * NMSettingOvsDpdk:n-rxq-desc: + * + * The rx queue size (number of rx descriptors) for DPDK ports. + * Must be zero or a power of 2 between 1 and 4096, and supported + * by the hardware. Defaults to zero which means to leave the + * parameter in OVS unspecified and effectively configures 2048 + * descriptors. + * + * Since: 1.42 + **/ + _nm_setting_property_define_direct_uint32(properties_override, + obj_properties, + NM_SETTING_OVS_DPDK_N_RXQ_DESC, + PROP_N_RXQ_DESC, + 0, + 4096, + 0, + NM_SETTING_PARAM_INFERRABLE, + NMSettingOvsDpdk, + n_rxq_desc); + + /** + * NMSettingOvsDpdk:n-txq-desc: + * + * The tx queue size (number of tx descriptors) for DPDK ports. + * Must be zero or a power of 2 between 1 and 4096, and supported + * by the hardware. Defaults to zero which means to leave the + * parameter in OVS unspecified and effectively configures 2048 + * descriptors. + * + * Since: 1.42 + **/ + _nm_setting_property_define_direct_uint32(properties_override, + obj_properties, + NM_SETTING_OVS_DPDK_N_TXQ_DESC, + PROP_N_TXQ_DESC, + 0, + 4096, + 0, + NM_SETTING_PARAM_INFERRABLE, + NMSettingOvsDpdk, + n_txq_desc); + g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); _nm_setting_class_commit(setting_class, |