Netdev List
 help / color / mirror / Atom feed
From: Justin Lai <justinlai0215@realtek.com>
To: David Laight <david.laight.linux@gmail.com>
Cc: Andrew Lunn <andrew@lunn.ch>, "kuba@kernel.org" <kuba@kernel.org>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"edumazet@google.com" <edumazet@google.com>,
	"pabeni@redhat.com" <pabeni@redhat.com>,
	"andrew+netdev@lunn.ch" <andrew+netdev@lunn.ch>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"horms@kernel.org" <horms@kernel.org>,
	Ping-Ke Shih <pkshih@realtek.com>,
	Larry Chiu <larry.chiu@realtek.com>
Subject: RE: [PATCH] rtase: Workaround for IP fragmented UDP packet hardware bug
Date: Thu, 4 Jun 2026 13:43:27 +0000	[thread overview]
Message-ID: <1489704deb9844b08848758af95a448e@realtek.com> (raw)
In-Reply-To: <20260604124606.7143581b@pumpkin>

David Laight <david.laight.linux@gmail.com> wrote:
> 
> On Thu, 4 Jun 2026 08:33:51 +0000
> Justin Lai <justinlai0215@realtek.com> wrote:
> 
> > Andrew Lunn <andrew@lunn.ch> wrote:
> > >
> > > On Mon, Jun 01, 2026 at 02:23:41PM +0800, Justin Lai wrote:
> > > > The hardware parser incorrectly interprets 319/320 in a short IP
> > > > fragmented UDP packet payload as standard PTP destination ports
> > > > and treats the fragment as a PTP packet for further parsing.
> 
> Is that a packet that has been segmented by IP, or one where the skb is
> fragmented enough that the data in the header is too short?
> I thought that IPv4 required an mtu of 128 bytes (ish) and IPv6 somewhat
> larger - so I don't see how that is a problem.
> 
> If the skb is fragmented then you need to move data into the header not pad
> the frame.
> 
> If the hardware really is broken then I suspect you need to disable the feature
> and suffer the consequences.
> 
> > > >
> > > > If the transport data is smaller than RTASE_MIN_PAD_LEN, the
> > > > remaining data is insufficient for further parsing and causes hardware TX
> hang.
> > >
> > > Where does RTASE_SHORT_PKT_THRESH come into this?
> > >
> > > RTASE_MIN_PAD_LEN is 47, so matches all packets which need padding
> > > up to
> > > 60 bytes, plus FCS. There are not many such packets, so why both
> > > this all the complexity and just pad all small packets? Do you have
> > > any performance numbers which show the complexity is worth it?
> > >
> > > > Pad these packets so the transport data reaches RTASE_MIN_PAD_LEN
> > > > before transmitting to avoid triggering the hardware issue.
> > > >
> > > > Signed-off-by: Justin Lai <justinlai0215@realtek.com>
> > >
> > > Is this a Fix? Please add a Fixes: tag. And base it on net.
> > >
> > > https://www.kernel.org/doc/html/latest/process/maintainer-netdev.htm
> > > l
> > >
> > >     Andrew
> > >
> > > ---
> > > pw-bot: cr
> >
> > Hi Andrew,
> >
> > RTASE_MIN_PAD_LEN is not the Ethernet minimum-frame padding
> threshold.
> > It is the minimum transport-data length required by the hardware
> > parser after the packet is incorrectly detected as a PTP packet.
> >
> > Therefore, this workaround needs to pad the packets which can trigger
> > the hardware issue, rather than just padding packets to the Ethernet
> > minimum frame size.
> 
> Is that a longer length?
> Excessive frame padding (beyond 60+FCS) can be treated as a protocol error.
> 
> -- David
> 
> >
> > I agree that RTASE_SHORT_PKT_THRESH is not necessary here. I will
> > remove it in the next revision.
> >
> > Yes, this is a fix. I will add a Fixes tag and repost it against the
> > net tree.
> >
> > Thanks,
> > Justin
> >

Hi David,
 
This is an IP fragmented packet, not a fragmented skb.
 
The issue occurs on a non-initial IP fragment whose payload
contains values matching the PTP event/general destination
ports (319/320). The hardware parser incorrectly identifies the
fragment as a PTP packet and attempts further parsing.
 
The workaround does not modify the IP or UDP length fields. The
original protocol headers still describe the actual packet size.
 
Therefore, the protocol-defined payload size remains unchanged.
 
We have tested this workaround and have not observed issues
caused by the additional padding.
 
Thanks,
Justin

  reply	other threads:[~2026-06-04 13:43 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-01  6:23 [PATCH] rtase: Workaround for IP fragmented UDP packet hardware bug Justin Lai
2026-06-01 13:20 ` Andrew Lunn
2026-06-04  8:33   ` Justin Lai
2026-06-04 11:46     ` David Laight
2026-06-04 13:43       ` Justin Lai [this message]
2026-06-04 14:53         ` David Laight
2026-06-01 13:22 ` Alexander Lobakin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1489704deb9844b08848758af95a448e@realtek.com \
    --to=justinlai0215@realtek.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=david.laight.linux@gmail.com \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=kuba@kernel.org \
    --cc=larry.chiu@realtek.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=pkshih@realtek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox