Bug 1621188

Summary: [RFE] report duplex and autoneg setting for devices
Product: Red Hat Enterprise Linux 8 Reporter: Till Maas <till>
Component: NetworkManagerAssignee: NetworkManager Development Team <nm-team>
Status: CLOSED WORKSFORME QA Contact: Desktop QE <desktop-qa-list>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 8.2CC: atragler, bgalvani, edwardh, fge, fgiudici, lrintel, pasik, rkhan, sukulkar, thaller
Target Milestone: rcKeywords: FutureFeature
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-10-22 15:36:07 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1738136    

Description Till Maas 2018-08-23 14:08:48 UTC
Description of problem:
In nmstate we would like to report the duplex setting of a device but NM does not provide this, for example via a dev.get_duplex() method. Please add it.

Comment 3 Thomas Haller 2018-08-23 14:38:17 UTC
the problem with this is, that ethtool options are (AFAIK) not exposed via netlink. That means, NetworkManager gets no notification when the value changes. So, to expose the property on D-Bus, NetworkManager can only poll for the value (either periodically, or once during activation of the profile).

Also note, that while the feature might be interesting, there is already the ethtool kernel API which exposes this setting. So, exposing this on D-Bus is only slightly better then just querying ethtool.

Comment 4 Till Maas 2018-08-23 14:53:30 UTC
The advantage of providing this settings via Network Manager is that it leads to a uniform API to get network settings, namely via Network Manager, instead of having to figure out that some settings can be obtained via Network Manager but others cannot (for example speed is available via dev.get_speed(). Also it seems that Network Manger already contains the code to get the ethtool settings:

src/devices/nm-device-ethernet.c:
nm_platform_ethtool_get_link_settings (NMPlatform *self, int ifindex, gboolean *out_autoneg, guint32 *out_speed,  NMPlatformLinkDuplexType *out_duplex)

but there is only one method that uses the out_speed to store it as a device property instead of also storing autoneg and duplex.

src/devices/nm-device-ethernet.c:
link_speed_update (NMDevice *device)
[...]
if (!nm_platform_ethtool_get_link_settings (nm_device_get_platform (device), nm_device_get_ifindex (device), NULL, &speed, NULL))

Not sure, when link_speed_update() is called but if it could be changed to link_update() and then just store duplex and autoneg settings, too, it would be great.

About polling, isn't it enough to poll the settings once it creates a device object to return via dBus? There is no need to update the state internally when nobody asks AFAICS.

Comment 5 Till Maas 2018-11-28 12:09:47 UTC
Another scenario came up that makes this more important: There is interest to run nmstate in a container to manage networking on the host by mounting the dbus socket into the container. To support this fully, everything would need to be done via NetworkManager since running ethtool in the container would report the wrong data.

Comment 6 Marcelo Ricardo Leitner 2019-07-03 15:10:47 UTC
Mass-moving bugs RHEL <= 7.6.0 to 7.7.0.
As we are past RFE deadline for 7.7.0 and we should have no new features on 7.8.0, please evaluate if it's still wanted on RHEL7 and contact PM for exception. You may also move it to RHEL8 if that's wanted. Thanks!

Comment 8 Edward Haas 2019-08-14 03:29:48 UTC
Seems to me like this RFE should be targetted to RHEL 8.X.
Is there a clone of this with a different target?

Comment 9 Thomas Haller 2019-08-14 07:33:07 UTC
Reassigned.

Comment 11 Till Maas 2020-10-22 15:36:07 UTC
Since Nmstate is using Nispor for this, this can be closed.