[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LFD.2.11.1410022231100.3225@ja.home.ssi.bg>
Date: Thu, 2 Oct 2014 22:34:34 +0300 (EEST)
From: Julian Anastasov <ja@....bg>
To: Eric Dumazet <eric.dumazet@...il.com>
cc: David Miller <davem@...emloft.net>, netdev <netdev@...r.kernel.org>
Subject: Re: [PATCH net-next] net: better IFF_XMIT_DST_RELEASE support
Hello,
On Thu, 2 Oct 2014, Eric Dumazet wrote:
> From: Eric Dumazet <edumazet@...gle.com>
>
> Testing xmit_more support with netperf and connected UDP sockets,
> I found strange dst refcount false sharing.
>
> Current handling of IFF_XMIT_DST_RELEASE is not optimal.
>
> dropping dst in validate_xmit_skb() is certainly too late in case
> packet was queued by cpu X but dequeued by cpu Y
>
> The logical point to take care of drop/force is in __dev_queue_xmit()
> before even taking qdisc lock.
Does it hurt skb_dst usage in net/sched/, for example,
dst->tclassid in net/sched/cls_route.c ?
> @@ -2895,6 +2887,14 @@ static int __dev_queue_xmit(struct sk_buff *skb, void *accel_priv)
>
> skb_update_prio(skb);
>
> + /* If device doesn't need skb->dst, release it right now while
> + * its hot in this cpu cache
> + */
> + if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
> + skb_dst_drop(skb);
> + else
> + skb_dst_force(skb);
> +
> txq = netdev_pick_tx(dev, skb, accel_priv);
> q = rcu_dereference_bh(txq->qdisc);
Regards
--
Julian Anastasov <ja@....bg>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists