summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libnm-core/nm-core-internal.h20
-rw-r--r--libnm-core/nm-setting-wired.c18
-rw-r--r--libnm-core/nm-setting-wired.h29
3 files changed, 67 insertions, 0 deletions
diff --git a/libnm-core/nm-core-internal.h b/libnm-core/nm-core-internal.h
index 3808a9e61b..2150c04fd5 100644
--- a/libnm-core/nm-core-internal.h
+++ b/libnm-core/nm-core-internal.h
@@ -337,6 +337,26 @@ gboolean _nm_dbus_error_has_name (GError *error,
/*****************************************************************************/
+typedef enum {
+ NM_ETHTOOL_OFFLOAD_ID_RX,
+ NM_ETHTOOL_OFFLOAD_ID_TX,
+ NM_ETHTOOL_OFFLOAD_ID_SG,
+ NM_ETHTOOL_OFFLOAD_ID_TSO,
+ NM_ETHTOOL_OFFLOAD_ID_GSO,
+ NM_ETHTOOL_OFFLOAD_ID_GRO,
+ NM_ETHTOOL_OFFLOAD_ID_LRO,
+ NM_ETHTOOL_OFFLOAD_ID_RXVLAN,
+ NM_ETHTOOL_OFFLOAD_ID_TXVLAN,
+ NM_ETHTOOL_OFFLOAD_ID_NTUPLE,
+ NM_ETHTOOL_OFFLOAD_ID_RXHASH,
+
+ _NM_ETHTOOL_OFFLOAD_ID_NUM,
+} NMEthtoolOffloadID;
+
+extern const char *const nm_ethtool_offload_names[_NM_ETHTOOL_OFFLOAD_ID_NUM];
+
+/*****************************************************************************/
+
gboolean _nm_vpn_plugin_info_check_file (const char *filename,
gboolean check_absolute,
gboolean do_validate_filename,
diff --git a/libnm-core/nm-setting-wired.c b/libnm-core/nm-setting-wired.c
index 104451e2d0..ae6c9d10ac 100644
--- a/libnm-core/nm-setting-wired.c
+++ b/libnm-core/nm-setting-wired.c
@@ -40,6 +40,24 @@
* necessary for connection to Ethernet networks.
**/
+/*****************************************************************************/
+
+const char *const nm_ethtool_offload_names[_NM_ETHTOOL_OFFLOAD_ID_NUM] = {
+ [NM_ETHTOOL_OFFLOAD_ID_RX] = NM_ETHTOOL_OFFLOAD_FEATURE_RX,
+ [NM_ETHTOOL_OFFLOAD_ID_TX] = NM_ETHTOOL_OFFLOAD_FEATURE_TX,
+ [NM_ETHTOOL_OFFLOAD_ID_SG] = NM_ETHTOOL_OFFLOAD_FEATURE_SG,
+ [NM_ETHTOOL_OFFLOAD_ID_TSO] = NM_ETHTOOL_OFFLOAD_FEATURE_TSO,
+ [NM_ETHTOOL_OFFLOAD_ID_GSO] = NM_ETHTOOL_OFFLOAD_FEATURE_GSO,
+ [NM_ETHTOOL_OFFLOAD_ID_GRO] = NM_ETHTOOL_OFFLOAD_FEATURE_GRO,
+ [NM_ETHTOOL_OFFLOAD_ID_LRO] = NM_ETHTOOL_OFFLOAD_FEATURE_LRO,
+ [NM_ETHTOOL_OFFLOAD_ID_RXVLAN] = NM_ETHTOOL_OFFLOAD_FEATURE_RXVLAN,
+ [NM_ETHTOOL_OFFLOAD_ID_TXVLAN] = NM_ETHTOOL_OFFLOAD_FEATURE_TXVLAN,
+ [NM_ETHTOOL_OFFLOAD_ID_NTUPLE] = NM_ETHTOOL_OFFLOAD_FEATURE_NTUPLE,
+ [NM_ETHTOOL_OFFLOAD_ID_RXHASH] = NM_ETHTOOL_OFFLOAD_FEATURE_RXHASH,
+};
+
+/*****************************************************************************/
+
G_DEFINE_TYPE_WITH_CODE (NMSettingWired, nm_setting_wired, NM_TYPE_SETTING,
_nm_register_setting (WIRED, NM_SETTING_PRIORITY_HW_BASE))
diff --git a/libnm-core/nm-setting-wired.h b/libnm-core/nm-setting-wired.h
index 015f09da3f..5dd95000a9 100644
--- a/libnm-core/nm-setting-wired.h
+++ b/libnm-core/nm-setting-wired.h
@@ -79,6 +79,22 @@ typedef enum { /*< flags >*/
NM_SETTING_WIRED_WAKE_ON_LAN_EXCLUSIVE_FLAGS = NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT | NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE, /*< skip >*/
} NMSettingWiredWakeOnLan;
+/*****************************************************************************/
+
+#define NM_ETHTOOL_OFFLOAD_FEATURE_RX "rx"
+#define NM_ETHTOOL_OFFLOAD_FEATURE_TX "tx"
+#define NM_ETHTOOL_OFFLOAD_FEATURE_SG "sg"
+#define NM_ETHTOOL_OFFLOAD_FEATURE_TSO "tso"
+#define NM_ETHTOOL_OFFLOAD_FEATURE_GSO "gso"
+#define NM_ETHTOOL_OFFLOAD_FEATURE_GRO "gro"
+#define NM_ETHTOOL_OFFLOAD_FEATURE_LRO "lro"
+#define NM_ETHTOOL_OFFLOAD_FEATURE_RXVLAN "rxvlan"
+#define NM_ETHTOOL_OFFLOAD_FEATURE_TXVLAN "txvlan"
+#define NM_ETHTOOL_OFFLOAD_FEATURE_NTUPLE "ntuple"
+#define NM_ETHTOOL_OFFLOAD_FEATURE_RXHASH "rxhash"
+
+/*****************************************************************************/
+
#define NM_SETTING_WIRED_PORT "port"
#define NM_SETTING_WIRED_SPEED "speed"
#define NM_SETTING_WIRED_DUPLEX "duplex"
@@ -88,6 +104,7 @@ typedef enum { /*< flags >*/
#define NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK "generate-mac-address-mask"
#define NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST "mac-address-blacklist"
#define NM_SETTING_WIRED_MTU "mtu"
+#define NM_SETTING_WIRED_OFFLOAD_FEATURE "offload-feature"
#define NM_SETTING_WIRED_S390_SUBCHANNELS "s390-subchannels"
#define NM_SETTING_WIRED_S390_NETTYPE "s390-nettype"
#define NM_SETTING_WIRED_S390_OPTIONS "s390-options"
@@ -135,6 +152,18 @@ gboolean nm_setting_wired_remove_mac_blacklist_item_by_value (NMSetting
const char *mac);
void nm_setting_wired_clear_mac_blacklist_items (NMSettingWired *setting);
+NM_AVAILABLE_IN_1_14
+NMTernary nm_setting_wired_get_offload_feature (NMSettingWired *setting,
+ const char *feature);
+NM_AVAILABLE_IN_1_14
+void nm_setting_wired_set_offload_feature (NMSettingWired *setting,
+ const char *feature,
+ NMTernary value);
+NM_AVAILABLE_IN_1_14
+const char *const*nm_setting_wired_get_offload_features (NMSettingWired *setting);
+NM_AVAILABLE_IN_1_14
+void nm_setting_wired_clear_offload_features (NMSettingWired *setting);
+
guint32 nm_setting_wired_get_mtu (NMSettingWired *setting);
const char * const *nm_setting_wired_get_s390_subchannels (NMSettingWired *setting);