On Tue, 2022-02-15 at 14:08 +0100, Lorenzo Bianconi wrote: > Allow increasing the MTU over page boundaries on veth devices > if the attached xdp program declares to support xdp fragments. > Enable NETIF_F_ALL_TSO when the device is running in xdp mode. > > Signed-off-by: Lorenzo Bianconi <lorenzo@xxxxxxxxxx> > --- > drivers/net/veth.c | 26 +++++++++++--------------- > 1 file changed, 11 insertions(+), 15 deletions(-) > > diff --git a/drivers/net/veth.c b/drivers/net/veth.c > index a45aaaecc21f..2e048f957bc6 100644 > --- a/drivers/net/veth.c > +++ b/drivers/net/veth.c > @@ -292,8 +292,6 @@ static int veth_forward_skb(struct net_device *dev, struct sk_buff *skb, > /* return true if the specified skb has chances of GRO aggregation > * Don't strive for accuracy, but try to avoid GRO overhead in the most > * common scenarios. > - * When XDP is enabled, all traffic is considered eligible, as the xmit > - * device has TSO off. > * When TSO is enabled on the xmit device, we are likely interested only > * in UDP aggregation, explicitly check for that if the skb is suspected > * - the sock_wfree destructor is used by UDP, ICMP and XDP sockets - > @@ -334,7 +332,8 @@ static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev) > * Don't bother with napi/GRO if the skb can't be aggregated > */ > use_napi = rcu_access_pointer(rq->napi) && > - veth_skb_is_eligible_for_gro(dev, rcv, skb); > + (rcu_access_pointer(rq->xdp_prog) || > + veth_skb_is_eligible_for_gro(dev, rcv, skb)); Sorry for the late feedback. I think the code would be more readable if you move the additional check inside 'veth_skb_is_eligible_for_gro' and adjust veth_skb_is_eligible_for_gro() comment accordingly. Thanks! Paolo