On Wed, Nov 25, 2020 at 09:34:29PM +0100, Andrew Lunn wrote: > > +static struct sk_buff *xrs700x_rcv(struct sk_buff *skb, struct net_device *dev, > > + struct packet_type *pt) > > +{ > > + int source_port; > > + u8 *trailer; > > + > > + if (skb_linearize(skb)) > > + return NULL; > > Something for Vladimir: > > Could this linearise be moved into the core, depending on the > tail_tag? Honestly I believe that the skb_linearize is not needed at all. It is copy-pasted from tag_trailer.c, a driver that has not exercised at runtime by anybody for a long time now. The pskb_trim_rcsum function used for removing the tail tag should do the right thing even with fragmented packets. > > + if (pskb_trim_rcsum(skb, skb->len - 1)) > > + return NULL; > > And the overhead is also in dsa_devlink_ops, so maybe this can be > moved as well? Sorry, I don't understand this comment.