mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-15 04:24:32 +00:00
platform: detect EINVAL as failure to set the MTU
Some drivers will reject an invalid MTU size with EINVAL.
Quote from [1]:
While investigating, I did notice that do_change_link in
nm-linux-platform.c really ought to count -EINVAL as an MTU out-of-range
error and not just -ERANGE. Even if the hardware supports a large MTU,
if the transmit FIFO is set too small, stmmac_change_mtu [2] will return
-EINVAL. For example, on my device, the maxmtu is 9000 but in practice I
can't set an MTU larger than 4096 unless I first run ethtool
--set-channels eno1 tx 3.
[1] https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1198#note_1738311
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c?h=v6.1#n5577
(cherry picked from commit 621b41ebfa
)
This commit is contained in:
parent
4463a6c903
commit
ae906e42da
|
@ -8217,7 +8217,8 @@ retry:
|
|||
} else if (NM_IN_SET(seq_result, -ESRCH, -ENOENT)) {
|
||||
log_detail = ", firmware not found";
|
||||
result = -NME_PL_NO_FIRMWARE;
|
||||
} else if (NM_IN_SET(seq_result, -ERANGE) && change_link_type == CHANGE_LINK_TYPE_SET_MTU) {
|
||||
} else if (NM_IN_SET(seq_result, -ERANGE, -EINVAL)
|
||||
&& change_link_type == CHANGE_LINK_TYPE_SET_MTU) {
|
||||
log_detail = ", setting MTU to requested size is not possible";
|
||||
result = -NME_PL_CANT_SET_MTU;
|
||||
} else if (NM_IN_SET(seq_result, -ENFILE) && change_link_type == CHANGE_LINK_TYPE_SET_ADDRESS
|
||||
|
|
Loading…
Reference in a new issue