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 <[email protected]>
> > 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 <[email protected]>
> > 
> > Reviewed-by: Alexander Lobakin <[email protected]>
> > 
> > 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 <[email protected]>

Reply via email to