Skip to content

Commit c0d451c

Browse files
Mahesh Bandewardavem330
authored andcommitted
ipvlan: remove excessive packet scrubbing
IPvlan currently scrubs packets at every location where packets may be crossing namespace boundary. Though this is desirable, currently IPvlan does it more than necessary. e.g. packets that are going to take dev_forward_skb() path will get scrubbed so no point in scrubbing them before forwarding. Another side-effect of scrubbing is that pkt-type gets set to PACKET_HOST which overrides what was already been set by the earlier path making erroneous delivery of the packets. Also scrubbing packets just before calling dev_queue_xmit() has detrimental effects since packets lose skb->sk and because of that miss prio updates, incorrect socket back-pressure and would even break TSQ. Fixes: b93dd49 ('ipvlan: Scrub skb before crossing the namespace boundary') Signed-off-by: Mahesh Bandewar <maheshb@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 918150c commit c0d451c

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/net/ipvlan/ipvlan_core.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,13 +315,13 @@ static int ipvlan_rcv_frame(struct ipvl_addr *addr, struct sk_buff **pskb,
315315

316316
*pskb = skb;
317317
}
318-
ipvlan_skb_crossing_ns(skb, dev);
319318

320319
if (local) {
321320
skb->pkt_type = PACKET_HOST;
322321
if (dev_forward_skb(ipvlan->dev, skb) == NET_RX_SUCCESS)
323322
success = true;
324323
} else {
324+
skb->dev = dev;
325325
ret = RX_HANDLER_ANOTHER;
326326
success = true;
327327
}
@@ -586,7 +586,7 @@ static int ipvlan_xmit_mode_l2(struct sk_buff *skb, struct net_device *dev)
586586
return NET_XMIT_SUCCESS;
587587
}
588588

589-
ipvlan_skb_crossing_ns(skb, ipvlan->phy_dev);
589+
skb->dev = ipvlan->phy_dev;
590590
return dev_queue_xmit(skb);
591591
}
592592

0 commit comments

Comments
 (0)