Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 15c2d75f authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

net: call dev_queue_xmit_nit() after skb_dst_drop()



Avoid some atomic ops on dst refcount, calling dev_queue_xmit_nit()
after skb_dst_drop() in dev_hard_start_xmit().

When queueing a packet into af_packet socket, we drop dst anyway.

Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 62ab0812
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -2022,9 +2022,6 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
	int rc = NETDEV_TX_OK;

	if (likely(!skb->next)) {
		if (!list_empty(&ptype_all))
			dev_queue_xmit_nit(skb, dev);

		/*
		 * If device doesnt need skb->dst, release it right now while
		 * its hot in this cpu cache
@@ -2032,6 +2029,9 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
		if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
			skb_dst_drop(skb);

		if (!list_empty(&ptype_all))
			dev_queue_xmit_nit(skb, dev);

		skb_orphan_try(skb);

		if (vlan_tx_tag_present(skb) &&