[PATCH net v2 1/1] net: stmmac: Prevent DSA tags from breaking COE on stmmac

Linus Walleij linus.walleij at linaro.org
Wed Jan 3 14:25:29 PST 2024


On Wed, Jan 3, 2024 at 9:10 PM Vladimir Oltean <olteanv at gmail.com> wrote:
> On Tue, Jan 02, 2024 at 05:27:15PM +0100, Romain Gantois wrote:
> > +/* Check if ethertype will trigger IP
> > + * header checks/COE in hardware
> > + */
> > +static inline bool stmmac_has_ip_ethertype(struct sk_buff *skb)
> > +{
> > +     __be16 proto = eth_header_parse_protocol(skb);
> > +
> > +     return (proto == htons(ETH_P_IP)) || (proto == htons(ETH_P_IPV6)) ||
> > +             (proto == htons(ETH_P_8021Q));
>
> proto == htons(ETH_P_8021Q) means that the skb has an IP EtherType?
> What if an IP header does not follow after the VLAN header?

It's probably best to do like I do here:
https://lore.kernel.org/netdev/20240102-new-gemini-ethernet-regression-v5-2-cf61ab3aa8cd@linaro.org/

+ if (ethertype == ETH_P_8021Q)
+   ethertype = ntohs(__vlan_get_protocol(skb, htons(ethertype), NULL));

Yours,
Linus Walleij



More information about the linux-arm-kernel mailing list