| From foo@baz Fri Jan 22 01:21:57 PM CET 2021 |
| From: David Wu <david.wu@rock-chips.com> |
| Date: Wed, 13 Jan 2021 11:41:09 +0800 |
| Subject: net: stmmac: Fixed mtu channged by cache aligned |
| |
| From: David Wu <david.wu@rock-chips.com> |
| |
| [ Upstream commit 5b55299eed78538cc4746e50ee97103a1643249c ] |
| |
| Since the original mtu is not used when the mtu is updated, |
| the mtu is aligned with cache, this will get an incorrect. |
| For example, if you want to configure the mtu to be 1500, |
| but mtu 1536 is configured in fact. |
| |
| Fixed: eaf4fac478077 ("net: stmmac: Do not accept invalid MTU values") |
| Signed-off-by: David Wu <david.wu@rock-chips.com> |
| Link: https://lore.kernel.org/r/20210113034109.27865-1-david.wu@rock-chips.com |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| @@ -3596,6 +3596,7 @@ static int stmmac_change_mtu(struct net_ |
| { |
| struct stmmac_priv *priv = netdev_priv(dev); |
| int txfifosz = priv->plat->tx_fifo_size; |
| + const int mtu = new_mtu; |
| |
| if (txfifosz == 0) |
| txfifosz = priv->dma_cap.tx_fifo_size; |
| @@ -3613,7 +3614,7 @@ static int stmmac_change_mtu(struct net_ |
| if ((txfifosz < new_mtu) || (new_mtu > BUF_SIZE_16KiB)) |
| return -EINVAL; |
| |
| - dev->mtu = new_mtu; |
| + dev->mtu = mtu; |
| |
| netdev_update_features(dev); |
| |