[Intel-wired-lan] [PATCH v1 iwl-net] iavf: fix netdev->max_mtu to respect actual
Simon Horman
horms at kernel.org
Thu Feb 12 18:15:49 UTC 2026
On Tue, Feb 10, 2026 at 05:05:55PM +0000, Kohei Enju wrote:
> On Tue, 10 Feb 2026 17:37:23 +0100, Alexander Lobakin wrote:
>
> > From: Kohei Enju <kohei at enjuk.jp>
> > Date: Tue, 10 Feb 2026 15:57:14 +0000
> >
> > > iavf sets LIBIE_MAX_MTU as netdev->max_mtu, ignoring vf_res->max_mtu
> > > from PF [1]. This allows setting an MTU beyond the actual hardware
> > > limit, causing TX queue timeouts [2].
> > >
> > > Set correct netdev->max_mtu using vf_res->max_mtu from the PF.
> > >
> > > Note that currently PF drivers such as ice/i40e set the frame size in
> > > vf_res->max_mtu, not MTU. Convert vf_res->max_mtu to MTU before setting
> > > netdev->max_mtu.
> > >
> > > [1]
> > > # ip -j -d link show $DEV | jq '.[0].max_mtu'
> > > 16356
> > >
> > > [2]
> > > iavf 0000:00:05.0 enp0s5: NETDEV WATCHDOG: CPU: 1: transmit queue 0 timed out 5692 ms
> > > iavf 0000:00:05.0 enp0s5: NIC Link is Up Speed is 10 Gbps Full Duplex
> > > iavf 0000:00:05.0 enp0s5: NETDEV WATCHDOG: CPU: 6: transmit queue 3 timed out 5312 ms
> > > iavf 0000:00:05.0 enp0s5: NIC Link is Up Speed is 10 Gbps Full Duplex
> > > ...
> > >
> > > Fixes: 5fa4caff59f2 ("iavf: switch to Page Pool")
> > > Signed-off-by: Kohei Enju <kohei at enjuk.jp>
> >
> > Reviewed-by: Alexander Lobakin <aleksander.lobakin at intel.com>
> >
> > Although I'm not sure the 'Fixes:' tag is correct. Was vs_res->max_mtu
> > accounted before switching to Page Pool? If so, then yes, my fault.
> > Otherwise, this issue is older than libie.
>
> You're right that vf_res->mtu was also not accounted before the commit.
>
> The commit changes:
> - netdev->max_mtu = IAVF_MAX_RXBUFFER - IAVF_PACKET_HDR_PAD;
> + netdev->max_mtu = LIBIE_MAX_MTU;
> ...
> -#define IAVF_MAX_RXBUFFER 9728 /* largest size for single descriptor */
>
> and thus netdev->max_mtu was already hardcoded, but just because
> IAVF_MAX_RXBUFFER was valid for VFs there hadn't been any issues, and
> invalid MTU could start to be set after the commit.
>
> > I'm asking as IIRC before I did set max_mtu to the libie definition,
> > there was a hardcoded value already.
>
> Yea, as far as I checked the value was hardcoded from the beginning
> (91c527a55664 ("ethernet/intel: use core min/max MTU checking")).
>
> Although I'm not attached to the exact commit as the Fixes: tag, I chose
> that since (coincidently) that commit made this regression.
That seems like a reasonable approach to me.
Reviewed-by: Simon Horman <horms at kernel.org>
More information about the Intel-wired-lan
mailing list