systemd-udevd: fix speed/duplex processing with valid .link files (#7808)
Including BitsPerSecond or Duplex values in .link files did not work when set_slinksettings was called because the routine was not copying the base parameters to the structure given to ioctl. As a result, EINVAL was always reported, and no change occurred on the Ethernet device.
This commit is contained in:
committed by
Zbigniew Jędrzejewski-Szmek
parent
c559eecaad
commit
94d4acbe4b
@@ -473,15 +473,15 @@ static int set_slinksettings(int *fd, struct ifreq *ifr, const struct ethtool_li
|
||||
struct {
|
||||
struct ethtool_link_settings req;
|
||||
__u32 link_mode_data[3 * ETHTOOL_LINK_MODE_MASK_MAX_KERNEL_NU32];
|
||||
} ecmd = {
|
||||
.req.cmd = ETHTOOL_SLINKSETTINGS,
|
||||
};
|
||||
} ecmd = {};
|
||||
unsigned int offset;
|
||||
int r;
|
||||
|
||||
if (u->base.cmd != ETHTOOL_GLINKSETTINGS || u->base.link_mode_masks_nwords <= 0)
|
||||
return -EINVAL;
|
||||
|
||||
memcpy(&ecmd.req, &u->base, sizeof(ecmd.req));
|
||||
ecmd.req.cmd = ETHTOOL_SLINKSETTINGS;
|
||||
offset = 0;
|
||||
memcpy(&ecmd.link_mode_data[offset], u->link_modes.supported, 4 * ecmd.req.link_mode_masks_nwords);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user